2017-05-24 3 views
-1

두 점을 물어보고 그 사이에 선을 그리는 간단한 스크립트를 작성하려고합니다. "promptForPoint (promptMsgEnd)"부분까지 사용자가 명령을 취소하면 (ESC 조회) 전체 프로그램이 치명적인 예외와 충돌합니다. 일시적인 그래픽에 대한 내 접근 방식이 합리적으로 올바른가요? 취소하는 사용자를 올바르게 처리하려면 어떻게해야합니까? 접근 문제는 사용자가 프로그램의 상쇄시 폐기하는 "사용"블록을 필요 TransientManager이었다 해알 겠어 - 꽉처럼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

보인다.

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