如何最快速地清理指定的块?
本帖最后由 mandala 于 2013-11-24 16:22 编辑是这样的,有一个块“a”已定义,但图纸中无块实体。要清理它可以用
(command "._purge" "b" “a” "n" )
但如果多次要清理这类指定名称的块定义,比如说一个重复1000次的repeat中,每次repeat一开始都生成这个块,最后又得删除这个块,这样用command就很慢,而且每次都提示“正在删除块“a”。已删除 1 个块。”很麻烦。
有更快速的办法吗?需要注意的是要删除(清理)的只是一个块定义,而非块实体。 首先可以在repeat前生成块,repeat后去清除它,repeat里边只去insert就行了
当然如果确实有必要在repeat里边来做这件事,那好象没什么太好的办法
repeat里需要生成这个块定义。 那就只有想想能不能不用purge而做到清理它了,不然估计没辙 本帖最后由 llsheng_73 于 2013-11-24 22:30 编辑
疑惑的一点是,在REPEAT里边生成了块,经过一系列处理后又要清理掉这个块定义,也就是说生成的块最终被删了或者炸开了,总之没有实体依赖于这个块定义而存在了,不然也不用清理它,那么就可以不需要清理掉这个块定义而对这个块它重新定义....repeat后再清理它不就结了? 本帖最后由 Gu_xl 于 2013-11-24 22:29 编辑
;;删除指定块定义
(defun delBlkdef (name)
(if (not
(VL-CATCH-ALL-ERROR-P
(setq
obj
(VL-CATCH-ALL-APPLY
'vla-item
(list (vla-get-blocks
(vla-get-ActiveDocument (vlax-get-acad-object))
)
name
)
)
)
)
)
(VL-CATCH-ALL-APPLY 'vla-delete (list obj))
)
) 本帖最后由 llsheng_73 于 2013-11-24 22:41 编辑
Gu_xl 发表于 2013-11-24 22:27 static/image/common/back.gif
G版又出手了,高效,刚才我调用的时候用错了参数,差点以为没能清理掉。。。
好象G版这办法可以删除图层等其它非图元数据
比如(vla-get-blocks改成layers。。。学习了
页:
[1]