In my opinion all you need to do is learn how to use wildcards:
To turn on all layers that are not xrefs (command line):
-layer[enter]
on[enter]
~*|*[enter][enter]
However, in the spirit of swamp helpfulness a quick and dirty ...
(defun TurnLayersOnOff ( spec onIsNotNil / state clayer name )
(if
(eq :vlax-false
(setq state
(if onIsNotNil
:vlax-true
:vlax-false
)
)
)
(setq clayer (getvar "clayer"))
)
(setq spec (strcase spec))
(vlax-for layer
(vlax-get-property
(vlax-get-property
(vlax-get-acad-object)
'ActiveDocument
)
'Layers
)
(if
(wcmatch
(setq name
(strcase
(vlax-get-property
layer
'Name
)
)
)
spec
)
(if clayer
(if (eq clayer name)
(setq clayer nil)
(vlax-put-property
layer
'LayerOn
state
)
)
(vlax-put-property
layer
'LayerOn
state
)
)
)
)
(princ)
)
Still requires knowledge of wildcards for effective use, but now you can precan some stuff on menus ad nauseum.
Some examples ...
;; all layers off
(TurnLayersOnOff "*" nil)
;; all layers on
(TurnLayersOnOff "*" t)
;; all xref layers off
(TurnLayersOnOff "*|*" nil)
;; all xref layers on
(TurnLayersOnOff "*|*" t)
;; all non xref layers off
(TurnLayersOnOff "~*|*" nil)
;; all non xrefs layers on
(TurnLayersOnOff "~*|*" t)
etc.
:D