<CommandMethod("ReplaceBlocksFromExternal")> _
Public Sub ReplaceBlocksFromExternal()
Dim db As Database = HostApplicationServices.WorkingDatabase
Dim extDB As New Database(False, True)
extDB.ReadDwgFile("C:\Users\Jeff\Desktop\Test.dwg", FileOpenMode.OpenForReadAndAllShare, True, "")
Using tr As Transaction = db.TransactionManager.StartTransaction
Using extTr As Transaction = extDB.TransactionManager.StartTransaction
Dim bt As BlockTable = db.BlockTableId.GetObject(OpenMode.ForRead)
Dim extBT As BlockTable = extDB.BlockTableId.GetObject(OpenMode.ForRead)
Dim btrCircle As BlockTableRecord = bt("C").GetObject(OpenMode.ForRead)
Dim btrRectangle As BlockTableRecord = extBT("Rec").GetObject(OpenMode.ForRead)
Dim map As New IdMapping
Dim extobjIdColl As New ObjectIdCollection
extobjIdColl.Add(btrRectangle.ObjectId)
db.WblockCloneObjects(extobjIdColl, bt.ObjectId, map, _
DuplicateRecordCloning.Replace, False)
Dim ip As IdPair = map.Item(btrRectangle.ObjectId)
Dim clonedBlock As BlockTableRecord = ip.Value.GetObject(OpenMode.ForRead)
Dim objIdColl As ObjectIdCollection = btrCircle.GetBlockReferenceIds(True, False)
For Each objId As ObjectId In objIdColl
Dim bref As BlockReference = objId.GetObject(OpenMode.ForWrite)
bref.BlockTableRecord = clonedBlock.ObjectId
Next
tr.Commit()
End Using
End Using
End Sub