你选择的点它并不一定在线上!

     using (var view = ed.GetCurrentView())
     {
      pt3 = curve.GetClosestPointTo(pt3, view.ViewDirection, false);
     }

因此需要先转换一下,求出最近点。

另外,如果curve是块中的线,则需要先将pt3转换成块中点,再来求最近点。

     var xform = sh.ResultNestedPrompt.Transform.Inverse() * ed.CurrentUserCoordinateSystem;
     pt3 = pt3.TransformBy(xform);

下图就是没有转换前的情况:

原文地址:https://www.cnblogs.com/swtool/p/12550412.html