




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、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; priva
2、te 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 =
3、new string2; 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
4、2 code, codedata ; return result; private void Read() while (sr.Peek() != -1) str = ReadPair(); if (str1 = SECTION) str = ReadPair(); switch (str1) case HEADER: ReadHeader(); break; case TABLES: ReadTable(); break; case ENTITIES: ReadEntities(); break; sr.Close(); fs.Close(); btDraw.Enabled = true;
5、label1.Text = count.ToString(); count = 0; private void ReadTable() while (str1 != ENDSEC) while (str0 != 2 | str1 != LAYER) str = ReadPair(); while (str0 != 0 | str1 != LAYER) str = ReadPair(); while (str0 = 0 & str1 = LAYER) ReadLAYER(); while (str1 != ENDSEC) str = ReadPair(); private void ReadLA
6、YER() LAYER newlayer = new LAYER(); while (str1 != ENDTAB) str = ReadPair(); switch (str0) case 2: = str1; break; case 62: newlayer.colornum = str1; break; case 6: newlayer.lstyle = str1; break; case 370: newlayer.lwidth = str1; break; if (str0 = 0 & str1 = LAYER) LayerList.Add(newlaye
7、r); return; LayerList.Add(newlayer); private void ReadEntities() while (str1 != ENDSEC) switch (str1) case LINE: ReadLine(); break; case ARC: ReadArc(); break; case CIRCLE: ReadArc(); break; case ELLIPSE: ReadEllipse(); break; case LWPOLYLINE: ReadLwpolyline(); break; case SPLINE: ReadSpline(); brea
8、k; default: str = ReadPair(); break; private void ReadArc() ARC newarc = new ARC(); while (str1 != ENDSEC) str = ReadPair(); switch (str0) case 8: newarc.LName = str1; break; case 10: newarc.CenterX = Double.Parse(str1); break; case 20: newarc.CenterY = Double.Parse(str1); break; case 40: newarc.Rad
9、iu = Double.Parse(str1); break; case 50: newarc.SAngle = Double.Parse(str1); break; case 51: newarc.EAngle = Double.Parse(str1); break; case 370: newarc.lwidth = str1; break; case 0: ArcList.Add(newarc); return; private void ReadLine() LINE newline = new LINE(); while (str1 != ENDSEC) str = ReadPair
10、(); switch (str0) case 8: newline.LName = str1; break; case 10: newline.StartX = Double.Parse(str1); break; case 20: newline.StartY = Double.Parse(str1); break; case 11: newline.EndX = Double.Parse(str1); break; case 21: newline.EndY = Double.Parse(str1); break; case 62: newline.colornum = str1; bre
11、ak; case 370: newline.lwidth = str1; break; case 0: LineList.Add(newline); return; private void ReadEllipse() ELLIPSE newellipse = new ELLIPSE(); while (str1 != ENDSEC) str = ReadPair(); switch (str0) case 8: newellipse.LName = str1; break; case 10: newellipse.CenterX = Double.Parse(str1); break; ca
12、se 20: newellipse.CenterY = Double.Parse(str1); break; case 11: newellipse.DeltaX = Double.Parse(str1); break; case 21: newellipse.DeltaY = Double.Parse(str1); break; case 40: newellipse.Radio = Double.Parse(str1); break; case 41: newellipse.PSAngle = Double.Parse(str1); break; case 42: newellipse.P
13、EAngle = Double.Parse(str1); break; case 370: newellipse.lwidth = str1; break; case 0: EllipseList.Add(newellipse); return; private void ReadLwpolyline() LWPOLYLINE newlw = new LWPOLYLINE(); while (str1 != ENDSEC) str = ReadPair(); switch (str0) case 8: newlw.LName = str1; break; case 370: newlw.lwi
14、dth = str1; break; case 62: newlw.colornum = str1; break; case 90: newlw.PointCount = Int32.Parse(str1); break; case 70: newlw.Flag = Int32.Parse(str1); break; case 10: newlw.pointx = new doublenewlw.PointCount; newlw.pointy = new doublenewlw.PointCount; /if (newlw.Flag = 1) newlw.converxity = new d
15、oublenewlw.PointCount; /else /newlw.converxity = new doublenewlw.PointCount - 1; newlw.pointx0 = Double.Parse(str1); str=ReadPair(); newlw.pointy0 = Double.Parse(str1); for (int i = 1; i newlw.PointCount; i+) string temp = sr.ReadLine().Trim(); if (temp = 42) newlw.converxityi - 1 = Double.Parse(sr.
16、ReadLine().Trim(); i-; else if (temp = 20) string r = sr.ReadLine().Trim(); newlw.pointyi = Double.Parse(r); else string r = sr.ReadLine().Trim(); newlw.pointxi = Double.Parse(r); i-; string s = sr.ReadLine().Trim(); if (s = 42) newlw.converxitynewlw.PointCount - 1 = Double.Parse(sr.ReadLine().Trim(
17、); 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 (str1 != ENDSEC) str = ReadPair(); switch (str0) case 8: newspline.LName = str1; break; case 37
18、0: newspline.lwidth = str1; break; case 62: newspline.colornum = str1; break; case 70: newspline.Flag = Int32.Parse(str1); break; case 74: newspline.Count = Int32.Parse(str1); newspline.throughpx = new doubleInt32.Parse(str1); newspline.throughpy = new doubleInt32.Parse(str1); break; case 12: newspl
19、ine.SVertorX = Double.Parse(str1); break; case 22: newspline.SVertorY = Double.Parse(str1); break; case 13: newspline.EVertorX = Double.Parse(str1); break; case 23: newspline.EVertorY = Double.Parse(str1); break; case 11: newspline.throughpx0 = Double.Parse(str1); str = ReadPair(); newspline.through
20、py0 = Double.Parse(str1); str = ReadPair(); for(int i=1;inewspline.throughpx.Length;i+) str=ReadPair(); if(str0=11) newspline.throughpxi=Double.Parse(str1); i-; else if(str0=21) newspline.throughpyi=Double.Parse(str1); i-; if(newspline.Flag=11) for(int i=0;i3;i+) str=ReadPair(); break; case 0: Splin
21、eList.Add(newspline); return; public void ReadHeader() while (str1 != ENDSEC) str = ReadPair(); switch (str1) case $EXTMIN: str = ReadPair(); leftx = Double.Parse(str1); str = ReadPair(); lefty = Double.Parse(str1); break; case $EXTMAX: str = ReadPair(); rightx = Double.Parse(str1); str = ReadPair()
22、; righty = Double.Parse(str1); break; /打开DXF文件 private void btOpen_Click(object sender, EventArgs e) btDraw.Enabled = false; LayerList.Clear(); LineList.Clear(); ArcList.Clear(); EllipseList.Clear(); LwopolylineList.Clear(); SplineList.Clear(); this.openFileDialog1.ShowDialog(); if (this.openFileDia
23、log1.FileName.Trim() != ) string path = this.openFileDialog1.FileName; fs = new FileStream(path, FileMode.Open, FileAccess.Read); sr = new StreamReader(fs); Read(); private void btDraw_Click(object sender, EventArgs e) double width = Math.Ceiling(rightx) - Math.Ceiling(leftx) + 40; double height = Math.Ceiling(righty) - Math.Ceiling(lefty) + 40; Bitmap bmp = new Bitmap(int)width, (int)height); Graphics gx = Graphics.FromI
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025劳动合同转让协议范本
- 2025劳动合同书电子版
- 葡萄农业植保知识培训课件
- 物体测试题及答案
- 营销电气知识培训课件
- 物流考试试卷及答案
- 2025设备租赁合同书
- 物联网题库及答案
- 2025关于电子商务平台的合作协议
- 2025年液环真空泵项目建议书
- 考勤培训课件
- 中国黄金集团招聘面试经典题及答案
- GB/T 4026-2025人机界面标志标识的基本和安全规则设备端子、导体终端和导体的标识
- 青岛版科学一年级上册(新教材)1.1 吹泡泡(教学课件)(内嵌视频)
- 感染性心内膜炎术后护理查房
- 家校携手同行砥砺奋进未来高二下学期期中家长会
- 推理能力题目及答案
- (2025秋)人教版二年级数学上册全册教案(新教材)
- 医院科研奖励管理办法
- 上汽大众产品与业务培训
- 物流运输服务承诺与质量保证措施
评论
0/150
提交评论