0

我正在尝试通过 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;
      }
  }

注意:我也在 Autodesk 论坛上发布了它

4

1 回答 1

0

要将 a 添加vertex到已polyline关闭或未关闭,请使用 方法AddVertexAt。此代码可以替换您的方法:

Point2d addPoint = new Point2d(50.0, 50.0);
polyline.AddVertexAt(3, addPoint, 0, 0, 0);

你的方法根本没有这样做。您正在使用GetDistAtPoint计算起点与polyline作为参数给出的点之间的距离的方法。如果该点不在 上polyline,则该方法将引发异常。

该方法检查是否存在距离大于给定点距离的顶点。

于 2015-09-29T13:56:14.257 回答