C# 在AutoCAD中将顶点添加到闭合多段线

C# 在AutoCAD中将顶点添加到闭合多段线,c#,autocad,objectarx,C#,Autocad,Objectarx,我正在尝试通过AutoCAD.Net API将新顶点插入现有闭合多段线 我有一种将顶点插入多段线的方法。但对于下面所示的情况,这不适用于闭合多段线。如果点位于多段线的最后一条边上,代码将失败。有人能看出问题所在吗 public void AddVertexOnPolyline(Point3d addPoint,Polyline editPolyline) { Document acDoc = Autodesk.AutoCAD.ApplicationServices.Core.A

我正在尝试通过AutoCAD.Net API将新顶点插入现有闭合多段线

我有一种将顶点插入多段线的方法。但对于下面所示的情况,这不适用于闭合多段线。如果点位于多段线的最后一条边上,代码将失败。有人能看出问题所在吗

 public void AddVertexOnPolyline(Point3d addPoint,Polyline editPolyline)
  {
      Document acDoc = Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager.MdiActiveDocument;
      Editor pEditor = acDoc.Editor;
      int chk = 1;
      try
      {
          for (int i = 0; (i <= (editPolyline.NumberOfVertices - 1)); i++)
          {
              double dist1 = editPolyline.GetDistAtPoint(addPoint);
              double dist2 = editPolyline.GetDistAtPoint(editPolyline.GetPoint3dAt(i));

              if ((editPolyline.GetDistAtPoint(addPoint) < (editPolyline.GetDistAtPoint(editPolyline.GetPoint3dAt(i)))) && chk != 0)
              {
                  Point2d pnt2 = new Point2d(addPoint.X, addPoint.Y);
                  editPolyline.AddVertexAt(i, pnt2, 0, 0, 0);
                  chk = 0;
                  break;
              }
          }
      }
      catch (System.Exception ex)
      {
          throw;
      }
  }
public void AddVertexOnPolyline(点3D addPoint,多段线editPolyline)
{
文档acDoc=Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager.MdiActiveDocument;
编辑器pEditor=acDoc.Editor;
int-chk=1;
尝试
{

对于(int i=0;(i要将
顶点
添加到
多段线
闭合或不闭合,请使用方法
AddVertexAt
。此代码可以替代您的方法:

Point2d addPoint = new Point2d(50.0, 50.0);
polyline.AddVertexAt(3, addPoint, 0, 0, 0);
您的方法根本没有这样做。您正在使用方法
GetDistAtPoint
,该方法计算
多段线的起点与作为参数给定的点之间的距离。如果该点不在
多段线上,该方法将引发异常


该方法检查是否有一个顶点的距离大于给定点的距离。

GetDistAtPoint函数的作用是什么?为什么不先打开多段线?@Locke-如果打开,问题中的边将被删除。@JeroenvanLangen我相信,如果在多段线上输入一个点,它将为您提供如果要添加一个点作为顶点,例如该点已在多段线上,请使用GetDistAtPoint和try…catch block方法检查该点是否在多段线上。