/// <summary>
/// 求算圆弧上的点距圆弧起点沿圆弧的距离
/// </summary>
/// <param name="arc">圆弧</param>
/// <param name="ptOnArc">圆弧上的点</param>
/// <returns></returns>
public double calcDisAlongArc(Arc arc, XYZ ptOnArc)
{
XYZ sp = arc.GetEndPoint(0);
XYZ ep = arc.GetEndPoint(1);
if (isCoinPt(ptOnArc, sp))
{ // 与起点重合
return 0;
}
if (isCoinPt(ptOnArc, ep))
{ // 与终点重合
return arc.Length;
}
XYZ cenPt = arc.Center;
XYZ midPt = calcMidPt(sp, ptOnArc);
// 将中点投影到圆弧上,要保证该中点不是圆心
if (!isCoinPt(cenPt, midPt))
{ // 不是圆心
midPt = arc.Project(midPt).XYZPoint;
Arc newArc = Arc.Create(sp, ptOnArc, midPt);
return newArc.Length;
}
else
{ // 是圆心
return arc.Radius * Math.PI;
}
}
}
revit二次开发,求算圆弧上的点距圆弧起点沿圆弧的距离
最新推荐文章于 2022-08-29 09:57:02 发布