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