为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > C#_读取DXF文件

C#_读取DXF文件

2014-03-11 17页 doc 66KB 222阅读

用户头像

is_416670

暂无简介

举报
C#_读取DXF文件using System; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO; using System.Collections; namespace DXF { public partial class Form1 :...
C#_读取DXF文件
using System; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO; using System.Collections; namespace DXF { public partial class Form1 : Form { private FileStream fs; private StreamReader sr; private ArrayList LayerList = new ArrayList(); private ArrayList LineList = new ArrayList(); private ArrayList ArcList=new ArrayList(); private ArrayList EllipseList = new ArrayList(); private ArrayList LwopolylineList = new ArrayList(); private ArrayList SplineList=new ArrayList(); private string[] str = new string[2]; private int count; private double leftx; private double lefty; private double rightx; private double righty; public Form1() { InitializeComponent(); } private string[] ReadPair() { string code = sr.ReadLine().Trim(); string codedata = sr.ReadLine().Trim(); count += 2; string[] result = new string[2] { code, codedata }; return result; } private void Read() { while (sr.Peek() != -1) { str = ReadPair(); if (str[1] == "SECTION") { str = ReadPair(); switch (str[1]) { case "HEADER": ReadHeader(); break; case "TABLES": ReadTable(); break; case "ENTITIES": ReadEntities(); break; } } } sr.Close(); fs.Close(); btDraw.Enabled = true; label1.Text = count.ToString(); count = 0; } private void ReadTable() { while (str[1] != "ENDSEC") { while (str[0] != "2" || str[1] != "LAYER") { str = ReadPair(); } while (str[0] != "0" || str[1] != "LAYER") { str = ReadPair(); } while (str[0] == "0" && str[1] == "LAYER") { ReadLAYER(); } while (str[1] != "ENDSEC") { str = ReadPair(); } } } private void ReadLAYER() { LAYER newlayer = new LAYER(); while (str[1] != "ENDTAB") { str = ReadPair(); switch (str[0]) { case "2": newlayer.name = str[1]; break; case "62": newlayer.colornum = str[1]; break; case "6": newlayer.lstyle = str[1]; break; case "370": newlayer.lwidth = str[1]; break; } if (str[0] == "0" && str[1] == "LAYER") { LayerList.Add(newlayer); return; } } LayerList.Add(newlayer); } private void ReadEntities() { while (str[1] != "ENDSEC") { switch (str[1]) { case "LINE": ReadLine(); break; case "ARC": ReadArc(); break; case "CIRCLE": ReadArc(); break; case "ELLIPSE": ReadEllipse(); break; case "LWPOLYLINE": ReadLwpolyline(); break; case "SPLINE": ReadSpline(); break; default: str = ReadPair(); break; } } } private void ReadArc() { ARC newarc = new ARC(); while (str[1] != "ENDSEC") { str = ReadPair(); switch (str[0]) { case "8": newarc.LName = str[1]; break; case "10": newarc.CenterX = Double.Parse(str[1]); break; case "20": newarc.CenterY = Double.Parse(str[1]); break; case "40": newarc.Radiu = Double.Parse(str[1]); break; case "50": newarc.SAngle = Double.Parse(str[1]); break; case "51": newarc.EAngle = Double.Parse(str[1]); break; case "370": newarc.lwidth = str[1]; break; case "0": ArcList.Add(newarc); return; } } } private void ReadLine() { LINE newline = new LINE(); while (str[1] != "ENDSEC") { str = ReadPair(); switch (str[0]) { case "8": newline.LName = str[1]; break; case "10": newline.StartX = Double.Parse(str[1]); break; case "20": newline.StartY = Double.Parse(str[1]); break; case "11": newline.EndX = Double.Parse(str[1]); break; case "21": newline.EndY = Double.Parse(str[1]); break; case "62": newline.colornum = str[1]; break; case "370": newline.lwidth = str[1]; break; case "0": LineList.Add(newline); return; } } } private void ReadEllipse() { ELLIPSE newellipse = new ELLIPSE(); while (str[1] != "ENDSEC") { str = ReadPair(); switch (str[0]) { case "8": newellipse.LName = str[1]; break; case "10": newellipse.CenterX = Double.Parse(str[1]); break; case "20": newellipse.CenterY = Double.Parse(str[1]); break; case "11": newellipse.DeltaX = Double.Parse(str[1]); break; case "21": newellipse.DeltaY = Double.Parse(str[1]); break; case "40": newellipse.Radio = Double.Parse(str[1]); break; case "41": newellipse.PSAngle = Double.Parse(str[1]); break; case "42": newellipse.PEAngle = Double.Parse(str[1]); break; case "370": newellipse.lwidth = str[1]; break; case "0": EllipseList.Add(newellipse); return; } } } private void ReadLwpolyline() { LWPOLYLINE newlw = new LWPOLYLINE(); while (str[1] != "ENDSEC") { str = ReadPair(); switch (str[0]) { case "8": newlw.LName = str[1]; break; case "370": newlw.lwidth = str[1]; break; case "62": newlw.colornum = str[1]; break; case "90": newlw.PointCount = Int32.Parse(str[1]); break; case "70": newlw.Flag = Int32.Parse(str[1]); break; case "10": newlw.pointx = new double[newlw.PointCount]; newlw.pointy = new double[newlw.PointCount]; //if (newlw.Flag == 1) newlw.converxity = new double[newlw.PointCount]; //else //newlw.converxity = new double[newlw.PointCount - 1]; newlw.pointx[0] = Double.Parse(str[1]); str=ReadPair(); newlw.pointy[0] = Double.Parse(str[1]); for (int i = 1; i < newlw.PointCount; i++) { string temp = sr.ReadLine().Trim(); if (temp == "42") { newlw.converxity[i - 1] = Double.Parse(sr.ReadLine().Trim()); i--; } else if (temp == "20") { string r = sr.ReadLine().Trim(); newlw.pointy[i] = Double.Parse(r); } else { string r = sr.ReadLine().Trim(); newlw.pointx[i] = Double.Parse(r); i--; } } string s = sr.ReadLine().Trim(); if (s == "42") newlw.converxity[newlw.PointCount - 1] = Double.Parse(sr.ReadLine().Trim()); else if (s == "0") { sr.ReadLine(); LwopolylineList.Add(newlw); return; } else sr.ReadLine(); break; case "0": LwopolylineList.Add(newlw); return; } } } public void ReadSpline() { SPLINE newspline = new SPLINE(); while (str[1] != "ENDSEC") { str = ReadPair(); switch (str[0]) { case "8": newspline.LName = str[1]; break; case "370": newspline.lwidth = str[1]; break; case "62": newspline.colornum = str[1]; break; case "70": newspline.Flag = Int32.Parse(str[1]); break; case "74": newspline.Count = Int32.Parse(str[1]); newspline.throughpx = new double[Int32.Parse(str[1])]; newspline.throughpy = new double[Int32.Parse(str[1])]; break; case "12": newspline.SVertorX = Double.Parse(str[1]); break; case "22": newspline.SVertorY = Double.Parse(str[1]); break; case "13": newspline.EVertorX = Double.Parse(str[1]); break; case "23": newspline.EVertorY = Double.Parse(str[1]); break; case "11": newspline.throughpx[0] = Double.Parse(str[1]); str = ReadPair(); newspline.throughpy[0] = Double.Parse(str[1]); str = ReadPair(); for(int i=1;i
/
本文档为【C#_读取DXF文件】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
热门搜索

历史搜索

    清空历史搜索