liuhaixin88 发表于 2022-7-5 23:24:23

如果使用lisp,怎么做

如果使用lisp,如何清除零长度几何体和空文本对象?谢谢你的帮助!

Tharwat 发表于 2022-7-5 23:30:31

如果图形中没有零长度几何体或空文本对象,则不会激活它。

Lee Mac 发表于 2022-7-5 23:34:01

Command: -PURGE
Enter type of unused objects to purge Zero-length geometry/Empty text objects/All]:
(command "_.-purge" "_Z" "_.-purge" "_E")

MSasu 发表于 2022-7-5 23:37:28

既然您提到AutoLISP,您是否打算编写自己的代码?如果是,则要查找零长度实体,需要查找VLA-GET-length函数:
(vla-get-length (vlax-ename->vla-object (car (entsel))))
空文本实体将在其关联列表中的DXF代码1下存储一个空字符串。
 
当然,上述所有操作都需要解析图形的数据库-请检查ENTNEXT和ENTGET函数。

Tharwat 发表于 2022-7-5 23:45:02

简单示例
 

(setq ss (ssadd)
   e(entnext)
)
(while (and e (wcmatch (cdr (assoc 0 (setq en (entget e)))) "LINE,LWPOLYLINE,*TEXT"))
(if (or (and (vlax-property-available-p (setq v (vlax-ename->vla-object e)) 'LENGTH)
            (zerop (vla-get-length v))
         )
         (and (vlax-property-available-p v 'TEXTSTRING) (eq (vla-get-textstring v) ""))
   )
   (ssadd e ss)
)
(setq e (entnext e))
)
(sssetfirst nil ss)

liuhaixin88 发表于 2022-7-5 23:47:32

李·麦克、姆萨苏、塔瓦、,
非常感谢。
如果使用清除,但低版本没有此选项,例如acad2007
Tharwat,谢谢你的密码。

Tharwat 发表于 2022-7-5 23:52:13

 
这就是为什么我为
 
 
不客气。

flyfox1047 发表于 2022-7-5 23:56:04

 
(vlax-for obj (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object)))
(setq typ (vla-get-objectname obj))
(cond
    ((wcmatch typ "*Text")
      ....
    ((wcmatch (strcase typ) "*LINE,ARC,ELLIPSE")
    ....
    )
   (t)
)
)

Tharwat 发表于 2022-7-5 23:58:44

布局中的对象呢?

flyfox1047 发表于 2022-7-6 00:05:05

 
(vlax-for obj (vla-get-paperspace (vla-get-activedocument (vlax-get-acad-object)))
....
)
页: [1] 2
查看完整版本: 如果使用lisp,怎么做