Originally Posted by
marko_ribar
Code:
(defun c:chABCDEFlaycol ( / lnames obj )
(vl-load-com)
(setq lnames '("A" "B" "C" "D" "E" "F"))
(foreach lname lnames
(if (setq obj (vlax-ename->vla-object (tblobjname "LAYER" lname)))
(cond
( (eq lname "A")
(vlax-put-property obj 'Color 5)
)
( (eq lname "B")
(vlax-put-property obj 'Color 1)
)
( (eq lname "C")
(vlax-put-property obj 'Color 7)
)
( (eq lname "D")
(vlax-put-property obj 'Color 7)
)
( (eq lname "E")
(vlax-put-property obj 'Color 7)
)
( (eq lname "F")
(vlax-put-property obj 'Color 2)
)
)
)
)
(princ)
)
HTH, M.R.
Slightly faster adaptation, which also supports UNDO functionality... Can also be easily ported to support ODBX with Document as parameter:
Code:
(vl-load-com)
(defun c:FOO (/ *error* acDoc layerName)
(defun *error* (msg)
(if acDoc
(vla-endundomark acDoc)
)
(cond ((not msg)) ; Normal exit
((member msg '("Function cancelled" "quit / exit abort"))) ; <esc> or (quit)
((princ (strcat "\n** Error: " msg " ** "))) ; Fatal error, display it
)
(princ)
)
(vla-startundomark
(setq acDoc (vla-get-activedocument (vlax-get-acad-object)))
)
(vlax-for x (vla-get-layers acDoc)
(cond
((vl-position (setq layerName (vla-get-name x)) '("A"))
(vla-put-color x 5)
)
((vl-position layerName '("B")) (vla-put-color x 1))
((vl-position layerName '("C" "D" "E")) (vla-put-color x 7))
((vl-position layerName '("F")) (vla-put-color x 2))
)
)
(*error* nil)
)
Cheers