版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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;1 / 18 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
4、string2 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();
5、break; sr.Close(); fs.Close(); btDraw.Enabled = true; 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 = Rea
6、dPair(); while (str0 = "0" && str1 = "LAYER") ReadLAYER(); while (str1 != "ENDSEC") str = ReadPair(); private void ReadLAYER() LAYER newlayer = new LAYER(); while (str1 != "ENDTAB") str = ReadPair(); switch (str0) case "2": = st
7、r1; 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(newlayer); return; LayerList.Add(newlayer); private voi
8、d 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 &q
9、uot;SPLINE": ReadSpline(); break; 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;
10、case "20": newarc.CenterY = Double.Parse(str1); break; case "40": newarc.Radiu = 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;
11、break; case "0": ArcList.Add(newarc); return; private void ReadLine() LINE newline = new LINE(); while (str1 != "ENDSEC") str = ReadPair(); switch (str0) case "8": newline.LName = str1; break; case "10": newline.StartX = Double.Parse(str1); break; case "2
12、0": 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; break; case "370": newline.lwidth = str1; break; case "0&quo
13、t;: 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; case "20&
14、quot;: 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 =
15、Double.Parse(str1); break; case "42": newellipse.PEAngle = 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 != "ENDS
16、EC") str = ReadPair(); switch (str0) case "8": newlw.LName = str1; break; case "370": newlw.lwidth = str1; break; case "62": newlw.colornum = str1; break; case "90": newlw.PointCount = Int32.Parse(str1); break; case "70": newlw.Flag = Int32.Pars
17、e(str1); break; case "10": newlw.pointx = new doublenewlw.PointCount; newlw.pointy = new doublenewlw.PointCount; /if (newlw.Flag = 1) newlw.converxity = new doublenewlw.PointCount; /else /newlw.converxity = new doublenewlw.PointCount - 1; newlw.pointx0 = Double.Parse(str1); str=ReadPair();
18、 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.ReadLine().Trim(); i-; else if (temp = "20") string r = sr.ReadLine().Trim(); newlw.pointyi = Double.Pars
19、e(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(); else if (s = "0") sr.ReadLine(); LwopolylineList.Add(newlw); return; else sr.R
20、eadLine(); 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 "370": newspline.lwidth = str1; bre
21、ak; 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 "
22、;12": newspline.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.thr
23、oughpx0 = Double.Parse(str1); str = ReadPair(); newspline.throughpy0 = Double.Parse(str1); str = ReadPair(); for(int i=1;i<newspline.throughpx.Length;i+) str=ReadPair(); if(str0="11") newspline.throughpxi=Double.Parse(str1); i-; else if(str0="21") newspline.throughpyi=Double.P
24、arse(str1); i-; if(newspline.Flag=11) for(int i=0;i<3;i+) str=ReadPair(); break; case "0": SplineList.Add(newspline); return; public void ReadHeader() while (str1 != "ENDSEC") str = ReadPair(); switch (str1) case "$EXTMIN": str = ReadPair(); leftx = Double.Parse(str1
25、); str = ReadPair(); lefty = Double.Parse(str1); break; case "$EXTMAX": str = ReadPair(); rightx = Double.Parse(str1); str = ReadPair(); righty = Double.Parse(str1); break; /打开DXF文件 private void btOpen_Click(object sender, EventArgs e) btDraw.Enabled = false; LayerList.Clear(); LineList.Cl
26、ear(); ArcList.Clear(); EllipseList.Clear(); LwopolylineList.Clear(); SplineList.Clear(); this.openFileDialog1.ShowDialog(); if (this.openFileDialog1.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)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年3月份污水化验员考试真题(附试题及答案)
- 2025年中国乙肝指南试题及答案
- 仁心善行慈善组织与志愿者活动指南
- 职场技能提升与职业发展路径探讨以蚌埠为例
- 互联网产品设计用户体验与交互设计
- 国风音乐史话与名曲赏析
- 赣州中小学教师招聘面试流程与评分标准
- 语言文学知识体系概述与创作赏析
- 2025年陕西航空医科职业技术学校教师招聘(3人)考试笔试备考题库及答案解析
- 营销策划方案制作与执行要点
- (正式版)DB6109∕T 296-2023 《富硒桑叶生产技术规程》
- 医疗机构基本标准
- 国开学位英语考试真题及答案
- 水厂自动化控制系统建设方案
- 透析导管的维护课件
- 高速收费站消防培训课件
- 订单实施跟踪管理办法
- 防饮食中毒安全知识培训课件
- 汽车金融行业车贷评估与风控模型建设方案
- 2025届广东省深圳市高三下学期一模考试英语试题及答案
- 工程监理服务费测算方法与案例解析
评论
0/150
提交评论