(defun c:abl(/ bset1 blng1 ba1 bl1 ba2 ba3 go1 bl2 ba5) ; Changes attributes to match the layer of the block (command "undo" "group") (prompt "\nSelect blocks with attributes to match layers: ") (setq bname (getstring "\nEnter block name to change: ")) (setq bset1 (ssget "x" (list (cons 0 "INSERT")(cons 2 bname)))) (if (= bset1 nil) (setq blng1 0) (setq blng1 (sslength bset1)) ) (while (/= blng1 0) (setq ba1 (entget (ssname bset1 0))) (setq bl1 (assoc 8 ba1)) (setq ba2 (cdr (assoc -1 ba1))) (setq ba3 ba1) (setq go1 nil) (while (/= go1 "stop") (setq ba3 (entget (entnext (cdr (assoc -1 ba3))))) (setq ba4 (assoc 0 ba3)) (cond ((equal ba4 (cons 0 "ATTRIB")) (setq bl2 (assoc 8 ba3)) (setq ba5 (subst bl1 bl2 ba3)) (entmod ba5) (entupd ba2) (setq ba5 (subst (cons 62 0) (assoc 62 ba3) ba5)) (entmod ba5) (entupd ba2) ) ((equal ba4 (cons 0 "SEQEND")) (ssdel ba2 bset1) (setq blng1 (1- blng1)) (setq go1 "stop") ) ) ) ) (command "undo" "end") (princ) )