I've got a lisproutine blockswap that replacec one block for another. (see below) It works great, but it is having trouble with attributes. As long as the block already has attributes than you can replace the block for another and the blocks keeps the attribute with the value. Now I have a existing block with a attribute and I want it to replace it with another block, but with 2 attributes (1 attribute extra). The problem is that it changes the block, keeps the value of the attribute, but doesn't add the seccond attribute. I've got 430 blocks to do that way. What is the best method to do this? greetings Laura (defun C:BLKSWAP () (command "zoom" 1xp) ; ingebouwde undo-functie (prompt " BLKSWAP - Replace one block for another") (setq SELECTION_SET (ssget)) (setq NO_OF_ITEMS (sslength SELECTION_SET)) (setq BLKNAME (getstring " Enter the name of the new block : ")) (setq INDEX 0) (repeat NO_OF_ITEMS (setq ENTITY_NAME (ssname SELECTION_SET INDEX)) (setq ENTITY_LIST (entget ENTITY_NAME)) (setq ENTITY_TYPE (cdr (assoc 0 ENTITY_LIST))) (if (equal ENTITY_TYPE "INSERT") (progn (setq OLD_BLOCK (assoc 2 ENTITY_LIST)) (setq NEW_BLOCK (cons 2 BLKNAME)) (setq NEW_ENTITY_LIST (subst NEW_BLOCK OLD_BLOCK ENTITY_LIST) ) (entmod NEW_ENTITY_LIST) ) ) (setq INDEX (1+ INDEX)) ) (prompt " Program complete.") (princ) )