⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 form1.cs

📁 导出dxf的原码类库,根据国外一个反编译的
💻 CS
字号:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DXF;
using System.Collections;
using System.IO;

namespace DxfExportTest
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private Point[] arrBezier = new Point[13]{
			new Point(200, 230), new Point(190, 310), new Point(280, 330), 
			new Point(310, 310), new Point(340, 290), new Point(390, 270), 
			new Point(355, 225), new Point(330, 240), new Point(305, 255), 
			new Point(415, 255), new Point(440, 240), new Point(480, 220), 
			new Point(430, 200)};
        private void btnWriteDxf_Click(object sender, EventArgs e)
        {
            if (dlgSaveDxf.ShowDialog() != DialogResult.OK) return;

            if (dlgSaveDxf.FileName != "")
            {
                DXFExport vDXF = new DXFExport();
                DXFData Data = new DXFData();
                DXFLayer vLayer;
                DXFPoint Pt = new DXFPoint();
                //line types
                vDXF.AddLType("_SOLID", new float[] { 5, 0 });
                vDXF.AddLType("_DASH", new float[] { 5, -2 });
                vDXF.AddLType("_DOT", new float[] { 2, -2 });
                vDXF.AddLType("_DASHDOT", new float[] { 5, -2, 2, -2 });
                vDXF.AddLType("_DASHDOTDOT", new float[] { 5, -2, 2, -2, 2, -2 });
                // {blocks}
                vDXF.BeginBlock("1");
                Data.point.X = 0;
                Data.point.Y = -3;
                Data.point1.X = 10;
                Data.point1.Y = 0;
                vDXF.AddRectangle(Data);
                Data.Clear();
                Data.height = 1;
                Data.text = "Block";
                Data.point.X = 1;
                Data.point.Y = -2;
                vDXF.AddText(Data);
                vDXF.EndBlock();
                vDXF.BeginBlock("2");
                Data.Clear();
                Data.color = ((int)DXFIntConst.DXF_OLIVE);
                Data.point.X = 0;
                Data.point.Y = 0;
                Data.radius = 40;
                vDXF.AddCircle(Data);
                vDXF.EndBlock();
                vDXF.BeginBlock("3");
                Data.Clear();
                Data.color = DXFExport.ColorToDXF(Color.Red);
                Data.count = 1;
                Data.points = new ArrayList();
                Data.points.Add(new ArrayList()); // hatch can consist of more that one bound
                Pt = new DXFPoint();
                Pt.X = 300;
                Pt.Y = -100;
                Pt.Z = 0.0f;
                ((ArrayList)Data.points[0]).Add(Pt);
                Pt = new DXFPoint();
                Pt.X = 0;
                Pt.Y = -100;
                Pt.Z = 0.0f;
                ((ArrayList)Data.points[0]).Add(Pt);
                Pt = new DXFPoint();
                Pt.X = 100;
                Pt.Y = 0;
                Pt.Z = 0.0f;
                ((ArrayList)Data.points[0]).Add(Pt);
                Data.style = ((byte)DXF.HatchStyle.hsFDiagonal);
                vDXF.fOffset = 50;
                vDXF.AddHatch(Data);
                vDXF.EndBlock();
                vDXF.BeginBlock("4"); // Bezier
                Data.Clear();
                Data.color = ((int)DXFIntConst.DXF_PURPLE);
                Data.count = arrBezier.Length;
                Data.points = new ArrayList();
                Data.points.Add(new ArrayList());
                int I;
                for (I = 0; I < Data.count; I++)
                {
                    Pt = new DXFPoint();
                    Pt.X = arrBezier[I].X;
                    Pt.Y = -arrBezier[I].Y;
                    Pt.Z = 0;
                    ((ArrayList)Data.points[0]).Add(Pt);
                }
                vDXF.AddPolyBezier(Data, 0);
                vDXF.EndBlock();
                vDXF.SetLayerByString("0");
                // {entities}
                Data.Clear();
                Data.color = ((int)DXFIntConst.DXF_TEAL);
                Data.thickness = 10;
                Data.point.X = 10;
                Data.point.Y = 10;
                Data.point1.X = 20;
                Data.point1.Y = 20;
                vDXF.AddLine(Data);
                Data.Clear();
                Data.color = ((int)DXFIntConst.DXF_OLIVE);
                Data.text = "_DASHDOT";
                Data.thickness = 1;
                Data.point.X = 12;
                Data.point.Y = 12;
                Data.radius = 45;
                vDXF.AddCircle(Data);
                Data.Clear();
                Data.height = 50;
                Data.rotation = 0;
                Data.text = "DXF Exporter";
                Data.point.X = 57;
                Data.point.Y = 76;
                vDXF.AddText(Data);
                Data.Clear();
                Data.color = DXFExport.ColorToDXF(Color.Yellow);
                Data.point.X = 80;
                Data.point.Y = 10;
                Data.point1.X = 120;
                Data.point1.Y = 30;
                vDXF.AddRectangle(Data);
                Data.Clear();
                Data.color = DXFExport.ColorToDXF(Color.Green);
                Data.text = "_DASH";
                Data.thickness = 3;
                Data.point.X = 100;
                Data.point.Y = 20;
                Data.radius = 30;
                Data.startAngle = -90;
                Data.endAngle = 90;
                vDXF.AddArc(Data);
                Data.Clear();
                vLayer = new DXFLayer("Blocks");
                vDXF.CurrentLayer = vLayer;
                Data.thickness = 0;
                Data.text = "1";
                Data.point.X = 70;
                Data.point.Y = -30;
                Data.scale.X = 3;
                Data.scale.Y = 3;
                vDXF.Insert(Data);
                Data.text = "1";
                Data.point.Y = -40;
                Data.scale.X = 5;
                Data.scale.Y = 5;
                vDXF.Insert(Data);
                Data.point.Y = -60;
                Data.scale.X = 10;
                Data.scale.Y = 10;
                vDXF.Insert(Data);
                Data.Clear();
                Data.text = "2";
                Data.point.X = 12;
                Data.point.Y = 80;
                Data.scale.X = 1;
                Data.scale.Y = 1;
                vDXF.Insert(Data);
                Data.Clear();
                vLayer = new DXFLayer("Hatch");
                vDXF.CurrentLayer = vLayer;
                Data.text = "3";
                Data.point.X = 120;
                Data.point.Y = 80;
                Data.scale.X = 1;
                Data.scale.Y = 1;
                vDXF.Insert(Data);
                Data.Clear();
                vLayer = new DXFLayer("Bezier");
                vDXF.CurrentLayer = vLayer;
                Data.text = "4";
                Data.point.X = 0;
                Data.point.Y = 200;
                Data.scale.X = 1;
                Data.scale.Y = 1;
                vDXF.Insert(Data);
                //******************** */
                vDXF.SaveToFile(dlgSaveDxf.FileName);	


            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            WriteDXFPolygon("", 5, 20, 50, 8);
        }

        private void WriteDXFPolygon(string dxfFile, int iSides, double dblX, double dblY, double dblLen)
        {
            double dblA1, dblA, dblPI, dblNX, dblNY;

            string path = @"c:\test.dxf";

            using (StreamWriter sw = File.CreateText(path))
            {
                sw.WriteLine("0");
                sw.WriteLine("SECTION");
                sw.WriteLine("2");
                sw.WriteLine("ENTITIES");
                dblPI = Math.PI;
                dblA1 = (2.0 * dblPI) / iSides;
                dblA = dblPI /2.0;

                for (int i = 1; i < iSides + 1; i++)
                {
                    sw.WriteLine("0");
                    sw.WriteLine("LINE");
                    sw.WriteLine("8");
                    sw.WriteLine("Polygon");
                    sw.WriteLine("10");
                    sw.WriteLine(dblX);
                    sw.WriteLine("20");
                    sw.WriteLine(dblY);

                    dblNX = dblLen * Math.Cos(dblA) + dblX;
                    dblNY = dblLen * Math.Sin(dblA) + dblY;
                    sw.WriteLine("11");
                    sw.WriteLine(dblX);
                    sw.WriteLine("21");
                    sw.WriteLine(dblNY);
                    dblX = dblNX;
                    dblY = dblNY;
                    dblA = dblA + dblA1;
                }
                sw.WriteLine("0");
                sw.WriteLine("ENDSEC");
                sw.WriteLine("0");
                sw.WriteLine("EOF");
            }    

        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -