图块问题求教
如何实现以下功能:比方说A图块中嵌套着B图块,我想查找B图块,显示结果里面就显示出A图块中嵌套着B图块。
或者一个程序删除B图块,把图纸上所有的或者选定区域里面的B图块(包含所嵌套的图块内的B图块)全部删除
请各位高手帮忙设计一个LISP程序,看能否实现。
本帖最后由 Gu_xl 于 2011-4-20 19:13 编辑
回复 hbshyjch 的帖子
;;;删除所有图块并清理,包括嵌套块
(defun c:tt(/ namess blk objdoc)
(setq doc (vla-get-ActiveDocument (vlax-get-acad-object)))
(setq name (getstring "\n要删除的块名称:"))
(if (/= name "")
(progn
(setq blocks (vla-get-blocks doc))
(if (not (VL-CATCH-ALL-ERROR-P (VL-CATCH-ALL-APPLY 'vla-Item (list blocks name))))
(progn
(vlax-for blk blocks
(vlax-for obj blk
(if (and (or (= "AcDbBlockReference" (vla-get-ObjectName obj))
(= "AcDbMInsertBlock" (vla-get-ObjectName obj))
)
(= (strcase name) (strcase (vla-get-name obj)))
)
(vla-delete obj)
)
)
)
(command "purge" "b" name "n")
(vla-regen doc acActiveViewport)
)
)
)
)
(princ)
)
太感谢了,楼上的好强大。
页:
[1]