明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3833|回复: 11

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

  [复制链接]
发表于 2008-2-24 20:41:00 | 显示全部楼层 |阅读模式

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

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

发表于 2008-2-25 07:43:00 | 显示全部楼层

意图1:先点选一个文字,再删除框选到的与之相同的文字

框选时设置过滤条件为文字,然后将选择集内文字实体逐一与点选的文字进行比较,相同则删除。

意图2:框选到的文字相互之间比较,删除相同的

这个有专用算法,运算量也比较大,对我来说难度高了点

BTW,如果建筑用天正,门窗编号是块属性,在window_text层,冻结即可

发表于 2008-2-25 08:25:00 | 显示全部楼层
(defun c:test (/ lst ss)
    (setq lst (entget (car (entsel "\n选择特征文字:"))))
    (setq lst
      (vl-remove-if-not '(lambda (x) (member (car x) (list 8 1)))
          lst
      )
    )
    (prompt "\n请选择要删除的文字")
    (setq ss (ssget lst))
    (command ".erase" ss "")
)
 楼主| 发表于 2008-2-25 14:11:00 | 显示全部楼层

brainstorm的程序已经把问题解决了,谢谢!如果是清图的话,没有必要框选,直接删除文件中符合的内容,如果不框选,上面的程序应该怎么调整一下呢?

同时感谢lazybones提供的建议!

发表于 2008-2-25 15:53:00 | 显示全部楼层

 (setq ss (ssget lst))改成 (setq ss (ssget "x" lst))就行了

发表于 2008-2-25 18:24:00 | 显示全部楼层

用find命令也能做到

用filter命令也能做到

 楼主| 发表于 2008-2-25 20:05:00 | 显示全部楼层

用find命令也能做到。。。。。。。。。只能查找或替换文字,并不能删除文字;

用filter命令也能做到。。。。。。。。操作麻烦,有很多选项。

再次感谢brainstorm完善程序

 楼主| 发表于 2008-2-28 10:19:00 | 显示全部楼层
噢,程序,我又再试了一下,不仅字可以删除,其它图元仍然可以被删除,能不能仅针对字呢?
 楼主| 发表于 2008-11-23 11:22:00 | 显示全部楼层

能不能再改改上面的程序呢

 楼主| 发表于 2008-11-25 19:40:00 | 显示全部楼层

  (vl-remove-if-not '(lambda (x) (member (car x) (list 8 1)))
          lst
不仅字可以删除,其它图元仍然可以被删除

是不是这一句有问题呢?

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-20 11:07 , Processed in 0.311509 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表