jmkite 发表于 2014-8-6 20:34:27

新人求助 Lisp程序删除指定块

现在我有几百个cad文件图纸,里面有一个块名叫"签名",现在要求打印出来的图纸不要"签名"这个块。我有个cad批量处理程序,可以对某个文件夹中的所有cad文件一个一个地运行某个Lisp程序后自动保存。现在我想有个删除指定块名Lisp程序,下面所示程序的删除块Lisp程序要在cad中选择一个块,然后删除cad中所有相同名字的块。我想在它基础上修改成删除指定块名Lisp程序,就是在Lisp程序里就指定删除所有块名为"签名"的块,不用我在cad中点击块名,即一运行这个Lisp程序,马上删除所打开cad中的块名为"签名"的所有块。
望那位高手可以解决小弟的问题,万分感谢!

(defun c:ek(/ xx a xzj gs);选择块确认后,删除所有同名块
(setq xzj (ssget '((0 . "INSERT"))))
(setq gs (sslength xzj))
(if (/= gs 1) (exit))
(setq xx (entget(ssname xzj 0)))
(setq a (cdr (assoc 2 xx)))
(setq xzj (ssget "x" (list(cons 2 a))))
(command "_erase" xzj "")
)

Andyhon 发表于 2014-8-6 21:20:16

(defun ek (/ xx a xzj gs)
   (command "_erase" (ssget "X" '((0 . "INSERT") (2 . "簽名"))) "")
)
页: [1]
查看完整版本: 新人求助 Lisp程序删除指定块