C# AutoCAD.NET-瞬态图形。。我的方法正确吗?
我正在尝试编写一个简单的脚本来提示两点,并在两点之间画一条线。它工作完全正常,直到出现“promptForPoint(promptMsgEnd)”部分,如果用户在命令执行期间取消(点击ESC),整个程序就会崩溃,并出现致命的异常。我对瞬态图形的处理方法是否合理正确?如何正确处理用户取消C# AutoCAD.NET-瞬态图形。。我的方法正确吗?,c#,.net,autocad,C#,.net,Autocad,我正在尝试编写一个简单的脚本来提示两点,并在两点之间画一条线。它工作完全正常,直到出现“promptForPoint(promptMsgEnd)”部分,如果用户在命令执行期间取消(点击ESC),整个程序就会崩溃,并出现致命的异常。我对瞬态图形的处理方法是否合理正确?如何正确处理用户取消 IntegerCollection ints = new IntegerCollection(new int[] { }); TransientManager ctm = Tran
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);
看起来这个方法还可以-问题是TransientManager,它需要一个“使用”块来处理用户取消程序的事件
using (TransientManager ctm = TransientManager.CurrentTransientManager)
{
//code here
}