DXF文件解析显示(读取,合并,保存) 您所在的位置:网站首页 DXF文档图片 DXF文件解析显示(读取,合并,保存)

DXF文件解析显示(读取,合并,保存)

2023-06-09 23:43| 来源: 网络整理| 查看: 265

项目来源:

这个项目是一个老师在外面接的。最后转给我来弄了。

项目要求:

1.C#自定义控件,可以显示DXF文件,支持多张显示(合并为一个图)。

2.要求可以保存合并后的图形,保存格式为DXF文件。

一个项目介绍面面俱到,对我还是有些困难。我就拿出一些值得写的点吧。如果您正好也在做DXF解析,可能会有些作用。

1.读取的主要方法。

while (line2 != "EOF") { while (line1 == "0" && line2 != "EOF") { if (line2 == "LINE") LineModule(reader, out line1, out line2); else if (line2 == "LWPOLYLINE") PolylineModule(reader, out line1, out line2); else if (line2 == "CIRCLE") CircleModule(reader, out line1, out line2); else if (line2 == "ARC") ArcModule(reader, out line1, out line2); else if (line2 == "TEXT" || line2 == "MTEXT") TextModule(reader,out line1,out line2); else GetLineCouple(reader, out line1, out line2); } if (line2 != "EOF") GetLineCouple(reader, out line1, out line2); }

 

这段代码用来分拣不同的实体。GetLineCouple(reader, out line1, out line2)这个方法是读取DXF两行内容。Reader是StreamReader类的实体,指向读取的问津,line1和line2是读取的两行。

下面的代码描述的是LineModule的主要读取代码

       

do { GetLineCouple(reader, out line1, out line2); Line1 = Convert.ToInt32(line1); switch (Line1) { case 5: Debug.WriteLine(line2); break; case 10: x1 = Convert.ToDouble(line2); if (x1 > XMax) XMax = x1; if (x1 < XMin) XMin = x1; break; case 20: y1 = Convert.ToDouble(line2); if (y1 > YMax) YMax = y1; if (y1 < YMin) YMin = y1; break; case 11: x2 = Convert.ToDouble(line2); if (x2 > XMax) XMax = x2; if (x2 < XMin) XMin = x2; break; case 21: y2 = Convert.ToDouble(line2); if (y2 > YMax) YMax = y2; if (y2 < YMin) YMin = y2; break; case 62: color = Convert.ToInt16(line2); c = IndexToRGB(color, r, g, b); break; } } while (line1 != "0");

 

其中XMin、YMin等表示这张图的坐标。 最后我会根据这些信息来决定显示的缩放比和位移量。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有