コード例 #1
0
        private void PolylineModule(StreamReader reader)                //Interpretes polyline objects in the DXF file
        {
            string line1, line2;

            line1 = "0";
            line2 = "0";

            double x1 = 0;
            double y1 = 0;
            double x2 = 0;
            double y2 = 0;


            thePolyLine = new polyline(Color.Red);

            int ix = drawingList.Add(thePolyLine);

            objectIdentifier.Add(new DrawingObject(5, ix));

            int       counter          = 0;
            int       numberOfVertices = 1;
            int       openOrClosed     = 0;
            ArrayList pointList        = new ArrayList();


            do
            {
                GetLineCouple(reader, out line1, out line2);

                if (line1 == "90")
                {
                    numberOfVertices = Convert.ToInt32(line2);
                }

                if (line1 == "70")
                {
                    openOrClosed = Convert.ToInt32(line2);
                }


                if (line1 == "10")
                {
                    x1 = Convert.ToDouble(line2);
                    if (x1 > XMax)
                    {
                        XMax = x1;
                    }

                    if (x1 < XMin)
                    {
                        XMin = x1;
                    }
                }

                if (line1 == "20")
                {
                    y1 = Convert.ToDouble(line2);

                    if (y1 > YMax)
                    {
                        YMax = y1;
                    }

                    if (y1 < YMin)
                    {
                        YMin = y1;
                    }

                    pointList.Add(new PointF((float)x1, (float)-y1));
                    counter++;
                }
            }while(counter < numberOfVertices);

            //****************************************************************************************************//
            //***************This Part is related with the drawing editor...the data taken from the dxf file******//
            //***************is interpreted hereinafter***********************************************************//


            for (int i = 1; i < numberOfVertices; i++)
            {
                thePolyLine.AppendLine(new Line((Point)pointList[i - 1], (Point)pointList[i], Color.Red));
            }

            if (openOrClosed == 1)
            {
                thePolyLine.AppendLine(new Line((Point)pointList[numberOfVertices - 1], (Point)pointList[0], Color.Red));
            }

            if ((Math.Abs(XMax) - Math.Abs(XMin)) > this.pictureBox1.Size.Width)
            {
                scaleX = (double)(this.pictureBox1.Size.Width) / (double)(Math.Abs(XMax) - Math.Abs(XMin));
            }
            else
            {
                scaleX = 1;
            }


            if ((Math.Abs(YMax) - Math.Abs(YMin)) > this.pictureBox1.Size.Height)
            {
                scaleY = (double)(this.pictureBox1.Size.Height) / (double)(Math.Abs(YMax) - Math.Abs(YMin));
            }
            else
            {
                scaleY = 1;
            }

            //mainScale = Math.Min(scaleX, scaleY);

            //////////////////////////////////////////////////////////////////////////////////////////////////////
            //////////////////////////////////////////////////////////////////////////////////////////////////////
        }