项目来源:
这个项目是一个老师在外面接的。最后转给我来弄了。
项目要求:
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