E.g.
Code:
(defun c:test (/ ss1 en ed lay);Add variables to be local, so it clears from RAM
(setq ss1 (ssget "x" '((2 . "addcad_zz"))))
(setq en (ssname ss1 0))
(setq ed (entget en)) ; Sets ed to the entity data for entity name en.
(setq lay (cdr (assoc 8 ed))) ;Get current layer of object
;; Check if layer is locked
(if (and
(setq lay (tblobjname "LAYER" lay));Get layer entity
(setq lay (entget lay));Get layer data
(> (logand (cdr (assoc 70 lay)) 4) 0);Check if locked
)
(progn
(setq lay (cdr (assoc 2 lay)));Get layer name ... again
(command "-LAYER" "_Unlock" lay "");Unlock layer
)
(setq lay nil);Else set layer name to nil
)
(setq ed
(subst (cons 8 "0")
(assoc 8 ed) ; Changes the layer group in ed.
ed ; to layer 0.
)
)
(entmod ed) ; Modifies entity en's layer in the drawing.
(if lay ;Check if layer was locked
(command "-LAYER" "_LOck" lay "");Lock layer
)
(princ);Ensure that list of data doesn't get written to the command line after finishing
)