Refresh drawing when modal form is running

Refresh drawing when modal form is running

Anonymous
Not applicable
4,576 Views
2 Replies
Message 1 of 3

Refresh drawing when modal form is running

Anonymous
Not applicable

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

 

0 Likes
Accepted solutions (1)
4,577 Views
2 Replies
Replies (2)
Message 2 of 3

SENL1362
Advisor
Advisor
Accepted solution

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

Anonymous
Not applicable

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.

0 Likes