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
Solved! Go to Solution.
Solved by SENL1362. Go to 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();
}
}
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.