I haven't put anything in to deal with redefinition of blocks (if the contents of blocks change then explosion may not be prevented properly), but this is left as an exercise for the reader. via INSERT), and erasure of ones that are no longer needed. I've added some logic to handle creation of new block references (e.g. The STOPEX command takes a block name and then gathers (and stores) information about a block: its ObjectId, the IDs of its contents and its various block references. So we need to unerase each of the erased When viewing the EXPLODE list, you can select one or more databases or indexes to include or exclude from the profile using X and I on the Cmd line. been cloned, but the blocks have been erased By this point the block contents should not have (Tick the check box) Classic design for Insert dialog. Type the shortcut command X(explode) from the command line and enter. If above is not resolving the issue, try one of following: Use the icon in the modify tab. If (e.GlobalCommandName = "EXPLODE" & _exploding) In AutoCAD for Mac, (see To Specify Whether a Block Reference Can Be Exploded). As the command ends we unerase the block referencesĭelegate( object sender, CommandEventArgs e) Remove the entries we added on BeginDeepClone Set the flag for our CommandEnded handler And this is where we remove the mapping entries block contents have already been clonedĭelegate( object sender, IdMappingEventArgs e) This is where we fool AutoCAD into thinking the we're unerasing we will want to add it
process, so let's check that's not happening When exploding blocks (block references) inserted in an AutoCAD DWG. This is called during as part of the cloning You cannot change the all text attributes using the keyboard or a button on a. If Allow exploding was unchecked in the Block Definition dialog box when the Block was created, the Block. Conversely we need to remove block referencesĭelegate( object sender, ObjectErasedEventArgs e) AutoCAD 2015 Instructor Chapter 21 Answers. If (_blkDefs.Contains(br.BlockTableRecord)) check whether it's for a block we care aboutĭelegate( object sender, ObjectEventArgs e) When a block reference is added, we need to _db.TransactionManager.StartTransaction()