Tharwat 发表于 2022-7-5 16:59:57

 
有很多种方法,其中一种方法是在循环时使用函数ssdel从选择集中删除enity名称:
 

(repeat (sslength ss)
   (setq obj (ssname ss 0))
   (entdel obj)
   (ssdel obj ss)
   )

samifox 发表于 2022-7-5 17:02:45

 
谢谢李

samifox 发表于 2022-7-5 17:06:57

你好
 
我使用这段代码删除所有基于类型的实体。
 

(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

 
我如何设置这种条件?

Lee Mac 发表于 2022-7-5 17:11:36

也许是这样?
 
(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]
查看完整版本: 如何删除所有实体