コード例 #1
0
        /// <summary>
        /// creates or adds a segment to the collections
        /// </summary>
        /// <param name="x"></param>
        /// <param name="y"></param>
        /// <param name="startOffset"></param>
        /// <param name="endOffset"></param>
        public void CreateOrAddSegment(ComplexGeometry geometry,
                                       Dictionary <Point, LineSegments> segments,
                                       int x, int y, Vector startOffset, Vector endOffset)
        {
            Point ptMiddle   = new Point(x, y);
            Point startPoint = ptMiddle + startOffset;
            Point endPoint   = ptMiddle + endOffset;

            if (segments.ContainsKey(startPoint))
            {
                var pc = segments[startPoint];
                segments.Remove(startPoint);

                if (pc.First() == startPoint)
                {
                    pc.Insert(0, endPoint);
                }
                else if (pc.Last() == startPoint)
                {
                    pc.Add(endPoint);
                }

                if (!segments.ContainsKey(endPoint))
                {
                    segments.Add(endPoint, pc);
                }
            }
            else if (segments.ContainsKey(endPoint))
            {
                var pc = segments[endPoint];
                segments.Remove(endPoint);

                if (pc.First() == endPoint)
                {
                    pc.Insert(0, startPoint);
                }
                else if (pc.Last() == endPoint)
                {
                    pc.Add(startPoint);
                }

                if (!segments.ContainsKey(startPoint))
                {
                    segments.Add(startPoint, pc);
                }
            }
            else
            {
                var pc = new LineSegments();
                pc.Add(startPoint);
                pc.Add(endPoint);
                segments.Add(startPoint, pc);
                segments.Add(endPoint, pc);

                geometry.Add(pc);
            }
        }
コード例 #2
0
ファイル: IgesLeader.cs プロジェクト: Luc-BOLOGNA/Iges
        internal override int ReadParameters(List <string> parameters, IgesReaderBinder binder)
        {
            var index        = 0;
            var segmentCount = Integer(parameters, ref index);

            ArrowHeight = Double(parameters, ref index);
            ArrowWidth  = Double(parameters, ref index);
            var zDepth = Double(parameters, ref index);
            var x      = Double(parameters, ref index);
            var y      = Double(parameters, ref index);

            ArrowheadCoordinates = new Point3D(x, y, zDepth);
            for (int i = 0; i < segmentCount; i++)
            {
                x = Double(parameters, ref index);
                y = Double(parameters, ref index);
                LineSegments.Add(new Point3D(x, y, zDepth));
            }

            return(segmentCount * 2 + 6);
        }