C# 在AutoCAD中将顶点添加到闭合多段线
我正在尝试通过AutoCAD.Net API将新顶点插入现有闭合多段线 我有一种将顶点插入多段线的方法。但对于下面所示的情况,这不适用于闭合多段线。如果点位于多段线的最后一条边上,代码将失败。有人能看出问题所在吗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
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方法检查该点是否在多段线上。