找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 725|回复: 4

[日积月累]:去除图中重复的文字

[复制链接]
发表于 2003-6-7 01:23:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
  1. [font=courier]
  2. ;本程序的目的是要去除图中重复的文字(主要是针对测量图中存在的大量在同一位置上重复的数字)
  3. (defun invar ()
  4.   (setvar "cmdecho" 0)                        ;屏蔽命令行显示
  5.   (setq os (getvar "osmode"))                ;提取物体捕捉变量
  6.   (setvar "osmode" 0)                        ;设置物体捕捉变量为空
  7.   (command "undo" "g")                        ;设置“U”回的值
  8. )
  9. (defun revar ()
  10.   (setvar "osmode" os)                        ;恢复物体捕捉设置
  11.   (command "undo" "e")                        ;设置“U”的最点
  12.   (setvar "cmdecho" 1)                        ;恢复命令行显示
  13. )

  14. (defun c:retext        ()
  15.   (invar)
  16.   (alert "每次所选数字总数最好不要超过200个,否则太慢!!!")
  17.   (prompt "\n请选取文字:")
  18.   (terpri)
  19.   (setq ss (ssget '((0 . "text"))))        ;选取并过滤为文字
  20.   (if (= ss nil)                        ;对没有选取文字的处理
  21.     (progn
  22.       (prompt "\n你没有选取任何文字!!!")
  23.       (exit)
  24.     )
  25.   )
  26.   (terpri)
  27.   (setq i (sslength ss))                ;所选取的文字数
  28.   (if (= i 1)                                ;对只选取一个文字的处理
  29.     (progn
  30.       (prompt "\n你只选取了一个文字!!!")
  31.       (exit)
  32.     )
  33.   )
  34.   (setq ii 0)                                ;循环体中文字个数的值
  35.   (setq n 0)                                ;用来计算总共删除的重复文字个数
  36.   (while (> i 1)
  37.     (setq entname (ssname ss ii))
  38.     (setq ent (entget entname))
  39.     (setq ent10 (assoc 10 ent))
  40.     (setq ent1 (cdr (assoc 1 ent)))
  41.     (setq ent10x (cadr ent10))
  42.     (setq ent10y (caddr ent10))
  43.     (setq ss (ssdel entname ss))
  44.     (setq i (sslength ss))
  45.     (repeat i
  46.       (setq lentname (ssname ss ii))
  47.       (setq lent (entget lentname))
  48.       (setq lent10 (assoc 10 lent))
  49.       (setq lent1 (cdr (assoc 1 lent)))
  50.       (setq lent10x (cadr lent10))
  51.       (setq lent10y (caddr lent10))
  52.       (if (and
  53.             (= lent1 ent1)
  54.             (= lent10x ent10x)
  55.             (= lent10y ent10y)
  56.           )
  57.         (progn
  58.           (setq ss (ssdel lentname ss))
  59.           (entdel lentname)
  60.           (setq n (1+ n))
  61.         )                                ;end of progn
  62.         (setq ii (1+ ii))
  63.       )                                        ;end of if
  64.     )                                        ;end of repeat
  65.     (setq ii 0)
  66.     (setq i (sslength ss))
  67.   )                                        ;end of while
  68.   (if (= n 0)
  69.     (prompt "\n没有重复的文字!!!")
  70.     (progn
  71.       (prin1 "总共删除了")
  72.       (prin1 n)
  73.       (prin1 "个重复的文字")
  74.       (terpri)
  75.       (prompt "\n山东省水利勘测设计院 杨克坤 2003.05.17编")
  76.     )
  77.   )
  78.   (revar)
  79. )

  80. [/font]




请大家指教
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2003-6-7 23:16:44 | 显示全部楼层
应该是去重叠文字吧?
完全重叠的情况不多见,最好加个干涉判断,文字外框相交而且内容相同,保留一个.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-6-8 01:11:24 | 显示全部楼层
最近用了一些好几幅地形图拼起来的图,一是图太大,一般在10M左右,好多地方的高程点数据多的重叠9次。上面写的东西判断起来太麻烦,运行起来数字多了太慢。
能否教我如果进行干涉判断?我是初学者,不懂,先谢谢了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2003-6-8 01:12:18 | 显示全部楼层
(if (and
            (= lent1 ent1)
            (= lent10x ent10x)
            (= lent10y ent10y)
          )
这不能判断重叠的.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-6-8 02:57:31 | 显示全部楼层
最初由 aeo 发布
[B](if (and
            (= lent1 ent1)
            (= lent10x ent10x)
            (= lent10y ent10y)
          )
这不能判断重叠的. [/B]

我认为有道理。这只是判断了一个点,还有角度,字高,字宽等,要比较的还有好多。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-5-5 19:29 , Processed in 0.327827 second(s), 38 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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