有很多种方法,其中一种方法是在循环时使用函数ssdel从选择集中删除enity名称:
(repeat (sslength ss)
(setq obj (ssname ss 0))
(entdel obj)
(ssdel obj ss)
)
谢谢李 你好
我使用这段代码删除所有基于类型的实体。
(defun removeByType(typ)
(setq ss (ssget "X" (list(cons 0 typ))))
(if ss (command "_.Erase" ss ""))
)
现在我想让用户设置选择范围,
if nothing is selected
remove all typ from database
filter typ and delete
我如何设置这种条件? 也许是这样?
(defun c:test ( / ent )
(if (setq ent (car (entsel "\nSelect type of object to delete <all>: ")))
(eraseselection(list "_X" (list (assoc 0 (entget ent)))))
(eraseselection '("_X"))
)
(princ)
)
(defun eraseselection ( arg / idx sel )
(if (setq sel (apply 'ssget arg))
(repeat (setq idx (sslength sel)) (entdel (ssname sel (setq idx (1- idx)))))
)
)
也可以这样写:
(defun c:test ( / ent )
(eraseselection
(cons "_X"
(if (setq ent (car (entsel "\nSelect type of object to delete <all>: ")))
(list (list (assoc 0 (entget ent))))
)
)
)
(princ)
)
(defun eraseselection ( arg / idx sel )
(if (setq sel (apply 'ssget arg))
(repeat (setq idx (sslength sel)) (entdel (ssname sel (setq idx (1- idx)))))
)
)
页:
1
[2]