马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
 - [font=courier]
- ;本程序的目的是要去除图中重复的文字(主要是针对测量图中存在的大量在同一位置上重复的数字)
- (defun invar ()
- (setvar "cmdecho" 0) ;屏蔽命令行显示
- (setq os (getvar "osmode")) ;提取物体捕捉变量
- (setvar "osmode" 0) ;设置物体捕捉变量为空
- (command "undo" "g") ;设置“U”回的值
- )
- (defun revar ()
- (setvar "osmode" os) ;恢复物体捕捉设置
- (command "undo" "e") ;设置“U”的最点
- (setvar "cmdecho" 1) ;恢复命令行显示
- )
- (defun c:retext ()
- (invar)
- (alert "每次所选数字总数最好不要超过200个,否则太慢!!!")
- (prompt "\n请选取文字:")
- (terpri)
- (setq ss (ssget '((0 . "text")))) ;选取并过滤为文字
- (if (= ss nil) ;对没有选取文字的处理
- (progn
- (prompt "\n你没有选取任何文字!!!")
- (exit)
- )
- )
- (terpri)
- (setq i (sslength ss)) ;所选取的文字数
- (if (= i 1) ;对只选取一个文字的处理
- (progn
- (prompt "\n你只选取了一个文字!!!")
- (exit)
- )
- )
- (setq ii 0) ;循环体中文字个数的值
- (setq n 0) ;用来计算总共删除的重复文字个数
- (while (> i 1)
- (setq entname (ssname ss ii))
- (setq ent (entget entname))
- (setq ent10 (assoc 10 ent))
- (setq ent1 (cdr (assoc 1 ent)))
- (setq ent10x (cadr ent10))
- (setq ent10y (caddr ent10))
- (setq ss (ssdel entname ss))
- (setq i (sslength ss))
- (repeat i
- (setq lentname (ssname ss ii))
- (setq lent (entget lentname))
- (setq lent10 (assoc 10 lent))
- (setq lent1 (cdr (assoc 1 lent)))
- (setq lent10x (cadr lent10))
- (setq lent10y (caddr lent10))
- (if (and
- (= lent1 ent1)
- (= lent10x ent10x)
- (= lent10y ent10y)
- )
- (progn
- (setq ss (ssdel lentname ss))
- (entdel lentname)
- (setq n (1+ n))
- ) ;end of progn
- (setq ii (1+ ii))
- ) ;end of if
- ) ;end of repeat
- (setq ii 0)
- (setq i (sslength ss))
- ) ;end of while
- (if (= n 0)
- (prompt "\n没有重复的文字!!!")
- (progn
- (prin1 "总共删除了")
- (prin1 n)
- (prin1 "个重复的文字")
- (terpri)
- (prompt "\n山东省水利勘测设计院 杨克坤 2003.05.17编")
- )
- )
- (revar)
- )
- [/font]
请大家指教 |