Lisp帮助-删除所有对象
需要lisp删除4个不同层(ZZ-UKMAP-LANDLINE、ZZ-UKMAP-RAIL、ZZ-UKMAP-STATION、ZZ-UKMAP-STATION NAME)上的所有对象。唯一的问题是,我有一个名为“MAP”的块,我想保留它,这个块在上面的层中有对象。
因此,希望删除四个独立层上的所有对象,但排除块“贴图”(或者更容易的话,排除所有块)。
有人能帮忙吗?我一直在尝试使用ssget来实现这一点,但无法成功编写lisp,
谢谢 看看这个。。
(defun c:test (/ ss i sset e)
(if
(setq ss (ssget "_x" '((8 . "ZZ-UKMAP-LANDLINE,ZZ-UKMAP-RAIL,ZZ-UKMAP-STATION,ZZ-UKMAP-STATION NAME"))))
(repeat
(setq i (sslength ss))
(setq sset (ssname ss (setq i (1- i))))
(setq e (entget sset))
(if (not (eq (cdr (assoc 2 e))"MAP"))
(entdel sset)
)
)
(princ)
)
(princ)
)
塔瓦特 如果“地图”块不是动态的,我会这样处理:
(defun c:FOO (/ ss)
(if (setq ss (ssget "_x" '((-4 . "<NOT")
(2 . "MAP")
(-4 . "NOT>")
(8 . "ZZ-UKMAP-LANDLINE,ZZ-UKMAP-RAIL,ZZ-UKMAP-STATION,ZZ-UKMAP-STATION NAME"))))
(command "._erase" ss "")
(prompt "\n** Nothing selected ** "))
(princ))
**未经测试,并写在我的MacBook上,我可以在上班时进行测试**
注意-应进行层检查,以确保层未首先锁定。
... 否则,我将使用vlax for逐步遍历选择集,有条件地使用块的有效名称进行限定。
HTH公司
页:
[1]