public MarkGeometryPoint(LwPolylineVertex lwPolylineVertexIn) : base() { X = lwPolylineVertexIn.Position.X; Y = lwPolylineVertexIn.Position.Y; Z = 0; Update(); }
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; }
/// <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); }