In searching some other threads, I see this was discussed, but I can't find any reference to a solution in VB.
I was attempting to change the .IsUnloaded boolean flag on a Block Table Record (as the Developer Help does show this as read/write), but I see that as it changes the flag, even a .Commit won't actually unload the Xref.
Does anyone have some VB code as an example of how to unload an Xref programmatically? Or do I have to resort to feeding the command line some strings?
Thanks in advance,
Solved! Go to Solution.
I have now!! Thanks for the help as I didn't know this method existed.
A basic example of how I got it to work:
Public Sub unloadBaseXref(ByVal strName As String)
'get the active document, editor and database
Dim acDoc As Document = Application.DocumentManager.MdiActiveDocument
Dim acDocEd As Editor = acDoc.Editor
Dim acCurDb As Database = acDoc.Database
'start a transaction
Using acTrans As Transaction = acCurDb.TransactionManager.StartTransaction
'create a collection to house the xref object id
Dim colObjId As ObjectIdCollection = New ObjectIdCollection
'open the block table for read
Dim acBlkTbl As BlockTable = acTrans.GetObject(acCurDb.BlockTableId, OpenMode.ForRead)
'step through each record in the table
For Each acObjId As ObjectId In acBlkTbl
'open the block table record for read
Dim acBlkTblRec As BlockTableRecord = acTrans.GetObject(acObjId, OpenMode.ForRead)
'if the current block matches the supplied string
If acBlkTblRec.Name Like strName Then
'and if the current block is loaded
If acBlkTblRec.IsUnloaded = False Then
'add the object id to the collection
'unload the xref in the collection
'document the change
acDocEd.WriteMessage(vbLf & strName & " unloaded")
'commit the changes and dispose of the transaction
Log into access your profile, ask and answer questions, share ideas and more. Haven't signed up yet? Register
Start with some of our most frequented solutions to get help installing your software.