Esempio n. 1
0
        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();
        }
Esempio n. 2
0
		/*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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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());
        }
Esempio n. 6
0
    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);
        }
Esempio n. 8
0
 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;
         }
     }
 }