小弟有一个图里面很多的这种块,怎么才能一次把他的颜色改了。
小弟有一个图里面很多的这种块,怎么才能一次把他的颜色改了。初次接触LISP,大哥们帮帮小弟 现在知道了,所有自己做的块不是0层做的,不是颜色随层的麻烦了吧,呵呵,一个最简单的方法,不用LISP/,就是所有你自己做的块都设成0层,颜色尽量不要设。 是呀,不管在哪个层上,我都不会改,请多指教,告诉我关键已经是这样了,怎么办?救命呀 command:refedit 制块时,颜色用byblock,之后就可以改块的颜色啦!
想怎么改都可以! ;;By 龙龙仔(LUCAS)
(defun C:BLK_COL (/ ENT N NAME SS) (defun GETATT(ENT)
(while (/= (DXF 0 (entget (setq ENT (entnext ENT)))) "SEQEND")
(MODD ENT 62 COL)
)
(princ)
) ;|
(defun GETATT(E / N ATT E1 EN EN1 RSLT)
(setq EN (entget E)
E1 E
)
(if(and (= (DXF 0 EN) "INSERT")
(= (DXF 66 EN) 1)
)
(progn
(setq E1 (entnext E1))
(while (and E1
(setq EN1 (entget E1))
(= (DXF 0 EN1) "ATTRIB")
)
(MODD E1 62 COL)
(setq E1 (entnext E1))
)
)
)
)|; (defun DXF (A1 A2)
(cdr (assoc A1 A2))
) (defun MODD (E EE COL)
(setq E (entget E))
(if(= (assoc EE E) NIL)
(setq E (append E (list (cons EE COL))))
(setq E (subst (cons EE COL) (assoc EE E) E))
)
(entmod E)
) (if (and (setq ENT (car (entsel "\nSelect Block: ")))
(= "INSERT" (DXF 0 (setq ENT (entget ENT))))
)
(progn
(setq COL (acad_colordlg 7))
(setq NAME (assoc 2 ENT))
(if (= (DXF 66 ENT) 1)
(progn
(setqSS (ssget "x"
(list(cons 0 "INSERT")
NAME
)
)
N 0
)
(repeat (sslength SS)
(GETATT (ssname SS N))
(setq N (1+ N))
)
)
)
(setq ENT
(cdr
(assoc
-2
(tblsearch "BLOCK" (cdr NAME))
)
)
)
(while ENT
(MODD ENT 62 COL)
(setq ENT (entnext ENT))
)
(command "_.REGEN")
)
)
(princ)
)
页:
[1]