LISP CAD求高手帮忙看看代码!实现图内文字筛选是否有重复文字?

defunc:fr();定义AutoCAD命令行命令(setqss(ssget"X"'((0."TEXT")(-4."=")(62.1)(40.10))));搜索红色且字... defun c:fr();定义AutoCAD命令行命令

(setq ss (ssget "X" '((0 . "TEXT") (-4 . "=")(62 . 1) (40 . 10))));搜索红色且字高为10的文字

(setq n (sslength ss));统计循环次数
(setq n (- n 1))
(repeat n
(setq #s (car ss));取第一个元素
(setq ss (cdr ss));删除第一个元素
(setq w (assoc #s ss));搜索是否还有第一个元素,如果没有了第一个元素即没有相同的文字

(if(/= w nil);

(princ "\n有重复号码")
)
)
(princ)

)

另外现在只能实现是否有重复,但不能显示重复文字,能否高手帮忙看看这段代码有什么问题,如果可以帮忙完善一下功能!谢谢!!!
展开
 我来答
朱06CAD
2014-03-15 · 知道合伙人软件行家
朱06CAD
知道合伙人软件行家
采纳数:4172 获赞数:18068
高中,熟悉AutoCAD。会autolisp及VBA程序。

向TA提问 私信TA
展开全部
(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请选择文字或输入文字(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框选包含文字 < " #kw " >的对象")) )
  (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)]: <选择(S)> ")) (if (= #k2 nil) (setq #k2 "S") ) ) )
    (if (= %k1 "V") (progn (setq #k2 (getkword "\n选择文字或[选择(S)/移动(V)/复制(C)/删除(E)]: <移动(V)> ")) (if (= #k2 nil) (setq #k2 "V") ) ) )
    (if (= %k1 "C") (progn (setq #k2 (getkword "\n选择文字或[选择(S)/移动(V)/复制(C)/删除(E)]: <复制(C)> ")) (if (= #k2 nil) (setq #k2 "C") ) ) )
    (if (= %k1 "E") (progn (setq #k2 (getkword "\n选择文字或[选择(S)/移动(V)/复制(C)/删除(E)]: <删除(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)

你参考一下这个程序,文字是否相同,要看文字内容,你的是查看(图元名)来比较,这个方法应当行不通。上面的程序是选择一个文字后,就会把相同的文字找出来。你增加条件,就可以把字体的高度限制了,颜色也可以增加。

greatlmy4
2014-03-15 · TA获得超过1330个赞
知道小有建树答主
回答量:1446
采纳率:76%
帮助的人:312万
展开全部
这段程序应该起不了你说的作用。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式