2017-05-24 1 views
-1

Ich versuche ein einfaches Skript zu schreiben, um zwei Punkte einzugeben und die Linie zwischen ihnen zu zeichnen. Es funktioniert ganz gut, bis zum Teil "promptForPoint (promptMsgEnd)", wo, wenn der Benutzer während des Befehls (ESC bricht) bricht das gesamte Programm mit einer schwerwiegenden Ausnahme abstürzt. Ist mein Ansatz für transiente Grafiken einigermaßen korrekt? Wie gehe ich mit der Benutzerabmeldung richtig um?AutoCAD .NET - Transient Graphics .. ist meine Vorgehensweise korrekt?

 IntegerCollection ints = new IntegerCollection(new int[] { }); 
     TransientManager ctm = TransientManager.CurrentTransientManager; 
     Line l = new Line(startPoint, new Point3d(startPoint.X + 0.00000001, startPoint.Y, startPoint.Z)); 
     ctm.AddTransient(l, TransientDrawingMode.DirectShortTerm, 128, ints); 

     //handle event - pointer movement 
     PointMonitorEventHandler handler = 
      delegate (object sender, PointMonitorEventArgs e) 
      { 
       l.EndPoint = e.Context.RawPoint; 
       ctm.UpdateTransient(l, ints); 
      }; 

     //add handler for visual 
     _editor.PointMonitor += handler; 

     //prompt for point 
     ppr = promptForPoint(promptMsgEnd); 

     //remove handler and erase 
     _editor.PointMonitor -= handler; 
     ctm.EraseTransient(l, ints); 

Antwort

0

Sieht aus wie der Ansatz ist okay- die Frage TransientManager war, die einen „mit“ Block in dem Fall zu entsorgen muss der Benutzer aus dem Programm abbricht.

using (TransientManager ctm = TransientManager.CurrentTransientManager)    
{ 
//code here 
}