(DEFUN COPY-ATT (BLOCKNAME FROMatt TOatt / VALUE i l sset iBLK) (setq sset (ssget "x" (list (cons 2 BLOCKNAME)))) (if (= sset nil)(setq l 0)) (setq l (sslength sset)) (setq i 0) (repeat l (setq iBLK (ssname sset i)) (SETQ VALUE (GET-ATT FROMatt iBLK)) (PUT-ATT iBLK TOatt VALUE) (setq i (1+ i)) ) ) (DEFUN GET-ATT (tag blk / val enx) (WHILE (AND (NULL val) (= "ATTRIB" (CDR (ASSOC 0 (SETQ enx (ENTGET (SETQ blk (ENTNEXT blk))))))) ) (IF (= (STRCASE tag) (STRCASE (CDR (ASSOC 2 enx)))) (SETQ val (CDR (ASSOC 1 enx))) ) ) ) (DEFUN PUT-ATT (blk tag val / end enx) (WHILE (AND (NULL end) (= "ATTRIB" (CDR (ASSOC 0 (SETQ enx (ENTGET (SETQ blk (ENTNEXT blk)))))))) (IF (= (STRCASE tag) (STRCASE (CDR (ASSOC 2 enx)))) (IF (ENTMOD (SUBST (CONS 1 val) (ASSOC 1 enx) enx)) (PROGN (ENTUPD blk) (SETQ end val)) ) ) ) ) (DEFUN C:COPYCAT2 (/ BLOCKNAME FROMatt TOatt) (SETQ BLOCKNAME (GETSTRING "\n\t=> Block name? ") FROMatt (GETSTRING "\n\t=> FROM attribute tag? ") TOatt (GETSTRING "\n\t=> TO attribute tag? ") ) (IF (TBLSEARCH "BLOCK" BLOCKNAME) (COPY-ATT BLOCKNAME FROMatt TOatt) (PRINC "\n BLOCK NOT FOUND")) )