public static IPolyLine2D Convert(this Polyline source) { var target = new PolyLine2D(source.Segments.Count); foreach (var s in source.Segments) { ISegment2D segment = null; switch (s.Type) { case SegmentType.StartPoint: target.StartPoint = new Point(s.Parameters[0], s.Parameters[1]); continue; case SegmentType.Line: segment = new LineSegment2D(new Point(s.Parameters[0], s.Parameters[1])); break; case SegmentType.CircArc3Points: segment = new CircularArcSegment2D(new Point(s.Parameters[0], s.Parameters[1]), new Point(s.Parameters[2], s.Parameters[3])); break; } target.Segments.Add(segment); } return(target); }
private static ISegment2D ConvertTo2D(ISegment3D segment3D) { if (segment3D.SegmentType == SegmentType.Line) { LineSegment2D lineSegment2D = new LineSegment2D(new Point(segment3D.EndPoint.X, segment3D.EndPoint.Y)); return(lineSegment2D); } else if (segment3D.SegmentType == SegmentType.CircularArc) { CircularArcSegment2D arcSegment2D = new CircularArcSegment2D(new Point(segment3D.EndPoint.X, segment3D.EndPoint.Y), new Point((segment3D as IArcSegment3D).IntermedPoint.X, (segment3D as IArcSegment3D).IntermedPoint.Y)); return(arcSegment2D); } return(null); }