求一个批量删除同名块的程序
<p>图里面的块重复插入很多次,名字知道了,有几百副这样的图。要删除这里面指定名字的所有块。</p> <p>是都要删除吗?</p><p>(defun c:sb (/ en lst typ blkn ss n ret)</p><p> (setq en (entsel "\n请选择一个块:"))<br/> (if en<br/> (progn<br/> (setq lst (entget (car en)))<br/> (setq typ (cdr (assoc 0 lst)))<br/> (if (= "INSERT" typ)<br/> (progn<br/> (setq blkn (cdr (assoc 2 lst)))<br/> (setq ss (ssget "x" (list (cons 2 blkn))))<br/> (setq n -1)<br/> (repeat (sslength ss)<br/> (setq en (ssname ss (setq n (1+ n))))<br/> (redraw en 3)<br/> )<br/> (initget "Move Erase eXplode")<br/> (setq ret<br/> (getpoint<br/> "\n选择基点或选择一种操作方式\"移动<Move>,删除<Erase>,打碎<eXplode>,<右键取消>\"]:"<br/> )<br/> )<br/> (cond<br/> ((= "Move" ret)<br/> (command "move" ss "")<br/> )<br/> ((= "Erase" ret)<br/> (command "erase" ss "")<br/> )<br/> ((= "eXplode" ret)<br/> (setq n -1)<br/> (command "undo" "be")<br/> (repeat (sslength ss)<br/> (setq en (ssname ss (setq n (1+ n))))<br/> (command "explode" en)<br/> )<br/> (command "undo" "e")<br/> )<br/> ((listp ret)<br/> (if ret<br/> (progn<br/> (command "move" ss "" ret)<br/> )<br/> (progn<br/> (setq n -1)<br/> (repeat (sslength ss)<br/> (setq en (ssname ss (setq n (1+ n))))<br/> (redraw en 4)<br/> )<br/> )<br/> )<br/> )<br/> )</p><p> )<br/> (alert "\n请选择块!")<br/> )<br/> )<br/> )</p><p> (princ)<br/>)</p><p></p><p>里面供了3种选择方式,如果你只要删除,你修改一下程序即可</p> <p>用过滤选择后删除就好啦~</p><p>没必要特地写一个程序吧~</p> 能用框选的方式来删除吗? <p>当然~不然就没啥意义了~</p> 用框选的方式如何来删除? 如果要框选,只要将(setq ss (ssget "x" (list (cons 2 blkn))))<br/>改成(setq ss (ssget (list (cons 2 blkn))))就行了,不过有一点,不支持无名块,如果要支持,得修改程序。<br/> <p>请英雄无敌大侠改下程序吧。其实实际应用中,很多情况就是要删除无名块。</p><p>感谢英雄无敌大侠了!</p> 怎样过滤选择无名块
页:
[1]