欢迎光临
我们一直在努力

两个dxf文件合并成一个文件,dxf格式提取数据

项目来源:

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

项目要求:

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香港vps, 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等表示这张图的坐标。?最后我会根据这些信息来决定显示的缩放比和位移量。

?

72488362

赞(0)
【声明】:本博客不参与任何交易,也非中介,仅记录个人感兴趣的主机测评结果和优惠活动,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。