AutoCAD .NET - Transient Graphics ..我的方法是正确的吗?

时间:2017-05-24 00:20:21

标签: c# .net autocad

我试图编写一个简单的脚本来提示两个点并在它们之间画线。它完全正常,直到部分" promptForPoint(promptMsgEnd)"如果用户在命令期间取消(命中ESC),则整个程序会因致命异常而崩溃。我对瞬态图形的处理方法是否合理正确?如何正确处理用户取消?

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

1 个答案:

答案 0 :(得分:0)

看起来方法还可以 - 问题是TransientManager,如果用户取消程序,需要使用“使用”块进行处理。

using (TransientManager ctm = TransientManager.CurrentTransientManager)            
{
//code here
}
相关问题