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

Unload Xref in .NET

3 REPLIES 3
SOLVED
Reply
Message 1 of 4
architectOfIdeas
820 Views, 3 Replies

Unload Xref in .NET

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,
Drew

3 REPLIES 3
Message 2 of 4

With a little more digging into some reference material; perhaps I should be asking whether anyone has an example of how they use XrefReloadOperation?

Message 3 of 4

Have you had a look at Database.UnloadXrefs?

Message 4 of 4

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
colObjId.Add(acBlkTblRec.ObjectId)

 

'unload the xref in the collection
acCurDb.UnloadXrefs(colObjId)

 

'document the change
acDocEd.WriteMessage(vbLf & strName & " unloaded")

 

End If

 

End If

 

Next

 

'commit the changes and dispose of the transaction
acTrans.Commit()

 

End Using

 

End Sub

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