- 积分
- 29898
- 明经币
- 个
- 注册时间
- 2019-11-19
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
本帖最后由 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(entget E))) "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(entget E))) "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))
)
)
|
|