Lee Mac 发表于 2022-7-6 13:25:56

 
遗憾的是,他们没有为清除方面提供更多的VL选项——我想你可以自己动手做代码,但可能不会太快。。。

alanjt 发表于 2022-7-6 13:27:46

有趣的想法,也许是这样的:
(defun MleaderStylePurge (/)
(vl-remove-if
   'null
   (mapcar
   '(lambda (x)
      (and
          (eq 350 (car x))
          (not (eq 330 (car (nth 5 (entget (cdr x))))))
          (not (eq (getvar "cmleaderstyle")
                   (vla-get-name (vlax-ename->vla-object (cdr x)))
               ) ;_ eq
          ) ;_ not
          (entdel (cdr x))
      ) ;_ and
      ) ;_ lambda
   (dictsearch (namedobjdict) "ACAD_MLEADERSTYLE")
   ) ;_ mapcar
) ;_ vl-remove-if
) ;_ defun如果没有或T列表,则返回nil(每个清除的样式一个)

Lee Mac 发表于 2022-7-6 13:31:36

很好,艾伦,
 
我对DXF的了解还不够多,所以这次的MLeaderStyles不够
 
必须阅读。。。

alanjt 发表于 2022-7-6 13:34:03

谢谢
我也一样,我对dxf一窍不通(注意,我将其转换为vla对象以比较样式名)。我只是做了一些比较和测试。
 
有趣的是,你可以删除一个样式,即使它是当前的和/或使用过的。autocad将崩溃,但您可以做到。我最初的想法是vl catch all apply and delete them,但它仍然会删除它。

Lee Mac 发表于 2022-7-6 13:37:35

因此,您可以删除使用过的样式而不会出错-但它会在以后出错吗?

alanjt 发表于 2022-7-6 13:39:34

 
是的,这就是我为什么要投这么多支票的原因。就像entmod一样,你可以冻结当前层。

Lee Mac 发表于 2022-7-6 13:45:36

 
啊,好的,谢谢

alanjt 发表于 2022-7-6 13:48:14

现在我渴了。

alanjt 发表于 2022-7-6 13:50:03

嘿,选择属性块的dxf代码是什么?

Lee Mac 发表于 2022-7-6 13:53:05

(66 . 1)
 
或检查def:
 

(eq 2 (logand 2 (cdr (assoc 70 (tblsearch "BLOCK" "<blk>")))))

 
我通常使用:
 
http://autodesk.com/techpubs/autocad/acad2000/dxf/
页: 1 [2]
查看完整版本: 另一个清除Lisp程序。。。