hbshyjch 发表于 2011-4-20 10:16:18

图块问题求教

如何实现以下功能:

      比方说A图块中嵌套着B图块,我想查找B图块,显示结果里面就显示出A图块中嵌套着B图块。

       或者一个程序删除B图块,把图纸上所有的或者选定区域里面的B图块(包含所嵌套的图块内的B图块)全部删除

请各位高手帮忙设计一个LISP程序,看能否实现。

Gu_xl 发表于 2011-4-20 15:12:27

本帖最后由 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)
    )

hbshyjch 发表于 2011-4-23 12:41:39

太感谢了,楼上的好强大。
页: [1]
查看完整版本: 图块问题求教