PianoMan 发表于 2022-7-5 18:07:12

Lisp选择所有对象

大家好!我正在尝试创建一个lisp,当激活时,它将自动选择和删除几个层上的所有对象,理想情况下,这些对象会写入lisp本身,因此我不必输入任何内容。不幸的是,虽然我可以随着时间的推移理解代码,但我对代码的理解非常有限,不知道我需要什么命令来完成我想做的事情。
 
我有一个不错的开始,这段代码:

(defun c:SALL ()
(setq TargetEnt (car (entsel "\nSelect object on layer to select: ")))
(setq TargetLayer (assoc 8 (entget TargetEnt)))
(sssetfirst nil (ssget "_X" (list TargetLayer)))
(princ)
)
 
取自
在这里,但我不知道如何让它自动从指定层中选择项目,并且在整个过程结束时添加擦除命令似乎不起作用。
 
如果有人能帮我完成这件事,我将不胜感激!

Lee Mac 发表于 2022-7-5 18:34:56

欢迎来到CADTutor。
 
以下是此类程序的一种非常简单的形式:
(defun c:delonlayer ( / i s )
   (if (setq s (ssget "_X" '((8 . "Layer1,Layer2,Layer3"))))
       (repeat (setq i (sslength s)) (entdel (ssname s (setq i (1- i)))))
   )
   (princ)
)

PianoMan 发表于 2022-7-5 18:50:01

完美的谢谢

BIGAL 发表于 2022-7-5 19:08:18

也许是命令行版本?
 

(defun delonlayer (lays / i s )
   (if (setq s (ssget "_X" (List (cons 8 lays))))
       (repeat (setq i (sslength s)) (entdel (ssname s (setq i (1- i)))))
   )
   (princ)
)

type this on command line
(delonlayer ""Layer1,Layer2,Layer3")
页: [1]
查看完整版本: Lisp选择所有对象