Exemple #1
0
        public MarkGeometryPoint(LwPolylineVertex lwPolylineVertexIn)
            : base()
        {
            X = lwPolylineVertexIn.Position.X;
            Y = lwPolylineVertexIn.Position.Y;
            Z = 0;

            Update();
        }
Exemple #2
0
        public Line(LwPolylineVertex vertex1, LwPolylineVertex vertex2)
        {
            InputLine = new netDxf.Entities.Line(vertex1.Position, vertex2.Position);
            Length    = (InputLine.EndPoint - InputLine.StartPoint).Modulus();
            var tempMin = new Vector3();
            var tempMax = new Vector3();

            tempMin.X = Math.Min(InputLine.StartPoint.X, InputLine.EndPoint.X);
            tempMax.X = Math.Max(InputLine.StartPoint.X, InputLine.EndPoint.X);

            tempMin.Y = Math.Min(InputLine.StartPoint.Y, InputLine.EndPoint.Y);
            tempMax.Y = Math.Max(InputLine.StartPoint.Y, InputLine.EndPoint.Y);

            MinXMinY = tempMin;
            MaxXMaxY = tempMax;
        }
Exemple #3
0
        /// <summary>
        /// 保存为DXF格式
        /// </summary>
        /// <param name="figures"></param>
        /// <param name="path"></param>
        public static void WriteDXF(List <FigureBaseModel> figures, string path)
        {
            DxfDocument dxf = new DxfDocument();

            foreach (FigureBaseModel figure in figures)
            {
                switch (figure.Type)
                {
                case FigureTypes.Arc:
                {
                    var    fg         = figure as ArcModel;
                    double startAngle = double.IsNaN(fg.StartAngle) ? 0 : fg.StartAngle;
                    double endAngle   = double.IsNaN(fg.EndAngle) ? 0 : fg.EndAngle;
                    double sweepAngle = double.IsNaN(fg.AngleSweep) ? 0 : fg.AngleSweep;
                    if (fg.IsClockwise)
                    {
                        endAngle = startAngle - sweepAngle;
                    }
                    else
                    {
                        endAngle = startAngle + sweepAngle;
                    }
                    if (endAngle > 360)
                    {
                        endAngle = endAngle - 360;
                    }
                    if (sweepAngle < 0)
                    {
                        double temp = startAngle;
                        startAngle = endAngle;
                        endAngle   = temp;
                    }

                    Arc arc = new Arc(new Vector3(fg.Center.X, fg.Center.Y, 0),
                                      fg.Radius,
                                      startAngle,
                                      endAngle
                                      );
                    arc.Layer             = new Layer("arc");
                    arc.Layer.Color.Index = (short)(figure.LayerId);
                    arc.Layer.Name        = (figure.LayerId).ToString();
                    dxf.AddEntity(arc);
                }
                break;

                case FigureTypes.Circle:
                {
                    var    fg     = figure as CircleModel;
                    Circle circle = new Circle(new Vector3(fg.Center.X, fg.Center.Y, 0), fg.Radius);
                    circle.Layer             = new Layer("circle with spaces");
                    circle.Layer.Color.Index = (short)(figure.LayerId);
                    circle.Layer.Name        = (figure.LayerId).ToString();
                    dxf.AddEntity(circle);
                }
                break;

                case FigureTypes.Point:
                {
                    var   fg     = figure as PointModel;
                    Point point1 = new Point(new Vector3(fg.Point.X, fg.Point.Y, 0));
                    point1.Layer             = new Layer("point");
                    point1.Layer.Color.Index = (short)(figure.LayerId);
                    point1.Layer.Name        = (figure.LayerId).ToString();
                    dxf.AddEntity(point1);
                }
                break;

                case FigureTypes.LwPolyline:
                {
                    var fg = figure as LwPolylineModel;
                    List <LwPolylineVertex> lwVertexes = new List <LwPolylineVertex>();
                    foreach (UnitPointBulge pt in fg.Points)
                    {
                        LwPolylineVertex lwVertex = new LwPolylineVertex(pt.Point.X, pt.Point.Y, double.IsNaN(pt.Bulge) ? 0 : pt.Bulge);
                        lwVertexes.Add(lwVertex);
                    }
                    LwPolyline lwPolyline = new LwPolyline(lwVertexes, true);
                    lwPolyline.IsClosed          = fg.IsFill;
                    lwPolyline.Layer.Color.Index = (short)(figure.LayerId);
                    lwPolyline.Layer             = new Layer("lwpolyline");
                    lwPolyline.Layer.Name        = (figure.LayerId).ToString();
                    dxf.AddEntity(lwPolyline);
                }
                break;

                case FigureTypes.PolyBezier:
                {
                }
                break;

                default:
                    break;
                }
            }
            dxf.DrawingVariables.AcadVer = DxfVersion.AutoCad2010;
            dxf.Save(path);
        }