展开全部
(defun c:TT3 ( / #kw #k2 )
(setvar "cmdecho" 0)
(setvar "blipmode" 0)
(if (null vlax-dump-object) (vl-load-com) )
(defun ttes5 ()
(initget "T") (setq #kw (entsel "\n请选择文字或输入62616964757a686964616fe4b893e5b19e31333335313162文字(T)[输入文字(T)]: "))
(cond
((= (type #kw) 'LIST)
(if (= (vla-get-objectname (setq #kw (vlax-ename->vla-object (car #kw)))) "AcDbText")
(setq #kw (vla-get-textstring #kw))
(progn
(setq #kw nil) (princ "\n错误的对象,请选择单行文字对象!")
)
)
)
((member #kw (list "t" "T"))
(if (= (setq #kw (getstring "\n请输入要选取的文字: ")) "")
(progn
(setq #kw nil) (princ "\n未输入文字,程序退出!")
)
)
)
) )
(ttes5)
(while #kw
(if #kw (princ (strcat "\n框选包含文字 的对象")) )
(if (setq #kw (ssget "X" (list (cons 0 "TEXT") (cons 1 #kw))))
(progn
(initget "V C S E")
(if (or (= %k1 nil) (= %k1 "S")) (progn (setq #k2 (getkword "\n选择文字或[选择(S)/移动(V)/复制(C)/删除(E)]: ")) (if (= #k2 nil) (setq #k2 "S") ) ) )
(if (= %k1 "V") (progn (setq #k2 (getkword "\n选择文字或[选择(S)/移动(V)/复制(C)/删除(E)]: ")) (if (= #k2 nil) (setq #k2 "V") ) ) )
(if (= %k1 "C") (progn (setq #k2 (getkword "\n选择文字或[选择(S)/移动(V)/复制(C)/删除(E)]: ")) (if (= #k2 nil) (setq #k2 "C") ) ) )
(if (= %k1 "E") (progn (setq #k2 (getkword "\n选择文字或[选择(S)/移动(V)/复制(C)/删除(E)]: ")) (if (= #k2 nil) (setq #k2 "E") ) ) )
(setq #k2 (strcase #k2))
(setq %k1 #k2)
(cond
((member #k2 (list "v" "V")) (command "_.Move" #kw "" pause) )
((member #k2 (list "c" "C")) (command "_.Copy" #kw "" pause) )
((member #k2 (list "e" "E")) (command "_.Erase" #kw "") )
((member #k2 (list "s" "S")) (progn (sssetfirst nil #kw) (pause) ) )
)
)
)
(ttes5) )
)
(prompt "\n《TT3》选文字")
(prin1)
你参考一下这个程序,文字是否相同,要看文字内容,你的是查看(图元名)来比较,这个方法应当行不通。上面的程序是选择一个文字后,就会把相同的文字找出来。你增加条件,就可以把字体的高度限制了,颜色也可以增加。