在AutoCAD中将顶点添加到闭合折线

时间:2013-08-14 06:23:25

标签: c# autocad objectarx

我正在尝试通过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论坛上发布了它

2 个答案:

答案 0 :(得分:0)

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

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

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

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

答案 1 :(得分:-1)

pLine.AddVertexAt((int)System.Math.Floor(parm)+1, new Point2d(pos.X, pos.Y), 0, 0, 0);