2017-05-24 29 views
-1

私は、2つのポイントをプロンプトしてそれらの間に線を引くための簡単なスクリプトを作成しようとしています。ユーザーがコマンド(ESCにヒット)中にキャンセルすると、プログラム全体が致命的な例外でクラッシュする "promptForPoint(promptMsgEnd)"部分まで完全に正常に動作します。一時的なグラフィックに対する私のアプローチは合理的に正しいですか?キャンセルするユーザーを適切に処理するにはどうすればよいですか?AutoCAD .NET - 一時的なグラフィック..私のアプローチは正しいですか?

 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); 

答えて

0

問題は、ユーザがプログラムの外にキャンセルした場合に処分するためにブロックを「使用」必要とするTransientManagerたokay-アプローチがあるように見えます。

using (TransientManager ctm = TransientManager.CurrentTransientManager)    
{ 
//code here 
} 
関連する問題