theisland 发表于 2015-11-18 21:30:48

求一键炸开图中所有动态块

求一键炸开图中所有动态块,并提示炸开了多少个动态块,如果没有动态块则提示没有动态块,谢谢!

鱼与熊掌 发表于 2015-11-18 21:30:49

本帖最后由 鱼与熊掌 于 2015-11-18 21:46 编辑

(defun c:tt(/ *acad* *doc* *docs* *ms* cx-isdynamic i)
(defun cx-Isdynamic ( obj)
    (and (vlax-property-available-p obj 'isdynamicblock)
      (= :vlax-true (vla-get-isdynamicblock obj))
    )
)
(vl-load-com)
(setq
    *ACAD*(vlax-get-acad-object)
    *DOC*   (vla-get-ActiveDocument *ACAD*)
    *DOCS*(vla-get-Documents *ACAD*)
    *MS*    (vla-get-modelSpace *DOC*)
)
(setq i 0)
(vlax-for x *MS*
    (if (cx-Isdynamic x)
      (progn
      (vla-Explode x)
      (vla-Delete x)
      (setq i(1+ i))
      )
    )
)
(if(> i 0)
    (alert(strcat "一共炸开" (itoa i) "个动态块."))
    (alert"无动态块.")
)
(princ)
)

theisland 发表于 2015-11-18 22:04:55

鱼与熊掌 发表于 2015-11-18 21:30 static/image/common/back.gif


非常好!能把提示改成命令行形式的吗?不想去点那个提示框,还有图纸比较大(有几百个动态块)的时候运行等待时间稍长

鱼与熊掌 发表于 2015-11-19 11:59:22

theisland 发表于 2015-11-18 22:04 static/image/common/back.gif
非常好!能把提示改成命令行形式的吗?不想去点那个提示框,还有图纸比较大(有几百个动态块)的时候运行 ...

Alert改成prompt

theisland 发表于 2015-11-20 06:39:44

鱼与熊掌 发表于 2015-11-19 11:59 static/image/common/back.gif
Alert改成prompt

搞定,谢谢!

theisland 发表于 2015-11-28 13:46:16

鱼与熊掌 发表于 2015-11-19 11:59 static/image/common/back.gif
Alert改成prompt

朋友,如果我有部分动态块不想炸开怎么办呢?比如图中有名为“动态块1”、“动态块2”、“动态块3”的动态块(这3个动态块里面都有可见性参数)不需要炸开,其他大部分都是要炸开的该怎么改?
页: [1]
查看完整版本: 求一键炸开图中所有动态块