hull 发表于 2008-3-1 22:34:00

求一个批量删除同名块的程序

<p>图里面的块重复插入很多次,名字知道了,有几百副这样的图。要删除这里面指定名字的所有块。</p>

英雄无敌 发表于 2008-3-7 16:52:00

<p>是都要删除吗?</p><p>(defun c:sb (/ en lst typ blkn ss n ret)</p><p>&nbsp; (setq en (entsel "\n请选择一个块:"))<br/>&nbsp; (if en<br/>&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq lst (entget (car en)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq typ (cdr (assoc 0 lst)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (if (= "INSERT" typ)<br/>&nbsp;(progn<br/>&nbsp;&nbsp; (setq blkn (cdr (assoc 2 lst)))<br/>&nbsp;&nbsp; (setq ss (ssget "x" (list (cons 2 blkn))))<br/>&nbsp;&nbsp; (setq n -1)<br/>&nbsp;&nbsp; (repeat (sslength ss)<br/>&nbsp;&nbsp;&nbsp;&nbsp; (setq en (ssname ss (setq n (1+ n))))<br/>&nbsp;&nbsp;&nbsp;&nbsp; (redraw en 3)<br/>&nbsp;&nbsp; )<br/>&nbsp;&nbsp; (initget "Move Erase eXplode")<br/>&nbsp;&nbsp; (setq&nbsp;ret<br/>&nbsp;&nbsp; (getpoint<br/>&nbsp;&nbsp;&nbsp;&nbsp; "\n选择基点或选择一种操作方式\"移动&lt;Move&gt;,删除&lt;Erase&gt;,打碎&lt;eXplode&gt;,&lt;右键取消&gt;\"]:"<br/>&nbsp;&nbsp; )<br/>&nbsp;&nbsp; )<br/>&nbsp;&nbsp; (cond<br/>&nbsp;&nbsp;&nbsp;&nbsp; ((= "Move" ret)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (command "move" ss "")<br/>&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp; ((= "Erase" ret)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (command "erase" ss "")<br/>&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp; ((= "eXplode" ret)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq n -1)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (command "undo" "be")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (repeat (sslength ss)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq en (ssname ss (setq n (1+ n))))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (command "explode" en)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (command "undo" "e")<br/>&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp; ((listp ret)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (if ret<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp; (command "move" ss "" ret)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp; (setq n -1)<br/>&nbsp;&nbsp; (repeat (sslength ss)<br/>&nbsp;&nbsp;&nbsp;&nbsp; (setq en (ssname ss (setq n (1+ n))))<br/>&nbsp;&nbsp;&nbsp;&nbsp; (redraw en 4)<br/>&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp; )</p><p>&nbsp;)<br/>&nbsp;(alert "\n请选择块!")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp; )</p><p>&nbsp; (princ)<br/>)</p><p></p><p>里面供了3种选择方式,如果你只要删除,你修改一下程序即可</p>

钾肥 发表于 2008-3-12 13:00:00

<p>用过滤选择后删除就好啦~</p><p>没必要特地写一个程序吧~</p>

liushengri 发表于 2008-3-12 19:26:00

能用框选的方式来删除吗?

钾肥 发表于 2008-3-13 12:22:00

<p>当然~不然就没啥意义了~</p>

liushengri 发表于 2008-3-13 21:49:00

用框选的方式如何来删除?

英雄无敌 发表于 2008-3-24 09:04:00

如果要框选,只要将(setq ss (ssget "x" (list (cons 2 blkn))))<br/>改成(setq ss (ssget&nbsp; (list (cons 2 blkn))))就行了,不过有一点,不支持无名块,如果要支持,得修改程序。<br/>

jiangkaimin 发表于 2008-5-20 23:26:00

<p>请英雄无敌大侠改下程序吧。其实实际应用中,很多情况就是要删除无名块。</p><p>感谢英雄无敌大侠了!</p>

weidesign669 发表于 2008-5-27 10:10:00

怎样过滤选择无名块
页: [1]
查看完整版本: 求一个批量删除同名块的程序