DXF格式资料
DXF文档原来是AutoCAD的专用格式,后来开发了。因此格式内容可以直接查看AutoCAD给出的帮助文档:http://docs.autodesk.com/ACD/2011/CHS/filesDXF/WSfacf1429558a55de185c428100849a0ab7-5f35.htm
DXF读取是两行两行读取的,我们关注的信息主要是ENTITIES段。
基本思路:首先需要规划架构!
列出类名称、public 方法名称 引数类型、属性等;
架构会实时根据实作更改,要求与最终的方法等相同。
解析:
1、DxfReader.cs类用来实现读取DXF文档,Read ( ) 方法返回bool类型是因为要用来判断是否读取成功,若读取失败则不需要用GetResult ( ) 来获取读取的内容。
2、用Circle.cs来继承Entity.cs类,主要是考虑以后的拓展性,当需要读取线段等可以直接也继承Entity.cs类。
3、PathOptimiztion.cs类中
先用Classify方法对“圆”进行从大到小分类,半径较小的圆排到前面;
分类好返回的是一个二维的List,因为这样可以直接把半径相同的圆放进一个List<Entity>
中,判断外层有几个List<Entity>
,就有几类半径相同的圆,每个List<Entity>
中有几个Entity
则表示此半径下有几个圆。
接着用PathPlanning方法对分类好的圆进行路径优化(此处只是找的离当前的最近的点来优化路径)。
4、NcWriter.cs类是生成加工档的类,其中的GenerateFile 方法只传入一维的List<Entity>
,主要是方便以后其他地方的调用,因此传入一维List<Entity>
时,是在UI中写For循环,将二维的List< List<Entity> >
剥开,一层一层调用GenerateFile 方法。
注意:
1、类名称要是名词;
2、在搭建架构时,需要考虑整体的拓展性、方法的通用性。
3、方法名称不能是 虚词 例如 Planning(计划) Calculate(计算) Optimize(优化) 等等通用性很强的词,这样会导致调用、阅读时不知道方法的作用是什么。
4、DxfReader.cs类的方法不能写成静态的方法。 例如,若需求变成要同时读取多个DXF文档的时候,就不适用了。
5、属性的名称 尽量表达清楚,例如是否能缩写,缩写是否规范。例如Circle.cs类中有圆心坐标以及半径的属性, 其中圆心坐标属性名称为 CenterX CenterY ,不易写作 X Y 或者 Cx Cy 或者 centerX centerY。