/// <summary> /// 通过限定分段长度来对多段线变稀或者变密(保留首尾两个点) /// </summary> /// <param name="cs"></param> /// <param name="segLength">每一分段的长度</param> /// <returns></returns> public static CompositeCurve3d GetThinedPolyline(Curve3d cs, double segLength) { var startPara = cs.GetParameterOf(cs.StartPoint); var endPara = cs.GetParameterOf(cs.EndPoint); var startPt = cs.StartPoint; var endPt = startPt; var para = startPara; // var segCount = (int)Math.Ceiling((endPara - startPara) / segLength); var lines = new Curve3d[segCount]; // 最后一段的间距不由 segLength 控制 for (int i = 0; i < segCount - 1; i++) { para += segLength; endPt = cs.EvaluatePoint(para); // lines[i] = new LineSegment3d(startPt, endPt); // startPt = endPt; } // 处理最后一段曲线 lines[segCount - 1] = new LineSegment3d(startPt, cs.EndPoint); // return(new CompositeCurve3d(lines)); }