vb.net: erase all queried objects

vb.net: erase all queried objects

gluckett
Collaborator Collaborator
1,978 Views
3 Replies
Message 1 of 4

vb.net: erase all queried objects

gluckett
Collaborator
Collaborator
Hi All, can you help me figure out why I cant' get the enties for WRITE mode with this code. It crashes if I try to open the entity for write?

Dim doc As Document = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument
Dim db As Database = doc.Database
Dim ed As Editor = doc.Editor
Dim psr As PromptSelectionResult = ed.SelectAll()

Dim tr As Transaction = db.TransactionManager.StartTransaction()

Using tr
For Each id As ObjectId In psr.Value.GetObjectIds()

Dim ent As Entity = DirectCast(tr.GetObject(id, OpenMode.ForWrite), Entity)

ent.UpgradeOpen()
ent.Erase()
ent.Dispose()
Next

tr.Commit()

End Using
0 Likes
1,979 Views
3 Replies
Replies (3)
Message 2 of 4

gluckett
Collaborator
Collaborator
so the issue was the prompt ("Save Back to Source Drawing")... just turn it off.


dim mapApi as MapApplication = HostMapApplicationServices.Application
dim proj as ProjectModel = mapApi.ActiveProject
proj.Options.MarkObjectsForEditingWithoutPrompting = true
0 Likes
Message 3 of 4

fieldguy
Advisor
Advisor

This works - thank you.  But, it is far slower than close without saving changes, especially if there are thousands of objects.

 

In 64 bit MAP 3D 2011

 

I am trying to figure out how to code "closeandiscard" but cannot get past the "drawing busy" error.  I have already cloned the queried objects to the dwg file I want to save and detached the drawing set.  Now I want the user to be left with a blank "drawing1".

 

From my reading it looks as if I need to give the active document a name before I can discard it?  It's confusing.

0 Likes
Message 4 of 4

fieldguy
Advisor
Advisor

Commandflags.session was the answer.  This leaves the user with a blank Drawing2 (or higher). 

 

<CommandMethod("q4", CommandFlags.Session)> _
    Sub q_4()
        Dim templatepath As String = "map2diso.dwt"
        Dim acdocmgr As acapp.DocumentCollection = acapp.Application.DocumentManager
        Dim acdoc As acapp.Document = acdocmgr.MdiActiveDocument
        'query 
        'save
        'detach
        acdoc.CloseAndDiscard()
        acdoc = acdocmgr.Add(templatepath)
        acdocmgr.MdiActiveDocument = acdoc
    End Sub

 

0 Likes