I guess it really should be called ' replace block definitions ', but I've called it ' copy block definitions ' for now.
What it does:
It will allow you to update/replace a block definition within a file, open current/non-current or closed, from another file, open current/non-current or closed. It will let you map attributes definitions between the old/new blocks. It will erase all old attribute references associated with the inserts of said blocks, and replace them with attributes from the new block. It will save drawings where block definitions are updated/replaced only if the drawing is not opened. If the drawing is open, and not current, it will make that drawing active, update the blocks, then switch back to the drawing the routine was called in. You can update the same block in many drawings at once by selecting all drawings you want updated. You can remove the mapping of either block or attribute by right clicking on them in the mapping views.
To call, either build it from the files in the zip, or just ' netload ' the dll file, and type ' CBD ' at the command line.
As always, comments/suggestions/concerns/ideas/criticisms are all welcomed. Thanks in advance. I have tested it, and it works well. The only time I got it to error, was when I tried to update a block in the same file I was getting the new definition from. I'm working on this issue now.
Edit: Issue fixed, with copying/replacing within the same drawing. Needed to commit the actions within the transaction that edited the block definition. Didn't update code in post though.