天气与日历 切换到窄版

 找回密码
 立即注册
中国膜结构网
十大进口膜材评选 十大国产膜材评选 十大膜结构设计评选 十大膜结构公司评选
查看: 112|回复: 0

批量分图

[复制链接]
  • TA的每日心情
    开心
    3 天前
  • 签到天数: 37 天

    [LV.5]常住居民I

    32

    主题

    106

    回帖

    726

    积分

    高级会员

    积分
    726
    发表于 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)

    复制代码

     

     

     

     

    批量分图
    江西恒正膜结构有限公司
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|中国膜结构网_中国空间膜结构协会

    GMT+8, 2024-6-2 13:41 , Processed in 0.064851 second(s), 22 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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