(vl-load-com) (defun c:FOO (/ *error* acDoc oBlocks blockName oLayers layerName layersToLock ) (defun *error* (msg) (foreach x layersToLock (vla-put-lock x :vlax-true) ) (if acDoc (vla-endundomark acDoc) ) (cond ((not msg)) ; Normal exit ((member msg '("Function cancelled" "quit / exit abort"))) ; or (quit) ((princ (strcat "\n** Error: " msg " ** "))) ; Fatal error, display it ) (princ) ) (if (ssget "_x" '((0 . "INSERT"))) (progn (vla-startundomark (setq acDoc (vla-get-activedocument (vlax-get-acad-object))) ) (setq oBlocks (vla-get-blocks acDoc)) (setq oLayers (vla-get-layers acDoc)) (vlax-for x (vla-get-activeselectionset acDoc) (if (= :vlax-true (vla-get-isxref (vla-item oBlocks (setq blockName (strcase (vla-get-effectivename x))) ) ) ) (progn (setq oLayer (vla-add oLayers (setq layerName (strcat "_XREF-" blockName)) ) ) (if (and (= :vlax-true (vla-get-lock (setq oLayer (vla-item oLayers (vla-get-layer x))) ) ) (not (vl-position oLayer layersToLock)) ) (progn (setq layersToLock (cons oLayer layersToLock)) (vla-put-lock oLayer :vlax-false) ) ) (vla-put-layer x layerName) ) ) ) ) ) (*error* nil) )