老大们帮看看 这个块内特定颜色的线 变换颜色 为什么不行
本帖最后由 xj6019 于 2021-1-6 08:58 编辑我想实现的是按块内不同颜色先区分对象后再修改块内的颜色,将块内的8号色的线,换成251号色。
将不是8号色的线,换成225号色。并对嵌套块可行。
红色部分是我添加想修改的代码
求指教下面的改法为什么不行,搞不懂了。。
(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 251));修改颜色
)
;((= (cdr(assoc 0(entget e))) "LINE")原代码
((= (cdr(assoc 0(entgetE))) "CIRCLE,ELLIPSE,*LINE,*POLYLINE,SPLINE,ARC,LWPOLYLINE")
(setq E (ssget "P" '((0 . "CIRCLE,ELLIPSE,*LINE,*POLYLINE,SPLINE,ARC,LWPOLYLINE") (-4 . "=") (62 . 8) )))
(setdxf e (cons 62 251));将8号色所有的线修改颜色为251
)
((= (cdr(assoc 0(entgetE))) "CIRCLE,ELLIPSE,*LINE,*POLYLINE,SPLINE,ARC,LWPOLYLINE")
(setq E (ssget "P" '((0 . "CIRCLE,ELLIPSE,*LINE,*POLYLINE,SPLINE,ARC,LWPOLYLINE") (-4 . "/=") (62 . 8) )))
(setdxf e (cons 62 225));将不是8号色所有的线修改颜色为225
)
(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))
)
)
思路不对,对了其实很简单
(defun setblk (en / e)
(setq e (TBLOBJNAME "block" (cdr(assoc 2(entget en)))))
(setq lst '("CIRCLE" "ELLIPSE" "LINE" "POLYLINE" "SPLINE""ARC" "LWPOLYLINE"))
(while(setq e (entnext e))
(cond
((= (cdr(assoc 0(entget e))) "TEXT")(setdxf e (cons 62 251)))
((and (member (cdr(assoc 0(entgetE))) lst) (= (cdr (assoc 62 (entgetE))) 8)) (setdxf e (cons 62 251)))
((and (member (cdr(assoc 0(entgetE))) lst) (/= (cdr (assoc 62 (entgetE))) 8)) (setdxf e (cons 62 225)))
(t nil)
)
)
(entupd en);更新显示
) 谢谢给改正思路,我再研究研究,好像对有的块管用,有的不管用,我再研究研究看看,是怎么回事 看这个贴:
http://bbs.mjtd.com/thread-182904-1-1.html panliang9 发表于 2021-1-7 09:23
看这个贴:
http://bbs.mjtd.com/thread-182904-1-1.html
谢谢。
非常感谢分享经典好用的代码 好好研究研究
页:
[1]