Beispiel #1
0
        // Преобразование POLYLINE в LWPOLILINE
        public static LwPolyline Create(DxfPolyline polyline)
        {
            LwPolyline lPolyline = new LwPolyline
            {
                polyline = polyline
            };

            return(lPolyline);
        }
Beispiel #2
0
        // Создание объекта из пар кодов
        public static LwPolyline Create(List <DxfCodePair> pairs, bool ignoreLineType)
        {
            LwPolyline lwPolyline = new LwPolyline();

            lwPolyline.polyline = DxfPolyline.Create(pairs, ignoreLineType);
            if (lwPolyline.polyline == null)
            {
                return(null);
            }

            return(lwPolyline);
        }
Beispiel #3
0
        // Преобразовать эллипс в POLYLINE
        public DxfPolyline ToPolyline(int precision)
        {
            DxfPolyline polyline = DxfPolyline.Create();         // Создать новую полилинию

            polyline.Color   = Color;                            // присвоить цвет линии как у эллипса
            polyline.IsBulge = false;                            // искревленности нет
            Vector center = new Vector(Center.X, Center.Y);      // определить угол поворота эллипса относительно оси 0X

            double[] ordX = new double[precision];
            double[] ordY = new double[precision];

            polyline.IsClosed = IsFull ? true : false;                             // определить тип полилинии
            // список вершин полилинии
            List <DxfVertex> vertexes = new List <DxfVertex>();

            double step = (EndParam - StartParam) / (precision - 1);    // шаг расчета вершин зависит от заданной точности

            for (int i = 0; i < precision; i++)
            {
                double angle = StartParam + step * i;   // угол расчета вершины

                // создать новый вектор для этого угла
                Vector vector = GetVector(angle, 1, rotateAngle);

                // создать новую вершину
                DxfVertex vertex = new DxfVertex(vector);
                ordX[i] = vector.X;
                ordY[i] = vector.Y;
                // добавить вершину в коллекцию
                vertexes.Add(vertex);
            }

            // добавить созданный массив вершин в коллекцию полилинии
            polyline.AddRangeVerts(vertexes);

            Array.Sort(ordX);
            Array.Sort(ordY);

            Rect rt = new Rect(ordX[0], ordY[0], ordX[ordX.Length - 1] - ordX[0], ordY[ordY.Length - 1] - ordY[0]);

            polyline.Bound = rt;

            // вернуть созданную полилинию
            return(polyline);
        }