@amber.baysinger
I have another proposal. You can create set of helper functions that will turn on or off set of layer (one or more of them separated with ",". For each set of layers you should have on and off function
(defun c:loff( / string_to_list collectLayerObjects getlayernames acad _off layercollection layernames eo str)
(defun string_to_list ( str del / pos )
(if (setq pos (vl-string-search del str))
(cons (substr str 1 pos) (string_to_list (substr str (+ pos 1 (strlen del))) del))
(list str)
)
)
(defun collectLayerObjects ( / ret) (reverse (vlax-for lay (vlax-get (vla-get-activedocument (vlax-get-acad-object)) 'Layers) (setq ret (cons (cons (vlax-get lay 'Name) lay)ret)))))
(defun getlayernames nil (mapcar 'car (collectLayerObjects)))
(setq acad (vla-get-activedocument (vlax-get-acad-object)))
(setq _off (string_to_list "GIRDER,test1,test2" ","));PUT LAYERNAMES HERE - CASE SENSITIVE
(setq layercollection (collectLayerObjects))
(setq str "")
(setq layernames(getlayernames))
(foreach e _off
(cond
((member e layernames)
(setq eo (cdr (assoc e layercollection)))
(vlax-put eo 'LayerOn 0)
(setq str (strcat str e " "))
)
)
)
(princ (strcat "\nLayers " str "have been turned off!"))
(princ)
)
(defun c:lon( / string_to_list collectLayerObjects getlayernames acad _on layercollection layernames eo str)
(defun string_to_list ( str del / pos )
(if (setq pos (vl-string-search del str))
(cons (substr str 1 pos) (string_to_list (substr str (+ pos 1 (strlen del))) del))
(list str)
)
)
(defun collectLayerObjects ( / ret) (reverse (vlax-for lay (vlax-get (vla-get-activedocument (vlax-get-acad-object)) 'Layers) (setq ret (cons (cons (vlax-get lay 'Name) lay)ret)))))
(defun getlayernames nil (mapcar 'car (collectLayerObjects)))
(setq acad (vla-get-activedocument (vlax-get-acad-object)))
(setq _on (string_to_list "GIRDER,test1,test2" ",")) ;PUT LAYERNAMES HERE - CASE SENSITIVE
(setq layercollection (collectLayerObjects))
(setq str "")
(setq layernames(getlayernames))
(foreach e _on
(cond
((member e layernames)
(setq eo (cdr (assoc e layercollection)))
(vlax-put eo 'LayerOn -1)
(setq str (strcat str e " "))
)
)
)
(princ (strcat "\nLayesrs " str "have been turned on!"))
(princ)
)
To create functions with another name just change function name for example change c:lon c:loff to c:bon c:boff (ie. function name after c:)
In each On OF function you have to change a line
"GIRDER,test1,test2"
with desired names of layers
"LAYER1,layer2,SOME_LAYER"
If you use standard layers name this can speed up your work
Miljenko Hatlak

Did you find this post helpful? Feel free to Like this post.
Did your question get successfully answered? Then click on the ACCEPT SOLUTION button.