您好,欢迎来到年旅网。
搜索
您的当前位置:首页多段线圆弧段按步长进行加密

多段线圆弧段按步长进行加密

来源:年旅网
public static Polyline JiaMiArcSegment(this Polyline polyline, double dStep = 1.0)
{
    Point3dCollection pts = new Point3dCollection();
    int verticesNum = polyline.NumberOfVertices;
    for (int i = 0; i < verticesNum; i++)
    {
        SegmentType segmentType = polyline.GetSegmentType(i);
        if (segmentType == SegmentType.Arc)
        {
            CircularArc3d cirSeg = polyline.GetArcSegmentAt(i);

            double dBugle = polyline.GetBulgeAt(i);
            double dWidthS = polyline.GetStartWidthAt(i);
            double dWidthE = polyline.GetEndWidthAt(i);
            double dLenArc = cirSeg.GetLength(cirSeg.GetParameterOf(cirSeg.StartPoint), cirSeg.GetParameterOf(cirSeg.EndPoint), 0);
            double dParam = polyline.GetParameterAtDistance(dLenArc);
            double dStart = polyline.GetDistanceAtParameter(dParam);

            double dLenStart = polyline.GetDistAtPoint(cirSeg.StartPoint);
            double dTemp = dLenStart + dStep;

            pts.Add(cirSeg.StartPoint);
            int nIndex = 1;
            while (dTemp < dLenStart + dLenArc)
            {
                dParam = polyline.GetParameterAtDistance(dTemp);
                Point3d pt = polyline.GetPointAtParameter(dParam);
                pts.Add(pt);

                //Circle circle = new Circle(pt, Vector3d.ZAxis, 0.5);
                //circle.ColorIndex = 2;
                //circle.ToModelSpace();

                nIndex++;
                //polyline.AddVertexAt(i+ nIndex++, pt.ToPoint2d(), dBugle, dWidthS, dWidthE);

                dTemp += dStep;
            }
            pts.Add(cirSeg.EndPoint);
            //verticesNum += nIndex;
            //i += nIndex;
        }
        else if (segmentType == SegmentType.Line)
        {
            LineSegment3d lineSeg = polyline.GetLineSegmentAt(i);
            pts.Add(lineSeg.StartPoint);
            pts.Add(lineSeg.EndPoint);
        }
    }

    Polyline polyline1 = pts.CreateNewPolyline();
    polyline1.Elevation = polyline.Elevation;
    return polyline1;
}

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- oldu.cn 版权所有 浙ICP备2024123271号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务