明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2802|回复: 9

请问,有没办法同时选择布局空间和模型空间的东西

[复制链接]
发表于 2008-8-4 17:16 | 显示全部楼层 |阅读模式

请问,有没办法同时选择布局空间和模型空间的东西

比如,下面这个处理只能处理当前空间,有没办法跨空间同时执行?

(command "._explode" (SsGet "X" (list (cons 0 "INSERT")'(66 . 1))) "")

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2008-8-4 17:19 | 显示全部楼层
用vlisp應該可以
 楼主| 发表于 2008-8-4 21:27 | 显示全部楼层
能不能教教怎么弄啊。
发表于 2008-8-5 09:59 | 显示全部楼层
本帖最后由 作者 于 2008-8-7 7:52:14 编辑
  1. (defun C:TT (/ N SS)
  2.   (if (setq SS (ssget "X" '((0 . "INSERT") (66 . 1))))
  3.     (progn
  4.       (setq N 0)
  5.       (repeat (sslength SS)
  6. (vla-explode (vlax-ename->vla-object (ssname SS N)))
  7. (setq N (1+ N))
  8.       )
  9.     )
  10.   )
  11.   (command "_.ERASE" SS "")
  12.   (princ)
  13. )
 楼主| 发表于 2008-8-6 08:38 | 显示全部楼层

谢谢版主

如果操作不仅仅是vla-explode,而是一连串的LISP操作就不行了,是吗

(比如:还要像ET工具里的BURST那样保持属性块的文字属性、固定的图层、固定颜色等一大串的LISP代码)

发表于 2008-8-6 17:21 | 显示全部楼层

所有程序改用VLISP寫即可

 楼主| 发表于 2008-8-6 18:01 | 显示全部楼层

谢谢版主。我去找找VLISP方面的书看看先。

感谢

发表于 2008-8-6 20:46 | 显示全部楼层
本帖最后由 作者 于 2008-8-6 20:48:49 编辑

如果想简单一点的也可以,

跳到布局空间和模型空间,各执行一次程序就行了哈`~

当然这里说的的当然也是要用程序自己跳呢~可不是说用手工跳~!!

 楼主| 发表于 2008-8-6 21:10 | 显示全部楼层

跳的话就是要重成生布局或模型,文件大或布局多的话影响效率。

 楼主| 发表于 2008-8-9 02:44 | 显示全部楼层
本帖最后由 作者 于 2008-8-13 17:06:28 编辑

晕。搞不懂。付费请人帮忙AUTOLISP转VLISP。。。有人愿意吗(悄悄话联系)

代码如下:
  
  1. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;以下是函数定义;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  2. (Defun PBOBURST (/ item bitset bump att-text lastent burst-one burst
  3.                    BCNT BLAYER BCOLOR ELAST BLTYPE ETYPE PSFLAG ENAME )
  4.     ;-----------------------------------------------------
  5.     ; Item from association list
  6.     ;-----------------------------------------------------
  7.     (Defun ITEM (N E) (CDR (Assoc N E)))
  8.     ;-----------------------------------------------------
  9.     ; Error Handler
  10.     ;-----------------------------------------------------
  11.    (acet-error-init
  12.      (list
  13.        (list "cmdecho" 0
  14.              "highlight" 1
  15.        )
  16.        T     ;flag. True means use undo for error clean up.
  17.      );list
  18.    );acet-error-init
  19.     ;-----------------------------------------------------
  20.     ; BIT SET
  21.     ;-----------------------------------------------------
  22.     (Defun BITSET (A B) (= (Boole 1 A B) B))
  23.     ;-----------------------------------------------------
  24.     ; BUMP
  25.     ;-----------------------------------------------------
  26.     (Setq bcnt 0)
  27.     (Defun bump (prmpt)
  28.        (Princ
  29.           (Nth bcnt '("\r-" "\r\" "\r|" "\r/"))
  30.        )
  31.        (Setq bcnt (Rem (1+ bcnt) 4))
  32.     )
  33.     ;-----------------------------------------------------
  34.     ; Convert Attribute Entity to Text Entity
  35.     ;-----------------------------------------------------
  36.     (Defun ATT-TEXT (AENT / TENT ILIST INUM)
  37.        (Setq TENT '((0 . "TEXT")))
  38.        (ForEach INUM '(8
  39.              6
  40.              38
  41.              39
  42.              62
  43.              67
  44.              210
  45.              10
  46.              40
  47.              1
  48.              50
  49.              41
  50.              51
  51.              7
  52.              71
  53.              72
  54.              73
  55.              11
  56.              74
  57.           )
  58.           (If (Setq ILIST (Assoc INUM AENT))
  59.              (Setq TENT (Cons ILIST TENT))
  60.           )
  61.        )
  62.        (Setq
  63.           tent (Subst
  64.                   (Cons 73 (item 74 aent))
  65.                   (Assoc 74 tent)
  66.                   tent
  67.                )
  68.        )
  69.        (EntMake (Reverse TENT))
  70.     )
  71.     ;-----------------------------------------------------
  72.     ; Find True last entity
  73.     ;-----------------------------------------------------
  74.     (Defun LASTENT (/ E0 EN)
  75.        (Setq E0 (EntLast))
  76.        (While (Setq EN (EntNext E0))
  77.           (Setq E0 EN)
  78.        )
  79.        E0
  80.     )
  81.     ;-----------------------------------------------------
  82.     ; Burst one entity
  83.     ;-----------------------------------------------------
  84.     (Defun BURST-ONE (BNAME / BENT ANAME ENT ATYPE AENT AGAIN ENAME
  85.                       ENT SS-COLOR SS-LAYER SS-LTYPE mirror ss-mirror
  86.                       mlast)
  87.        (Setq
  88.           BENT   (EntGet BNAME)
  89.           BLAYER (ITEM 8 BENT)
  90.           BCOLOR (ITEM 62 BENT)
  91.           BCOLOR (Cond
  92.                     ((> BCOLOR 0) BCOLOR)
  93.                     ((= BCOLOR 0) "BYBLOCK")
  94.                     ("BYLAYER")
  95.                  )
  96.           BLTYPE (Cond ((ITEM 6 BENT)) ("BYLAYER"))
  97.        )
  98.        (Setq ELAST (LASTENT))
  99.        (If (= 1 (ITEM 66 BENT))
  100.           (Progn
  101.              (Setq ANAME BNAME)
  102.              (While (Setq
  103.                        ANAME (EntNext ANAME)
  104.                        AENT  (EntGet ANAME)
  105.                        ATYPE (ITEM 0 AENT)
  106.                        AGAIN (= "ATTRIB" ATYPE)
  107.                     )
  108.                 (bump "正在转换属性")
  109.                 (ATT-TEXT AENT)
  110.              )
  111.           )
  112.        )
  113.           (Progn
  114.              (bump "分解块")
  115.              (acet-explode BNAME)
  116.              ;(vla-explode (vlax-ename->vla-object BNAME))
  117.              ;(command "_.explode" bname)
  118.           )
  119.        (Setq
  120.           SS-LAYER (SsAdd)
  121.           SS-COLOR (SsAdd)
  122.           SS-LTYPE (SsAdd)
  123.           ENAME    ELAST
  124.        )
  125.        (While (Setq ENAME (EntNext ENAME))
  126.           (bump "收集片")
  127.           (Setq
  128.              ENT   (EntGet ENAME)
  129.              ETYPE (ITEM 0 ENT)
  130.           )
  131.           (If (= "ATTDEF" ETYPE)
  132.              (Progn
  133.                 (If (BITSET (ITEM 70 ENT) 2)
  134.                    (ATT-TEXT ENT)
  135.                 )
  136.                 (EntDel ENAME)
  137.              )
  138.              (Progn
  139.                 (If (= "0" (ITEM 8 ENT))
  140.                    (SsAdd ENAME SS-LAYER)
  141.                 )
  142.                 (If (= 0 (ITEM 62 ENT))
  143.                    (SsAdd ENAME SS-COLOR)
  144.                 )
  145.                 (If (= "BYBLOCK" (ITEM 6 ENT))
  146.                    (SsAdd ENAME SS-LTYPE)
  147.                 )
  148.              )
  149.           )
  150.        )
  151.        (If (> (SsLength SS-LAYER) 0)
  152.           (Progn
  153.              (bump "固定图层")
  154.              (Command
  155.                 "_.chprop" SS-LAYER "" "_LA" BLAYER ""
  156.              )
  157.           )
  158.        )
  159.        (If (> (SsLength SS-COLOR) 0)
  160.           (Progn
  161.              (bump "固定颜色")
  162.              (Command
  163.                 "_.chprop" SS-COLOR "" "_C" BCOLOR ""
  164.              )
  165.           )
  166.        )
  167.        (If (> (SsLength SS-LTYPE) 0)
  168.           (Progn
  169.              (bump "固定线型")
  170.              (Command
  171.                 "_.chprop" SS-LTYPE "" "_LT" BLTYPE ""
  172.              )
  173.           )
  174.        )
  175.     )
  176.     ;-----------------------------------------------------
  177.     ; BURST MAIN ROUTINE
  178.     ;-----------------------------------------------------
  179.     (Defun BURST (/ SS1)
  180.        (setq PSFLAG (if (= 1 (caar (vports)))
  181.                         1 0
  182.                     )
  183.        )
  184.        (pbossget);;;;自动选择要分解的物体
  185.        (If SS1
  186.           (Progn
  187.              (Setvar "highlight" 0)
  188.              (terpri)
  189.              (Repeat
  190.                 (SsLength SS1)
  191.                 (Setq ENAME (SsName SS1 0))
  192.                 (SsDel ENAME SS1)
  193.                 (BURST-ONE ENAME)
  194.              )
  195.              (princ "\n")
  196.           )
  197.        )
  198.     )
  199.     ;-----------------------------------------------------
  200.     ; BURST COMMAND
  201.     ;-----------------------------------------------------
  202.     (BURST)
  203.    (acet-error-restore)
  204. );end defun
  205. (princ)
  206. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;函数定义完毕;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  207. ;;;第一步:分解属性块
  208. (princ "{开始分解属性块,耐心等待...}")
  209. (defun pbossget ()
  210.     (Setq SS1 (SsGet "X" (list (cons 0 "INSERT")'(66 . 1)(cons 67 PSFLAG))));;分解所有带属性块
  211. )
  212. (PBOBURST)
  213. (command ".-PURGE" "A" "" "N")
  214. ;;;;;;;;;;;;;;
  215. (defun pbossget ()
  216.     (Setq SS1 (SsGet "X" (list (cons 0 "INSERT")'(2 . "`*U*")(cons 67 PSFLAG))));;分解所有无名块(在CAD2004里执行,动态块转为CAD2004后自动会变成匿名块)
  217. )
  218. (PBOBURST)
  219. ;;;;;;;;;;;;;;
  220. (princ "{属性块分解完毕}准备进入下一步,耐心等待...=====》")
  221. (princ)
  222. ;;;第二步:炸开动态块(在CAD2004里略去)
  223. ;;;第三步:炸开多重引线(在CAD2004里执行,CAD2008的多重引线转成CAD2004后自动变成ACAD_PROXY_ENTITY)
  224. (setvar "qaflags" 1)
  225. (if (/= (SsGet "X" '((0 . "ACAD_PROXY_ENTITY"))) nil)
  226.      (command "._explode" (SsGet "X" '((0 . "ACAD_PROXY_ENTITY"))) "")
  227.      (princ "选择集为空")
  228. )
  229. (setvar "qaflags" 0)
  230. (command ".-PURGE" "A" "" "N")
  231. (princ "{多重引线分解完毕,耐心等待...}=====》")
  232. (princ)
  233. (command ".-PURGE" "A" "" "N")
  234. (princ "{垃圾清理完毕!}")
  235. (princ)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-12 07:51 , Processed in 0.150217 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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