好久没有在csdn发主题帖了,最近终于遇到问题了,呵呵。
最近做毕业设计《dxf文件解读与应用》,我的任务就是读取dxf文件中的二维图元,把它们的坐标等信息存放在解读文件中。
读取图元倒是没有问题,现在我已经做出框架了,并已经能够读取点、线段和圆了。而且通吃R2.5\R2.6\R9\R10\R11-12\R13\R14\2000-2002\2004-2005-2006\2007-2008等各种版本的dxf文件。
程序能够读取dxf文件中的点、线段和圆等图形的坐标等信息,放在配置文件中。
格式如下:
[Point]
X=326.6078477381652
Y=240.5280832292311
[Point]
X=273.248217791049
Y=121.5363578482403
[Line]
StartX=203.7634235075645
StartY=157.2901380635241
EndX=346.8375975232752
EndY=176.0424335210514
[Circle]
X=193.1393992559836
Y=151.4289937780043
Radius=66.34630654827721
虽然程序写的差不多了,但是苦于对autocad不熟悉,导致对一些基本信息还是理解不很透彻,其实就是对dxf文件HEADER段的一些东西还有些疑问。分条说明。
1.关于dxf文件的度量单位读取问题(公制 or 英制)。
经过研究,在R14到autocad 2008版本的dxf文件中可以直接读取HEADER段的标题变量$measurement来获得度量单位,该变量的值为0时为英制,为1时是公制。
但是在R14以下的dxf文件中却没有变量$measurement。导致一些问题,经过分析,发现在R11、R12、R13版本的dxf中可以读取标题变量$DIMSTYLE来区分度量单位,该变量为值为ISO-25时为公制,为STANDARD时是英制。
但是新的问题又来了,在R2.5、R2.6、R9、R10版本的dxf中这两个变量都不存在。晕啊。。
请熟悉的朋友说明一下这种方法是否正确。
2.图纸大小问题。怎么读取?
我现在用的方法是读取HEADER段标题变量$EXTMAX得到图形范围右上角点的坐标,再读取$EXTMIN得到图形范围左下角点的坐标,然后计算出图纸大小。由于一直没有找到相关资料,这个问题到现在都是心里的一块石头。希望了解的朋友详细告知。
3.dxf或者说cad的坐标系问题,还有比例问题
因为后面有人要用我的程序生成数据,例如,要用我生成的配置文件中的圆去打孔,就涉及到一个坐标问题和比例问题,
比如上面的圆
[Circle]
X=193.1393992559836
Y=151.4289937780043
Radius=66.34630654827721
这是直接从dxf中读取的数据,X是圆心的X坐标,Y是圆心的Y坐标,Radius是圆的半径。
现在我就想问上面的数据是绝对数据么?对cad的比例不了解,如果cad里画图的时候用的比例不是1:1的话,那么生成的dxf文件的数据是相对的,还是按比例换算好的了??也就是说dxf文件中的数据都是绝对数据么??
还有别人读取这个圆的数据后,怎么确定圆的位置,虽然有坐标,但是这个坐标系是怎么建立的。是约定俗成的还是在dxf文件中有相应的信息说明。
就这几个问题了,请熟悉的朋友指点一下。
分数不多,解决问题,再加100分。