Have not tested but if you are bringing in from external database use WblockcloneObjects
using file C:\Users\Jeff\Desktop\Test.dwg
and a block named "C"----- a cirlce with a field for drawing name and path
<CommandMethod("ImportBlock")> _
Public Sub ImportBlock()
Dim doc As Document = Application.DocumentManager.MdiActiveDocument
Dim db As Database = doc.Database
Dim ed As Editor = doc.Editor
Dim extDB As New Database(False, True)
extDB.ReadDwgFile("C:\Users\Jeff\Desktop\Test.dwg", FileOpenMode.OpenForReadAndAllShare, True, "")
Using trx As Transaction = db.TransactionManager.StartTransaction
Using extTrx As Transaction = extDB.TransactionManager.StartTransaction
Dim bt As BlockTable = db.BlockTableId.GetObject(OpenMode.ForRead)
Dim extBT As BlockTable = extDB.BlockTableId.GetObject(OpenMode.ForRead)
Dim mdlSpace As BlockTableRecord = bt(BlockTableRecord.ModelSpace).GetObject(OpenMode.ForRead)
Dim btrCircle As BlockTableRecord = extBT("C").GetObject(OpenMode.ForRead)
Dim map As New IdMapping
Dim extobjIdColl As New ObjectIdCollection
extobjIdColl.Add(extBT("C"))
db.WblockCloneObjects(extobjIdColl, bt.ObjectId, map, DuplicateRecordCloning.Replace, False)
Dim btrId As ObjectId = bt("C").GetObject(OpenMode.ForRead).ObjectId
mdlSpace.UpgradeOpen()
Dim bref As New BlockReference(Point3d.Origin, btrId)
mdlSpace.AppendEntity(bref)
trx.AddNewlyCreatedDBObject(bref, True)
Dim exploeObjs As New DBObjectCollection
bref.Explode(exploeObjs)
For Each ent As Entity In exploeObjs
mdlSpace.AppendEntity(ent)
trx.AddNewlyCreatedDBObject(ent, True)
Next
bref.Erase()
trx.Commit()
End Using
End Using
End Sub