my_autocad 发表于 2008-2-24 20:41:00

[求助]通过点选,删除文件内或框选范围内所有内容相同的文字

<p>通过点选,删除文件内或框选范围内所有内容相同的文字;</p><p>常做清图工作,常要把一些文件内容进行整理,如果一个文件里面,文字没有分层,又要删除很多,是件很郁闷的事情,如删除所有的门窗注释,怎么办?请高手编一个通过点选,删除文件内或框选范围内所有内容相同的文字的LSp程序,先谢谢了</p>

lazybones 发表于 2008-2-25 07:43:00

<p>意图1:先点选一个文字,再删除框选到的与之相同的文字</p><p>框选时设置过滤条件为文字,然后将选择集内文字实体逐一与点选的文字进行比较,相同则删除。</p><p>意图2:框选到的文字相互之间比较,删除相同的</p><p>这个有专用算法,运算量也比较大,对我来说难度高了点</p><p>BTW,如果建筑用天正,门窗编号是块属性,在window_text层,冻结即可</p>

brainstorm 发表于 2008-2-25 08:25:00

(defun c:test (/ lst ss)<br/>&nbsp;&nbsp;&nbsp; (setq lst (entget (car (entsel "\n选择特征文字:"))))<br/>&nbsp;&nbsp;&nbsp; (setq lst<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (vl-remove-if-not '(lambda (x) (member (car x) (list 8 1)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lst<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; (prompt "\n请选择要删除的文字")<br/>&nbsp;&nbsp;&nbsp; (setq ss (ssget lst))<br/>&nbsp;&nbsp;&nbsp; (command ".erase" ss "")<br/>)

my_autocad 发表于 2008-2-25 14:11:00

<p><strong><font face="Verdana" color="#61b713">brainstorm的程序已经把问题解决了,谢谢!如果是清图的话,没有必要框选,直接删除文件中符合的内容,如果不框选,上面的程序应该怎么调整一下呢?</font></strong></p><p>同时感谢<strong><font face="Verdana" color="#61b713">lazybones提供的建议!</font></strong></p>

brainstorm 发表于 2008-2-25 15:53:00

<p>&nbsp;(setq ss (ssget lst))改成 (setq ss (ssget&nbsp;"x"&nbsp;lst))就行了<br/></p>

phoenixdjq 发表于 2008-2-25 18:24:00

<p>用find命令也能做到</p><p>用filter命令也能做到</p>

my_autocad 发表于 2008-2-25 20:05:00

<p>用find命令也能做到。。。。。。。。。只能查找或替换文字,并不能删除文字;</p><p>用filter命令也能做到。。。。。。。。操作麻烦,有很多选项。</p><p>再次感谢<strong><font face="Verdana" color="#61b713">brainstorm完善程序</font></strong></p>

my_autocad 发表于 2008-2-28 10:19:00

噢,程序,我又再试了一下,不仅字可以删除,其它图元仍然可以被删除,能不能仅针对字呢?

my_autocad 发表于 2008-11-23 11:22:00

<p>能不能再改改上面的程序呢</p>

my_autocad 发表于 2008-11-25 19:40:00

<p>&nbsp; (vl-remove-if-not '(lambda (x) (member (car x) (list 8 1)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lst<br/>不仅字可以删除,其它图元仍然可以被删除</p><p>是不是这一句有问题呢?</p>
页: [1] 2
查看完整版本: [求助]通过点选,删除文件内或框选范围内所有内容相同的文字