예제 #1
0
        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);
        }
예제 #2
0
        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);
        }