找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 227|回复: 0

批量分图

[复制链接]

主题

0

回帖

0

积分

管理员

积分
0
发表于 2024-3-8 09:55:06 | 显示全部楼层 |阅读模式
  1. ;;;   Revised on 20200328
  2. (defun c:PLFT (/ dwgpath tkname         attname ss         num         sslen
  3.                  ent1         p1         p2         attobj         attlen         attnum
  4.                  att         tagstr         ssf         osm PATH
  5.                 )
  6.   (vl-load-com)
  7. (command "undo" "be")
  8. ;;(command "audit" "y")
  9. (alert "批量分图0.3 请注意: 1. 不同图框里的图号不能重名  2. 当前图纸目录下不能有与待分图名称相同的CAD文件,如有请删除!!!")
  10.   (setq cl (getvar "clayer"))
  11.   (command "-layer" "s" "0" "")
  12. (setq osm (getvar "osmode"))
  13.   (setq lts (getvar "LTSCALE"))
  14.   (Setvar "cmdecho" 0)
  15.   (setvar "osmode" 0)
  16.   (Setvar "LTSCALE" 10)
  17.   (command "ucs" "w")
  18. (setvar "filedia" 0)
  19. (setq dwgpath (getvar "dwgprefix"))
  20. ;(alert "请选取图框:")
  21. ;(setq tkname (cdr (assoc 2 (entget (car (entsel))))))
  22. (setq tkname  "PLFT BLOCK")
  23. ;(alert "请选取图号属性物体:")
  24. ;(setq attname (cdr (assoc 2 (entget (car (nentsel))))))
  25. (setq attname "DRAWINGNO")
  26. ;(alert "请选取批量输出的范围:")
  27. (setq ss (ssget '((-4 . "<AND")(0 . "Insert")(2 . "PLFT BLOCK")(-4 . "AND>"))))
  28. (setq num 0)
  29. (setq sslen (sslength ss))
  30.   
  31. (while (< num sslen)
  32.         (setq ent1 (vlax-ename->vla-object (ssname ss num)))
  33.         (if (= (vlax-get ent1 'Name) tkname)
  34.                 (progn
  35.                         (vla-getboundingbox ent1 'p1 'p2)
  36.                         (setq p1 (vlax-safearray->list p1))
  37.                         (setq p2 (vlax-safearray->list p2))
  38.                         (setq attobj (vlax-safearray->list (vlax-variant-value (VLA-GETATTRIBUTES ent1))))
  39.                         (setq attlen (length attobj))
  40.                         (setq attnum 0)
  41.                         (while (< attnum attlen)
  42.                                 (setq att (nth attnum attobj))
  43.                                 (setq tagstr (vlax-get att 'TagString))
  44.                                 (if (= tagstr attname)
  45.                                         (progn
  46.                                         (setq dwgname (vlax-get att 'TextString))
  47.                                         (setq attnum attlen)
  48.                                         )
  49.                                 )
  50.                                 (setq attnum (1+ attnum))
  51.                         )
  52.                         (setq dwgname (strcat dwgpath dwgname))
  53.                        
  54.                         (command "zoom" "e")
  55.                         (command "limits" "0,0" (list (- (nth 0 p2) (nth 0 p1)) (- (nth 1 p2) (nth 1 p1))))
  56.                        
  57.                         (setq ssf (ssget "C" p1 p2))
  58.                         (command "move" ssf "" p1 "0,0,0")
  59.                         (command "zoom" (getvar "limmin") (getvar "limmax"))
  60.                         (command "采用wblock" dwgname "" "0,0" ssf "")
  61.                         (command "oops")
  62.                         (command "move" ssf "" "0,0" p1)
  63.                 )
  64.         )
  65.         (setq num (1+ num))
  66. )
  67. (setvar "filedia" 1)
  68. (command "undo" "end")
  69.   (command "-layer" "s" CL "")
  70.   (setvar "osmode" osm)
  71.   (Setvar "LTSCALE" lts)
  72.   (setq commands "ggkj" PATH "C:/cadtools/Automatic.scr")
  73. ;(alert "分图完成!!!")
  74. ; (load "automatic.fas")
  75.   (init-1)
  76. ( PROCESS-1)
  77. )
  78. ;更改空间
  79. (defun c:ggkj (/ ss1 ent1 tb tbs p1 p2 p2a p3 p2x p2y)
  80. ;更改空间的图块
  81. (setq ss1 (ssget "x" '((0 . "Insert")(-4 . "<or")(2 . "FAB采用TITLE")(2 . "FAB DWG REVISION")(2 . "FAB采用TAB")(2 . "Inhabit(7147)-A1(eng hk)")(2 . "DRAWING TITLE")(2 . "F004-Title采用Block")(2 . "A030-Title采用Block")(2 . "DRAWING NO采用1")(2 . "A$C57FB4FFD")(2 . "Rev-List")(2 . "fab-tb2")(-4 . "or>"))))
  82. (setq tb (ssget "x" '((-4 . "<AND")(0 . "Insert")(2 . "PLFT BLOCK")(-4 . "AND>"))))
  83. (setq tbs (cdr (assoc 41 (entget (ssname TB 0)))))
  84. (setq ent1 (vlax-ename->vla-object (ssname TB 0)))
  85. (vla-getboundingbox ent1 'p1 'p2)
  86. (setq p1 (vlax-safearray->list p1))
  87. (setq p2 (vlax-safearray->list p2))
  88. (setq p2x(/(car P2)TBS))
  89. (setq p2Y(/(cadr P2)TBS))
  90. (setq p2a(list p2x p2y 0))
  91. (setq p3(list (- 0 p2Y) 0 0))
  92. (setvar "TILEMODE" 0)
  93. (command "mview"  "0,0" p2a ".MSPACE" "zoom" "w" "0,0" p2 )
  94. (command ".chspace" ss1 "")
  95. (VL-CMDF "MVIEW" "L" "on" "all" "")AP
  96. (if (< p2x p2y)
  97.   (command "rotate" "all" "" p1 90 "move" "all" "" p3 p1)
  98. )
  99. )
  100. (defun SDIR-1 (/ dwgname dwgname1)
  101.   (setq num 0)
  102.   (setq sslen (sslength ss))
  103.   (while (< num sslen)
  104.     (setq ent1 (vlax-ename->vla-object (ssname ss num)))
  105.     (if        (= (vlax-get ent1 'Name) tkname)
  106.       (progn
  107.         (setq attobj (vlax-safearray->list
  108.                        (vlax-variant-value (VLA-GETATTRIBUTES ent1))
  109.                      )
  110.         )
  111.         (setq attlen (length attobj))
  112.         (setq attnum 0)
  113.         (while (< attnum attlen)
  114.           (setq att (nth attnum attobj))
  115.           (setq tagstr (vlax-get att 'TagString))
  116.           (if (= tagstr attname)
  117.             (progn
  118.               (setq dwgname (STRCAT (vlax-get att 'TextString) ".dwg"))
  119.               (setq attnum attlen)
  120.             )
  121.           )
  122.           (setq attnum (1+ attnum))
  123.         )
  124.       )
  125.     )
  126.     (setq num (1+ num))
  127.     (if        (= dwgname1 "")
  128.       (progn
  129.         (SETQ dwgname (list dwgname))
  130.         (setq dwgname1 dwgname)
  131.       )
  132.       (setq dwgname1 (cons dwgname dwgname1))
  133.     )
  134.   )
  135.   (SETQ X (cons dwgpath dwgname1))
  136. )
  137. (setq dwgpath nil
  138.       F        nil
  139.       FL nil
  140.       F1 nil
  141.       X        nil
  142.       scrfile nil)
  143.    ;init-1ialize
  144. (defun init-1  ()
  145.   (SDIR-1)
  146.   (setq dwgpath (car X))
  147.   (setq X (acad采用strlsort (cdr X)))
  148.   (setq        n2 (rtos (length X) 2 0)
  149.         n1 "1")
  150.   (if (= n2 1)
  151.     (setq dwgs "Drawing")
  152.     (setq dwgs "Drawings"))
  153.   )
  154. (defun PROCESS-1 (/ SCRFILE DMSG)
  155.   (setq SCRFILE (open PATH "W"))
  156.   ;(setq SCRFILE (open "Automatic1.scr" "W"))
  157.   (write-line
  158.     (strcat
  159.       "(dos采用getprogress
  160.       "Automatic             "
  161.       N2
  162.       " "
  163.       DWGS
  164.       " selected total "
  165.       "The Selected files is being progress, Please wait..." "
  166.       N2
  167.       ")"
  168.      )
  169.     SCRFILE
  170.   )
  171.   (write-line "(setvar "cmddia" 0)" SCRFILE)
  172.   (foreach DWGFILE X
  173.     ;(write-line "(load "Automatic.lsp")" SCRFILE)
  174.     ;(write-line (strcat "(AP采用OPENP " DWGPATH DWGFILE " \ ")") SCRFILE)
  175.     (if        (= CHKSDI 1)
  176.       (write-line (strcat "open y "" DWGPATH DWGFILE """) SCRFILE)
  177.       (write-line (strcat "open "" DWGPATH DWGFILE """) SCRFILE)
  178.     )
  179.     ;(write-line "DGNPURGE PU ZOOM E" SCRFILE)
  180.     (write-line commands SCRFILE)
  181.    
  182.     (write-line "(dos采用getprogress -1)" SCRFILE)
  183.     (if        (= N1 N2)
  184.       (progn (write-line "(dos采用getprogress t)" SCRFILE)
  185.              (write-line
  186.                (strcat "(dos采用msgbox ""
  187.                        N2
  188.                        " Drawing(s) has been PROCESS-1." "PROCESS-1" 1 3 5)"
  189.                )
  190.                SCRFILE
  191.              )
  192.       )
  193.     )
  194.     (setq N1 (rtos (+ 1 (atoi N1)) 2 0))
  195.     (write-line ".CLOSE n" SCRFILE)
  196.   )
  197.   (write-line "(setvar "cmddia" 1)" SCRFILE)
  198.   (close SCRFILE)
  199.   (command "script" PATH)
  200. )
  201. (princ)
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|膜结构网

GMT+8, 2024-12-28 18:11 , Processed in 0.138788 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表