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

Refresh drawing when modal form is running

2 REPLIES 2
SOLVED
Reply
Message 1 of 3
lukasz.taraszka
4116 Views, 2 Replies

Refresh drawing when modal form is running

Hello everyone

 

Is it possible to refresh drawing content when modal form is running?

 

I placed sample project in attachment.


There is simple form with only one button.

 

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Class1.DrawLineOnScreen()
    End Sub

 

After button is pressed, application prompting user for picking 2 points, and draw a line (based on picked points).

 

Public Shared Sub DrawLineOnScreen()
        Dim editor As Editor = Application.DocumentManager.MdiActiveDocument.Editor

        Dim pFirst As PromptPointOptions = New PromptPointOptions("First point: ")
        Dim rFirst As PromptPointResult = editor.GetPoint(pFirst)

        Dim pSecond As PromptPointOptions = New PromptPointOptions("Second point: ")
        Dim rSecond As PromptPointResult = editor.GetPoint(pSecond)

        If rFirst.Status = PromptStatus.OK AndAlso rSecond.Status = PromptStatus.OK Then

            Dim line As Line = New Line(rFirst.Value, rSecond.Value)

            Dim tr As Transaction =                Application.DocumentManager.MdiActiveDocument.TransactionManager.StartTransaction
            Using tr
                Dim modelSpace As BlockTableRecord = tr.GetObject(Application.DocumentManager.MdiActiveDocument.Database.CurrentSpaceId, OpenMode.ForWrite)
                modelSpace.AppendEntity(line)
                tr.AddNewlyCreatedDBObject(line, True)
                tr.Commit()
            End Using

        End If
    End Sub

 

Problem is that line had been added to transaction (to Model Space block table record) but nothing change on a drawing. Line will appear on a drawing after closing the form.

 

In opposite situation, without using modal form (only console) everyting works fine.

 

<CommandMethod("DrawLine", CommandFlags.Modal)> _
        Public Sub DrawLine()
            Class1.DrawLineOnScreen()
        End Sub

 

2 REPLIES 2
Message 2 of 3
SENL1362
in reply to: lukasz.taraszka

did you tried editor.Regen()

 

c# sample:

       private void Select_Click(object sender, EventArgs e)
        {
            Document doc = Acad.DocumentManager.MdiActiveDocument;
            Database db = doc.Database;
            Editor ed = doc.Editor;
            using (EditorUserInteraction preventFlikkering = ed.StartUserInteraction(this))
            {
                PromptPointOptions getPntPrmpt = new PromptPointOptions("\nGet Center");
                //Modal Form: will hide because of ed.GetPoint
                PromptPointResult getPnt = ed.GetPoint(getPntPrmpt);
                ed.WriteMessage("\nPoint: {0}", getPnt.Value);
                ed.Regen();
                preventFlikkering.End();
            }
        }

Message 3 of 3
lukasz.taraszka
in reply to: SENL1362

No, I have no idea about this method. I tried UpdateScreen but it didn't work.

 

Your post resolved my problem. 

 

Thank You very much.

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