Hi
I am quite new to using the vb.net implementation of Autocad, but I have made some good progress so far. I have written a function that copies a block from an external dwg into the block table of the active drawing. The code works perfectly in AutoCad 2007, but when I try and migrate it to Autocad 2009, I get an error of 'ebrokenhandle'
Is there something I have to change to get this working in 2009?
here is the code:
Function CloneBlock(ByVal FromFile As String, ByVal BlockName As String, ByVal b1cloned As Boolean)
Dim myDWG As Autodesk.AutoCAD.ApplicationServices.Document
Dim myDB As New Autodesk.AutoCAD.DatabaseServices.Database(False, True)
Dim myTransMan As DatabaseServices.TransactionManager
Dim myTrans As DatabaseServices.Transaction
myDWG = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument
myDB = myDWG.Database
myTransMan = myDWG.TransactionManager
myTrans = myTransMan.StartTransaction
Dim YourDB As DatabaseServices.Database
Dim YourTransMan As DatabaseServices.TransactionManager
Dim YourTrans As DatabaseServices.Transaction
YourDB = New DatabaseServices.Database
YourDB.ReadDwgFile(FromFile, IO.FileShare.Read, True, "")
YourTransMan = YourDB.TransactionManager
YourTrans = YourTransMan.StartTransaction
Dim YourBlockT As DatabaseServices.BlockTable
Dim YourBlockTR As DatabaseServices.BlockTableRecord
YourBlockT = YourDB.BlockTableId.GetObject(DatabaseServices.OpenMode.ForRead)
YourBlockTR = YourBlockT(BlockName).GetObject(DatabaseServices.OpenMode.ForRead)
Dim myBlockT As DatabaseServices.BlockTable
myBlockT = myDB.BlockTableId.GetObject(DatabaseServices.OpenMode.ForWrite)
Dim myMap As New DatabaseServices.IdMapping
Dim myObjs As New DatabaseServices.ObjectIdCollection
myObjs.Add(YourBlockTR.ObjectId)
myDB.WblockCloneObjects(myObjs, myBlockT.ObjectId, myMap, _
DatabaseServices.DuplicateRecordCloning.Replace, False)
myTrans.Commit() : myTrans.Dispose() : myTransMan.Dispose()
YourTrans.Dispose() : YourTransMan.Dispose() : YourDB.Dispose()
Return b1cloned
End Function
thanks!!
Steve