品茗新秀 发表于 2014-4-16 00:13:50

求点选一文字,框选一定区域内的文字,如果该文字与点选文字相同

本帖最后由 品茗新秀 于 2014-4-16 00:15 编辑

求点选一文字,框选一定区域内的文字,如果该文字与点选文字相同,则相同文字变红色。

xyp1964 发表于 2014-4-16 00:13:51

;; 需要e派工具箱(XCAD)的支持:http://yunpan.cn/QXQKsW9gAPmpF
(defun c:tt ()
(if (and (setq s1 (car (entsel "\n点选文字: ")))
         (xyp-etype s1 "text")
      )
    (if (setq ss (ssget (list '(0 . "text") (cons 1 (xyp-DXF 1 s1)))))
      (xyp-SubUpd ss 62 1)
    )
)
(princ)
)

819534890 发表于 2014-4-16 00:46:09

哇,楼主好大方。好像不难。
楼主指的相同是什么概念?只是文字内容一样,还是文字完全一样(包括全部属性)?

ZZXXQQ 发表于 2014-4-16 07:31:08

(defun c:tt ()
(setvar "CMDECHO" 0)
(if (and (setq s1 (entsel "\n选择文字: "))
          (setq ent (entget(car s1)))
                                        (wcmatch (cdr(assoc 1 ent)) "*TEXT")) (progn
(princ "\n窗选文字: ")
        (if (setq ss (ssget (list '(0 . "*TEXT") (assoc 1 ent))))
       (command "_.CHPROP" ss "" "C" 1 "")
        )
))
(setvar "CMDECHO" 1)
(princ)
)

xyp1964 发表于 2014-4-16 07:31:35

(defun c:tt ()
(defun dxf (code s1) (cdr (assoc code (entget s1))))
(setq i -1)
(if (and (setq s1 (car (entsel "\n点选文字: ")))
         (= (DXF 0 s1) "TEXT")
      )
    (if(setq ss (ssget (list '(0 . "text") (cons 1 (DXF 1 s1)))))
      (while (setq s1 (ssname ss (setq i (1+ i))))
      (vla-put-color (vlax-ename->vla-object s1) 1)
      )
    )
)
(princ)
)

bai2000 发表于 2014-4-16 10:15:57

定起来

品茗新秀 发表于 2014-4-16 18:59:21

如果能框选目标文字,再框选一定区域内的文字,如果该文字与框选文字相同,则相同文字变色。并用不同颜色区分,相同文字中的不同种类。

品茗新秀 发表于 2014-4-16 19:08:26

xyp1964 发表于 2014-4-16 07:31 static/image/common/back.gif



如果能框选目标文字,再框选一定区域内的文字,如果该文字与框选文字相同,则相同文字变色。并用不同颜色区分,相同文字中的不同种类。

lyqiezi 发表于 2014-4-16 19:36:22

也不难啊,目标文字的颜色用 i 变量确定,再进入子程序查找相同文字

bai2000 发表于 2014-4-16 19:43:42

可惜不支持天正文字
页: [1] 2 3
查看完整版本: 求点选一文字,框选一定区域内的文字,如果该文字与点选文字相同