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

Simulate CommandFlags.Session from form button

5 REPLIES 5
SOLVED
Reply
Message 1 of 6
fieldguy
964 Views, 5 Replies

Simulate CommandFlags.Session from form button

I am working on an application that uses map to query data, then saves the data to a file, and repeat.  It works flawlessly when I use a commandmethod with commandflags.session, But, when I try to run the same code from a form button, I get "drawing is busy".  The command from the form button ignores the commandmethod and the commandflags.  I am guessing that "sendstringtoexecute" would work, but I would prefer to not do it that way.

 

What am I missing?  Is there another way to lock the session? 

 

Here is what I am trying to do.

drawing1 is open and the user presses the button

data is queried and saved as 1.dwg

close and discard drawing1

open a new doc drawing2

data is queried and saved as 2.dwg

close and discard drawing2

open a new doc drawing3

.... 

5 REPLIES 5
Message 2 of 6

You can try using DocumentCollection.ExecuteInApplicationContext method.

Відповідь корисна? Клікніть на "ВПОДОБАЙКУ" цім повідомленням! | Do you find the posts helpful? "LIKE" these posts!
Находите сообщения полезными? Поставьте "НРАВИТСЯ" этим сообщениям!
На ваше запитання відповіли? Натисніть кнопку "ПРИЙНЯТИ РІШЕННЯ" | Have your question been answered successfully? Click "ACCEPT SOLUTION" button.
На ваш вопрос успешно ответили? Нажмите кнопку "УТВЕРДИТЬ РЕШЕНИЕ"


Alexander Rivilis / Александр Ривилис / Олександр Рівіліс
Programmer & Teacher & Helper / Программист - Учитель - Помощник / Програміст - вчитель - помічник
Facebook | Twitter | LinkedIn
Expert Elite Member

Message 3 of 6

That's even better - thank you.  Starting at an empty drawing1, the user presses the button, and the queries start in drawing2.  When it's finished, the user is back at an empty drawing1.

Message 4 of 6
Hallex
in reply to: fieldguy

Show your code, please,

 

~'J'~

_____________________________________
C6309D9E0751D165D0934D0621DFF27919
Message 5 of 6
fieldguy
in reply to: Hallex

Good idea - sorry.  It took a bit of digging and I was in a rush.  Thanks again Alexander and tony t (again and again...).

 

 <CommandMethod("q19")> _
    Sub q_19()
        Dim acdocmgr As acapp.DocumentCollection = acapp.Application.DocumentManager
        'assume drawing1 is active - it does not matter
        acdocmgr.ExecuteInApplicationContext(AddressOf testsub, Nothing)
    End Sub

    Private Sub testsub(ByVal data As Object)
        'in this example data is not used
        Dim cmddiavalue As Integer = CInt(acapp.Application.GetSystemVariable("CMDDIA"))
        acapp.Application.SetSystemVariable("CMDDIA", 0)
        Dim acdocmgr As acapp.DocumentCollection = acapp.Application.DocumentManager
        Dim acdoc As acapp.Document = acdocmgr.MdiActiveDocument
        Dim templatepath As String = "map2diso.dwt"
        acdoc = acdocmgr.Add(templatepath)
        acdocmgr.MdiActiveDocument = acdoc
        'drawing2 is now active
        Using acdoclock As acapp.DocumentLock = acdoc.LockDocument
            Dim currentobjs As New ObjectIdCollection()
            'query and save 
        End Using
        acdoc.CloseAndDiscard()
        acdoc = acdocmgr.Add(templatepath)
        acdocmgr.MdiActiveDocument = acdoc
        'drawing3
        Using acdoclock As acapp.DocumentLock = acdoc.LockDocument
            Dim currentobjs As New ObjectIdCollection()
            'query and save 
        End Using
        acdoc.CloseAndDiscard()
        acapp.Application.SetSystemVariable("CMDDIA", cmddiavalue)
        Autodesk.AutoCAD.Internal.Utils.PostCommandPrompt()
        'return to drawing1 or whatever doc was before
    End Sub

 

Message 6 of 6
Hallex
in reply to: fieldguy

Thanks for sharing your code

Regards,

 

Oleg

_____________________________________
C6309D9E0751D165D0934D0621DFF27919

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