[求助]通过点选,删除文件内或框选范围内所有内容相同的文字
<p>通过点选,删除文件内或框选范围内所有内容相同的文字;</p><p>常做清图工作,常要把一些文件内容进行整理,如果一个文件里面,文字没有分层,又要删除很多,是件很郁闷的事情,如删除所有的门窗注释,怎么办?请高手编一个通过点选,删除文件内或框选范围内所有内容相同的文字的LSp程序,先谢谢了</p> <p>意图1:先点选一个文字,再删除框选到的与之相同的文字</p><p>框选时设置过滤条件为文字,然后将选择集内文字实体逐一与点选的文字进行比较,相同则删除。</p><p>意图2:框选到的文字相互之间比较,删除相同的</p><p>这个有专用算法,运算量也比较大,对我来说难度高了点</p><p>BTW,如果建筑用天正,门窗编号是块属性,在window_text层,冻结即可</p> (defun c:test (/ lst ss)<br/> (setq lst (entget (car (entsel "\n选择特征文字:"))))<br/> (setq lst<br/> (vl-remove-if-not '(lambda (x) (member (car x) (list 8 1)))<br/> lst<br/> )<br/> )<br/> (prompt "\n请选择要删除的文字")<br/> (setq ss (ssget lst))<br/> (command ".erase" ss "")<br/>) <p><strong><font face="Verdana" color="#61b713">brainstorm的程序已经把问题解决了,谢谢!如果是清图的话,没有必要框选,直接删除文件中符合的内容,如果不框选,上面的程序应该怎么调整一下呢?</font></strong></p><p>同时感谢<strong><font face="Verdana" color="#61b713">lazybones提供的建议!</font></strong></p> <p> (setq ss (ssget lst))改成 (setq ss (ssget "x" lst))就行了<br/></p> <p>用find命令也能做到</p><p>用filter命令也能做到</p> <p>用find命令也能做到。。。。。。。。。只能查找或替换文字,并不能删除文字;</p><p>用filter命令也能做到。。。。。。。。操作麻烦,有很多选项。</p><p>再次感谢<strong><font face="Verdana" color="#61b713">brainstorm完善程序</font></strong></p> 噢,程序,我又再试了一下,不仅字可以删除,其它图元仍然可以被删除,能不能仅针对字呢? <p>能不能再改改上面的程序呢</p> <p> (vl-remove-if-not '(lambda (x) (member (car x) (list 8 1)))<br/> lst<br/>不仅字可以删除,其它图元仍然可以被删除</p><p>是不是这一句有问题呢?</p>
页:
[1]
2