AutoCAD Map 3D Developer
Welcome to Autodesk’s AutoCAD Map 3D Developer Forums. Share your knowledge, ask questions, and explore popular AutoCAD Map 3D Developer topics.
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

vb.net: erase all queried objects

3 REPLIES 3
Reply
Message 1 of 4
gluckett
1399 Views, 3 Replies

vb.net: erase all queried objects

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
3 REPLIES 3
Message 2 of 4
gluckett
in reply to: gluckett

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
Message 3 of 4
fieldguy
in reply to: gluckett

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.

Message 4 of 4
fieldguy
in reply to: fieldguy

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

 

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

Post to forums  

Autodesk Design & Make Report

”Boost