private void DrawFace3d(Face3d face) { var vertexes = new List <Vector3> { face.FirstVertex, face.SecondVertex, face.ThirdVertex, }; if (face.FourthVertex != null) { vertexes.Add(face.FourthVertex); } var path = new Polyline(vertexes, true); var ids = new List <int>(); AddToIds(ids, EntitiesToFcs(new[] { path })); var i = ++iDrawedArea; sb.Append($"area {{a{i}}} boundary curve"); foreach (var id in ids) { sb.Append($" +{{c{id}}}"); } sb.AppendLine(); }
/*Draw Face3d*/ public static void DrawFace3d(Face3d xPoly, Canvas mainCanvas) { System.Windows.Shapes.Polygon wPoly = new System.Windows.Shapes.Polygon(); wPoly.Points.Add(TypeConverter.Vertex3ToPoint(xPoly.FirstVertex, mainCanvas.Height)); wPoly.Points.Add(TypeConverter.Vertex3ToPoint(xPoly.SecondVertex, mainCanvas.Height)); wPoly.Points.Add(TypeConverter.Vertex3ToPoint(xPoly.ThirdVertex, mainCanvas.Height)); wPoly.Points.Add(TypeConverter.Vertex3ToPoint(xPoly.FourthVertex, mainCanvas.Height)); TypeConverter.Entity2Shape(xPoly, wPoly); mainCanvas.Children.Add(wPoly); }
private static void Face3d() { DxfDocument dxf = new DxfDocument(); Face3d face3d = new Face3d(); face3d.FirstVertex = new Vector3(0, 0, 0); face3d.SecondVertex = new Vector3(1, 0, 0); face3d.ThirdVertex = new Vector3(1, 1, 0); face3d.FourthVertex = new Vector3(0, 1, 0); dxf.AddEntity(face3d); dxf.Save("face.dxf", DxfVersion.AutoCad2000); dxf.Load("face.dxf"); dxf.Save("face return.dxf", DxfVersion.AutoCad2000); }
public static void CreateDxfFile(string path, List <int[]> elements, Dictionary <int, double[]> points) { DxfDocument doc = new DxfDocument(DxfVersion.AutoCad2010); Layer layerShells = new Layer("SHELLS"); Layer layerFrames = new Layer("FRAMES"); foreach (int[] element in elements) { double[] firstNode = points[element[0]]; double[] secondNode = points[element[1]]; Vector3 firstVertex = new Vector3(firstNode[0], firstNode[1], firstNode[2]); Vector3 secondVertex = new Vector3(secondNode[0], secondNode[1], secondNode[2]); if (element.Length == 2) // LINE { Line line = new Line(firstVertex, secondVertex) { Layer = layerFrames }; doc.AddEntity(line); } else { double[] thirdNode = points[element[2]]; double[] fourthNode = element.Length == 4 ? points[element[3]] : points[element[0]]; Face3d face = new Face3d { FirstVertex = firstVertex, SecondVertex = secondVertex, ThirdVertex = new Vector3(thirdNode[0], thirdNode[1], thirdNode[2]), FourthVertex = new Vector3(fourthNode[0], fourthNode[1], fourthNode[2]), Layer = layerShells, }; doc.AddEntity(face); } } File.Delete(path); doc.Save(path); }
public static string CadScript(this Face3d face) { var sb = new StringBuilder(); sb.Append(string.Format(CultureInfo.InvariantCulture, "_FACE {0},{1},{2} {3},{4},{5} {6},{7},{8}", face.FirstVertex.X, face.FirstVertex.Y, face.FirstVertex.Z, face.SecondVertex.X, face.SecondVertex.Y, face.SecondVertex.Z, face.ThirdVertex.X, face.ThirdVertex.Y, face.ThirdVertex.Z)); if (face.FourthVertex != null) { sb.Append(string.Format(CultureInfo.InvariantCulture, " {0},{1},{2}", face.FourthVertex.X, face.FourthVertex.Y, face.FourthVertex.Z)); } sb.AppendLine(); return(sb.ToString()); }
public void AddTriangles(List <Vector3RD> triangleVertices, string layerName) { Block block = new Block(layerName); for (int i = 0; i < triangleVertices.Count; i += 3) { netDxf.Vector3 vertex1 = new netDxf.Vector3(triangleVertices[i].x, triangleVertices[i].y, triangleVertices[i].z); netDxf.Vector3 vertex2 = new netDxf.Vector3(triangleVertices[i + 1].x, triangleVertices[i + 1].y, triangleVertices[i + 1].z); netDxf.Vector3 vertex3 = new netDxf.Vector3(triangleVertices[i + 2].x, triangleVertices[i + 2].y, triangleVertices[i + 2].z); Face3d face = new Face3d(vertex1, vertex3, vertex2); block.Entities.Add(face); //doc.AddEntity(face); //face.Layer = Laag; } Insert blokInsert = new Insert(block); blokInsert.Layer = dxfLayer; dxfDocument.AddEntity(blokInsert); }
private static void WriteDxfFile() { DxfDocument dxf = new DxfDocument(); //arc Arc arc = new Arc(new Vector3(10, 10, 0), 10, 45, 135); arc.Layer = new Layer("arc"); arc.Layer.Color.Index = 1; dxf.AddEntity(arc); //xData sample XData xdata = new XData(new ApplicationRegistry("netDxf")); xdata.XDataRecord.Add(new XDataRecord(XDataCode.String, "extended data with netDxf")); xdata.XDataRecord.Add(XDataRecord.OpenControlString); xdata.XDataRecord.Add(new XDataRecord(XDataCode.WorldSpacePositionX, 0)); xdata.XDataRecord.Add(new XDataRecord(XDataCode.WorldSpacePositionY, 0)); xdata.XDataRecord.Add(new XDataRecord(XDataCode.WorldSpacePositionZ, 0)); xdata.XDataRecord.Add(XDataRecord.CloseControlString); XData xdata2 = new XData(new ApplicationRegistry("other application")); xdata2.XDataRecord.Add(new XDataRecord(XDataCode.String, "extended data with netDxf")); xdata2.XDataRecord.Add(XDataRecord.OpenControlString); xdata2.XDataRecord.Add(new XDataRecord(XDataCode.String, "string record")); xdata2.XDataRecord.Add(new XDataRecord(XDataCode.Real, 15.5)); xdata2.XDataRecord.Add(new XDataRecord(XDataCode.Long, 350)); xdata2.XDataRecord.Add(XDataRecord.CloseControlString); //circle Vector3 extrusion = new Vector3(1, 1, 1); Vector3 centerWCS = new Vector3(1, 1, 1); Vector3 centerOCS = MathHelper.Transform(centerWCS, extrusion, MathHelper.CoordinateSystem.World, MathHelper.CoordinateSystem.Object); Circle circle = new Circle(centerOCS, 5); circle.Layer = new Layer("circle with spaces"); circle.Layer.Color = AciColor.Yellow; circle.LineType = LineType.Dashed; circle.Normal = extrusion; circle.XData = new Dictionary <ApplicationRegistry, XData> { { xdata.ApplicationRegistry, xdata }, { xdata2.ApplicationRegistry, xdata2 } }; dxf.AddEntity(circle); //points Point point1 = new Point(new Vector3(-3, -3, 0)); point1.Layer = new Layer("point"); point1.Color = new AciColor(30); Point point2 = new Point(new Vector3(1, 1, 1)); point2.Layer = point1.Layer; point2.Layer.Color.Index = 9; point2.Normal = new Vector3(1, 1, 1); dxf.AddEntity(point1); dxf.AddEntity(point2); //3dface Face3d face3D = new Face3d(new Vector3(-5, -5, 5), new Vector3(5, -5, 5), new Vector3(5, 5, 5), new Vector3(-5, 5, 5)); face3D.Layer = new Layer("3dface"); face3D.Layer.Color.Index = 3; dxf.AddEntity(face3D); //polyline PolylineVertex polyVertex; List <PolylineVertex> polyVertexes = new List <PolylineVertex>(); polyVertex = new PolylineVertex(new Vector2(-50, -50)); polyVertex.BeginWidth = 2; polyVertexes.Add(polyVertex); polyVertex = new PolylineVertex(new Vector2(50, -50)); polyVertex.BeginWidth = 1; polyVertexes.Add(polyVertex); polyVertex = new PolylineVertex(new Vector2(50, 50)); polyVertex.Bulge = 1; polyVertexes.Add(polyVertex); polyVertex = new PolylineVertex(new Vector2(-50, 50)); polyVertexes.Add(polyVertex); Polyline polyline2d = new Polyline(polyVertexes, true); polyline2d.Layer = new Layer("polyline2d"); polyline2d.Layer.Color.Index = 5; polyline2d.Normal = new Vector3(1, 1, 1); polyline2d.Elevation = 100.0f; dxf.AddEntity(polyline2d); //lightweight polyline LightWeightPolylineVertex lwVertex; List <LightWeightPolylineVertex> lwVertexes = new List <LightWeightPolylineVertex>(); lwVertex = new LightWeightPolylineVertex(new Vector2(-25, -25)); lwVertex.BeginWidth = 2; lwVertexes.Add(lwVertex); lwVertex = new LightWeightPolylineVertex(new Vector2(25, -25)); lwVertex.BeginWidth = 1; lwVertexes.Add(lwVertex); lwVertex = new LightWeightPolylineVertex(new Vector2(25, 25)); lwVertex.Bulge = 1; lwVertexes.Add(lwVertex); lwVertex = new LightWeightPolylineVertex(new Vector2(-25, 25)); lwVertexes.Add(lwVertex); LightWeightPolyline lwPolyline = new LightWeightPolyline(lwVertexes, true); lwPolyline.Layer = new Layer("lwpolyline"); lwPolyline.Layer.Color.Index = 5; lwPolyline.Normal = new Vector3(1, 1, 1); lwPolyline.Elevation = 100.0f; dxf.AddEntity(lwPolyline); //line Line line = new Line(new Vector3(0, 0, 0), new Vector3(10, 10, 10)); line.Layer = new Layer("line"); line.Layer.Color.Index = 6; dxf.AddEntity(line); //3d polyline Polyline3dVertex vertex; List <Polyline3dVertex> vertexes = new List <Polyline3dVertex>(); vertex = new Polyline3dVertex(new Vector3(-50, -50, 0)); vertexes.Add(vertex); vertex = new Polyline3dVertex(new Vector3(50, -50, 10)); vertexes.Add(vertex); vertex = new Polyline3dVertex(new Vector3(50, 50, 25)); vertexes.Add(vertex); vertex = new Polyline3dVertex(new Vector3(-50, 50, 50)); vertexes.Add(vertex); Polyline3d polyline = new Polyline3d(vertexes, true); polyline.Layer = new Layer("polyline3d"); polyline.Layer.Color.Index = 24; dxf.AddEntity(polyline); //block definition Block block = new Block("TestBlock"); block.Entities.Add(new Line(new Vector3(-5, -5, 5), new Vector3(5, 5, 5))); block.Entities.Add(new Line(new Vector3(5, -5, 5), new Vector3(-5, 5, 5))); //insert Insert insert = new Insert(block, new Vector3(5, 5, 5)); insert.Layer = new Layer("insert"); insert.Layer.Color.Index = 4; dxf.AddEntity(insert); //text TextStyle style = new TextStyle("True type font", "Arial.ttf"); Text text = new Text("Hello world!", Vector3.Zero, 10.0f, style); text.Layer = new Layer("text"); text.Layer.Color.Index = 8; text.Alignment = TextAlignment.TopRight; dxf.AddEntity(text); dxf.Save("AutoCad2010.dxf", DxfVersion.AutoCad2010); dxf.Save("AutoCad2007.dxf", DxfVersion.AutoCad2007); dxf.Save("AutoCad2004.dxf", DxfVersion.AutoCad2004); dxf.Save("AutoCad2000.dxf", DxfVersion.AutoCad2000); }
protected override void InternalWrite() { foreach (EntityObject entity in Document.Entities) { if (entity is AcadProxyEntity) { AcadProxyEntity e = entity as AcadProxyEntity; TextWriter.Write(Utilities.AcadProxyEntityToDxfFormat(e)); continue; } if (entity is Arc) { Arc e = entity as Arc; TextWriter.Write(Utilities.ArcToDxfFormat(e)); continue; } if (entity is Attrib) { Attrib e = entity as Attrib; TextWriter.Write(Utilities.AttribToDxfFormat(e)); continue; } if (entity is AttributeDefinition) { AttributeDefinition e = entity as AttributeDefinition; TextWriter.Write(Utilities.AttributeDefinitionToDxfFormat(e)); continue; } if (entity is Body) { Body e = entity as Body; TextWriter.Write(Utilities.BodyToDxfFormat(e)); continue; } if (entity is Circle) { Circle e = entity as Circle; TextWriter.Write(Utilities.CircleToDxfFormat(e)); continue; } if (entity is Dimension) { Dimension e = entity as Dimension; TextWriter.Write(Utilities.DimensionToDxfFormat(e)); continue; } if (entity is Ellipse) { Ellipse e = entity as Ellipse; TextWriter.Write(Utilities.EllipseToDxfFormat(e)); continue; } if (entity is EndSection) { EndSection e = entity as EndSection; TextWriter.Write(Utilities.EndSectionToDxfFormat(e)); continue; } if (entity is Face3d) { Face3d e = entity as Face3d; TextWriter.Write(Utilities.Face3dToDxfFormat(e)); continue; } if (entity is Hatch) { Hatch e = entity as Hatch; TextWriter.Write(Utilities.HatchToDxfFormat(e)); continue; } if (entity is Helix) { Helix e = entity as Helix; TextWriter.Write(Utilities.HelixToDxfFormat(e)); continue; } if (entity is Image) { Image e = entity as Image; TextWriter.Write(Utilities.ImageToDxfFormat(e)); continue; } if (entity is Insert) { Insert e = entity as Insert; TextWriter.Write(Utilities.InsertToDxfFormat(e)); continue; } if (entity is Leader) { Leader e = entity as Leader; TextWriter.Write(Utilities.LeaderToDxfFormat(e)); continue; } if (entity is Light) { Light e = entity as Light; TextWriter.Write(Utilities.LightToDxfFormat(e)); continue; } if (entity is Line) { Line e = entity as Line; TextWriter.Write(Utilities.LineToDxfFormat(e)); continue; } if (entity is LwPolyline) { LwPolyline e = entity as LwPolyline; TextWriter.Write(Utilities.LwPolylineToDxfFormat(e)); continue; } if (entity is Mesh) { Mesh e = entity as Mesh; TextWriter.Write(Utilities.MeshToDxfFormat(e)); continue; } if (entity is MultiLeader) { MultiLeader e = entity as MultiLeader; TextWriter.Write(Utilities.MultiLeaderToDxfFormat(e)); continue; } if (entity is MultiLeaderStyle) { MultiLeaderStyle e = entity as MultiLeaderStyle; TextWriter.Write(Utilities.MultiLeaderStyleToDxfFormat(e)); continue; } if (entity is MultiLine) { MultiLine e = entity as MultiLine; TextWriter.Write(Utilities.MultiLineToDxfFormat(e)); continue; } if (entity is MultiText) { MultiText e = entity as MultiText; TextWriter.Write(Utilities.MultiTextToDxfFormat(e)); continue; } if (entity is Ole2Frame) { Ole2Frame e = entity as Ole2Frame; TextWriter.Write(Utilities.Ole2FrameToDxfFormat(e)); continue; } if (entity is OleFrame) { OleFrame e = entity as OleFrame; TextWriter.Write(Utilities.OleFrameToDxfFormat(e)); continue; } if (entity is Point) { Point e = entity as Point; TextWriter.Write(Utilities.PointToDxfFormat(e)); continue; } if (entity is PolyLine) { PolyLine e = entity as PolyLine; TextWriter.Write(Utilities.PolyLineToDxfFormat(e)); continue; } if (entity is Ray) { Ray e = entity as Ray; TextWriter.Write(Utilities.RayToDxfFormat(e)); continue; } if (entity is Region) { Region e = entity as Region; TextWriter.Write(Utilities.RegionToDxfFormat(e)); continue; } if (entity is Section) { Section e = entity as Section; TextWriter.Write(Utilities.SectionToDxfFormat(e)); continue; } if (entity is Shape) { Shape e = entity as Shape; TextWriter.Write(Utilities.ShapeToDxfFormat(e)); continue; } if (entity is Solid) { Solid e = entity as Solid; TextWriter.Write(Utilities.SolidToDxfFormat(e)); continue; } if (entity is Solid3d) { Solid3d e = entity as Solid3d; TextWriter.Write(Utilities.Solid3dToDxfFormat(e)); continue; } if (entity is Spline) { Spline e = entity as Spline; TextWriter.Write(Utilities.SplineToDxfFormat(e)); continue; } if (entity is Sun) { Sun e = entity as Sun; TextWriter.Write(Utilities.SunToDxfFormat(e)); continue; } if (entity is Surface) { Surface e = entity as Surface; TextWriter.Write(Utilities.SurfaceToDxfFormat(e)); continue; } if (entity is Table) { Table e = entity as Table; TextWriter.Write(Utilities.TableToDxfFormat(e)); continue; } if (entity is Text) { Text e = entity as Text; TextWriter.Write(Utilities.TextToDxfFormat(e)); continue; } if (entity is Tolerance) { Tolerance e = entity as Tolerance; TextWriter.Write(Utilities.ToleranceToDxfFormat(e)); continue; } if (entity is Trace) { Trace e = entity as Trace; TextWriter.Write(Utilities.TraceToDxfFormat(e)); continue; } if (entity is Underlay) { Underlay e = entity as Underlay; TextWriter.Write(Utilities.UnderlayToDxfFormat(e)); continue; } if (entity is Vertex) { Vertex e = entity as Vertex; TextWriter.Write(Utilities.VertexToDxfFormat(e)); continue; } if (entity is ViewPort) { ViewPort e = entity as ViewPort; TextWriter.Write(Utilities.ViewPortToDxfFormat(e)); continue; } if (entity is WipeOut) { WipeOut e = entity as WipeOut; TextWriter.Write(Utilities.WipeOutToDxfFormat(e)); continue; } if (entity is XLine) { XLine e = entity as XLine; TextWriter.Write(Utilities.XLineToDxfFormat(e)); continue; } } }