wzg356 发表于 2020-10-7 22:14:30

(defun c:tt8 ( / ss en x)
        (setq ss (ssget '((0 . "insert"))))
        (foreach en
                (vl-remove-if
                        '(lambda(x)(/= (type x) 'ENAME))
                        (mapcar 'cadr (ssnamex ss));栏选只要这句即可
                );图元名列表
                (setblk en)
        )
)
;修改块内文字、直线颜色(setblk)
(defun setblk (en / e)       
        (setq e (TBLOBJNAME "block" (cdr(assoc 2(entget en)))))
        (while(setq e (entnext e))
      (cond
                ((= (cdr(assoc 0(entget e))) "TEXT")
                        (setdxf e (cons 62 3));修改颜色为绿色
                )
                  ((= (cdr(assoc 0(entget e))) "LINE")
                 (setdxf e (cons 62 1));修改颜色为红色
                )
                (t nil)
          )
    )
    (entupd en);更新显示
)
;按新的点对表修改组码表更新图元
;(setdxf (car(entsel)) (cons 62 1))
(defun setdxf(en xin / enb)
        (if(assoc (car xin) (setq enb (entget en)))
           (entmod(subst xin (assoc (car xin) enb)enb))
           (entmod (cons xin enb))
        )
)

wzg356 发表于 2020-10-7 22:34:02

zhangcan0515 发表于 2020-10-7 20:49
谢谢老师,测试了一下,还有一点问题就是1不能批量2文字的颜色要变成绿色。我把自己找的源码给老师看看。 ...

这种叫伪源码

zhangcan0515 发表于 2020-10-7 22:36:46

wzg356 发表于 2020-10-7 22:14
(defun c:tt8 ( / ss en x)
        (setq ss (ssget '((0 . "insert"))))
        (foreach en


已经可以了,我知道了问题在那里了,已经修改好了!!!通过这个也知道了自己对判断循环不熟。还是要在这里加强!谢谢老师的帮助!

zhangcan0515 发表于 2020-10-7 22:38:19

wzg356 发表于 2020-10-7 22:34
这种叫伪源码

是的,他给了我一种思路,要是我自己肯定是要通过组码的方法改,这是我目前掌握的
页: 1 [2]
查看完整版本: 求助:如何获取普通图块内直线与文字的组码