Assuming I've correctly understood, please try the following:- (defun c:layerchange ( / enx idx itm lay lst new old sel ) (while (and (/= "" (setq new (getstring t "\nSpecify new layer: "))) (not (snvalid new))) (princ "\nLayer name invalid.") ) (if (and (/= "" new) (setq sel (ssget "_:L" '((0 . "~VIEWPORT"))))) (repeat (setq idx (sslength sel)) (setq enx (entget (ssname sel (setq idx (1- idx)))) old (assoc 8 enx) ) (if (setq itm (cdr (assoc old lst))) (setq enx (append enx itm)) (setq lay (entget (tblobjname "layer" (cdr old))) lst (cons (list old (assoc 62 lay) (assoc 6 lay) (assoc 370 lay)) lst) enx (append enx (cdar lst)) ) ) (entmod (subst (cons 8 new) old enx)) ) ) (princ))
|