Sorry I forgot to add the code I was talking about
;;; Change Block Version 2.3.1
;;; Copyright (C) 1997-2006 by K.E. Blackie
;;;
;;; You may copy, modify, use or distribute this code provided that
;;; the copyright notice remains in place and that no monetary
;;; consideration be given for the use or transfer of such code.
;;;;
;;;;-------------------------------------------------
;;; The function CB will replace a selected block reference(s)
;;; with another block reference that is already defined in
;;; the drawing. All attributes will be retained until/unless
;;; attsync is used.
;;;
;;
;; Modified for style by kwb@theswamp 20060303
;;
(defun C:CB (/ intCounter lstOldReference ssBlocks strNewBlockName)
;;
;; prompt the user to select items, filtering for blocks only
;;
(prompt "\nSelect BLOCKS to be replaced.")
(setq ssBlocks (ssget '((0 . "INSERT")))
strNewBlockName (getstring t "\nReplacement Block Name: ")
intCounter 0
)
;; step through the selection set of blocks
;; get the entity list and substitute the new block name for the old block name
;; and update the entity with entmod
;;
(repeat (sslength ssBlocks)
(setq lstOldReference (entget (ssname ssBlocks intCounter)))
(entmod (subst (cons 2 strNewBlockName)
(assoc 2 lstOldReference)
lstOldReference
)
)
(setq intCounter (1+ intCounter))
)
;; Remind about Syncronisation .. don't leave anything on the command line
;;
(princ "\nAttsync may be required for Attributed Blocks")
(princ)
)
This code was posted by Kerry Brown in the above link