.NET
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

import block from external dwg works acad 2007, but not acad 2009

0 REPLIES 0
Reply
Message 1 of 1
halesteven
228 Views, 0 Replies

import block from external dwg works acad 2007, but not acad 2009

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
0 REPLIES 0

Can't find what you're looking for? Ask the community or share your knowledge.

Post to forums  

Autodesk DevCon in Munich May 28-29th


Autodesk Design & Make Report

”Boost