Beispiel #1
0
        // Фоматированная строка для вывода в файл версии R13
        public override string ToStringOfVerR13()
        {
            string str = ToString();

            str = str.Insert(str.IndexOf("10\n" + DxfHelper.DoubleToString(X)), "100\nAcDb2dVertex\n");
            return(str);
        }
Beispiel #2
0
        // Создание визуального представления дуги
        public DrawingVisual CreateVisual(double scale)
        {
            Vector center = new Vector(Center.X * scale, Center.Y * scale);
            double radius = Radius * scale;
            // найти начальную точку дуги
            Point startPoint = new Point(radius * Math.Cos(StartAngle * DxfHelper.DegToRad) + center.X,
                                         radius * Math.Sin(StartAngle * DxfHelper.DegToRad) + center.Y);
            // найти конечную точку дуги
            Point endPoint = new Point(radius * Math.Cos(EndAngel * DxfHelper.DegToRad) + center.X,
                                       radius * Math.Sin(EndAngel * DxfHelper.DegToRad) + center.Y);

            // определить угол дуги
            double angle = StartAngle < EndAngel ? EndAngel - StartAngle : 360 - (StartAngle - EndAngel);
            // установить флаг, если угол больше 180 градусов - 1, в обратном случае - 0
            byte isLarge = angle > 180 ? (byte)1 : (byte)0;

            // сформировать строку пути
            string str = string.Format("M{0} {1}A{2} {2} {3} {4} {5} {6} {7}", DxfHelper.DoubleToString(startPoint.X),
                                       DxfHelper.DoubleToString(startPoint.Y), DxfHelper.DoubleToString(radius), 0,
                                       isLarge, 1, DxfHelper.DoubleToString(endPoint.X), DxfHelper.DoubleToString(endPoint.Y));

            DrawingVisual visual = new DrawingVisual();

            using (DrawingContext dc = visual.RenderOpen())
            {
                // создать геометрию
                dc.DrawGeometry(null, new Pen(DxfHelper.GetBrush(Color), 2), Geometry.Parse(str));
            }
            // вернуть объект DrawingVisual с созданной геометрией
            return(visual);
        }
Beispiel #3
0
        public string ToStringOfVerR13()
        {
            string str = ToString();

            str = str.Insert(str.IndexOf(Center.AsPoint.ToString()), "100\nAcDbCircle\n");
            str = str.Insert(str.IndexOf("50\n" + DxfHelper.DoubleToString(StartAngle)), "100\nAcDbArc\n");
            return(str);
        }
 // Форматированная строка 2D для вывода в файл DXF
 public string ToStringOf2d(bool isWeight)
 {
     if (!isWeight)
     {
         return(base.ToStringOf2d());
     }
     return("41\n" + DxfHelper.DoubleToString(Weight) + "\n" + base.ToStringOf2d());
 }
Beispiel #5
0
        // Форматированная строка для вывода в файл 2D
        public override string ToStringOf2d()
        {
            string str = string.Format("0\n{0}\n8\n0\n{1}", Name, base.ToStringOf2d());

            if (Bulge != 0)
            {
                return(str += "42\n" + DxfHelper.DoubleToString(Bulge) + "\n");
            }
            return(str);
        }
Beispiel #6
0
        // Строка форматированная для вывода в файл DXF
        public override string ToString()
        {
            string str = string.Format("0\n{0}\n8\n0\n62\n{1}\n90\n{2}\n70\n{3}\n",
                                       Name, (int)Color, NumberOfVertices, Flag);

            foreach (DxfVertex vert in polyline.Vertexes)
            {
                str += "10\n" + DxfHelper.DoubleToString(vert.X) +
                       "\n20\n" + DxfHelper.DoubleToString(vert.Y) + "\n";
                if (vert.Bulge != 0)
                {
                    str += "42\n" + DxfHelper.DoubleToString(vert.Bulge) + "\n";
                }
            }
            return(str);
        }
Beispiel #7
0
        // Метод создания визуального представления
        public DrawingVisual CreateVisual(double scale)
        {
            DrawingVisual visual = new DrawingVisual();

            if (IsFull)    // эллипс полный
            {
                Point center = new Point(Center.X * scale, Center.Y * scale);
                using (DrawingContext dc = visual.RenderOpen())
                {
                    // Создать визуальное представление эллипса
                    dc.DrawEllipse(null, new Pen(DxfHelper.GetBrush(Color), 2.0),
                                   center, majorRadius * scale, minorRadius * scale);
                }

                // задать трансформацию объекту DrawingVisual
                visual.Transform = new RotateTransform();
                // определить центр поворота эллипса
                (visual.Transform as RotateTransform).CenterX = center.X;
                (visual.Transform as RotateTransform).CenterY = center.Y;
                // задать угол поворота
                (visual.Transform as RotateTransform).Angle = rotateAngle;
            }
            else                                                                              // часть эллипса
            {
                Vector startPoint = GetVector(StartParam, scale, rotateAngle);                // найти начальную точку эллипса
                Vector endPoint   = GetVector(EndParam, scale, rotateAngle);                  // найти конечную точку
                byte   isLarge    = EndParam - StartParam > DxfHelper.Pi ? (byte)1 : (byte)0; // определить большая дуга или нет

                // создать строку пути для эллиптической дуги
                string str = string.Format("M{0} {1}A{2} {3} {4} {5} {6} {7} {8}", DxfHelper.DoubleToString(startPoint.X),
                                           DxfHelper.DoubleToString(startPoint.Y), DxfHelper.DoubleToString(majorRadius * scale), DxfHelper.DoubleToString(minorRadius * scale),
                                           DxfHelper.DoubleToString(rotateAngle), isLarge, 1, DxfHelper.DoubleToString(endPoint.X), DxfHelper.DoubleToString(endPoint.Y));
                using (DrawingContext dc = visual.RenderOpen())
                {
                    // создать визуальное представление для эллиптической дуги
                    dc.DrawGeometry(null, new Pen(DxfHelper.GetBrush(Color), 2), Geometry.Parse(str));
                }
            }

            return(visual);
        }
Beispiel #8
0
 // Формирование строки для вывода в файл DXF
 public override string ToString()
 {
     return(string.Format("0\n{0}\n8\n0\n{1}40\n{2}\n62\n{3}\n", Name, Center.AsPoint.ToString(),
                          DxfHelper.DoubleToString(Radius), (int)Color));
 }
Beispiel #9
0
 // Формирование строки для вывода в файл DXF
 public override string ToString()
 {
     return(string.Format("0\n{0}\n8\n0\n62\n{1}\n{2}40\n{3}\n50\n{4}\n51\n{5}\n",
                          Name, (int)Color, Center.AsPoint.ToString(), DxfHelper.DoubleToString(Radius),
                          DxfHelper.DoubleToString(StartAngle), DxfHelper.DoubleToString(EndAngel)));
 }
Beispiel #10
0
 public override string ToStringOf2d()
 {
     return(string.Format("13\n{0}\n23\n{1}\n", DxfHelper.DoubleToString(X), DxfHelper.DoubleToString(Y)));
 }
Beispiel #11
0
 public override string ToString()
 {
     return(string.Format("11\n{0}\n21\n{1}\n31\n{2}\n", DxfHelper.DoubleToString(X),
                          DxfHelper.DoubleToString(Y), DxfHelper.DoubleToString(Z)));
 }
Beispiel #12
0
        // Создание форматированной строки для вывода в файл DXF
        public override string ToString()
        {
            string str = string.Format("10\n{0}\n20\n{1}\n", DxfHelper.DoubleToString(X), DxfHelper.DoubleToString(Y));

            return(str);
        }
 public override string ToString()
 {
     return(string.Format("210\n{0}\n220\n{1}\n230\n{0}\n", DxfHelper.DoubleToString(X),
                          DxfHelper.DoubleToString(Y), DxfHelper.DoubleToString(Z)));
 }
Beispiel #14
0
 // Создание форматированной строки для вывода в файл DXF
 public override string ToString()
 {
     return(string.Format("0\n{0}\n8\n0\n62\n{1}\n{2}{3}40\n{4}\n41\n{5}\n42\n{6}\n",
                          Name, (int)Color, Center.AsPoint.ToString(), MajorAxis.ToStringOf2d(),
                          DxfHelper.DoubleToString(Ratio), DxfHelper.DoubleToString(StartParam), DxfHelper.DoubleToString(EndParam)));
 }