在AutoCAD中正确应用DXF图形文件格式
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在AutoCAD中正确应用DXF图形文件格式
一、DXF文件格式分析
DXF文件由标题段、表段、块段、实体段和文件结束段5部分组成,其内容如下。
☆标题段(HEADER)标题段记录AutoCAD系统的所有标题变量的当前值或当前状态。标题变量记录了AutoCAD系统的当前工作环境,如SNAP捕捉当前状态、栅格间距式样、当前图层层名及线型、颜色等。
☆表段(TABLES)表段共包含4个表,每个表又包含可变数目的表项。这些表在文件中出现的顺序是线型表(LTYPE)、图层表(LAYER)、字样表(STYLE)、视图表(VIEW)。
☆块段(BLOCK)块段记录了所用块的块名,当前图层层名、块的种类、块的插入基点及组成该块的所有成员。块的种类分为图形块、带有属性的块和无名块三种。无名块包括用HATCH
命令生成的剖面线和用DIM命令所完成的尺寸标准。
☆实体段(ENTITIES)实体段记录了每个实体的名称、所在图层及其名字、线型、颜色等。☆文件结束段(EOF OF FILE)DXF文件的结束标志。
一个DXF文件由若干个组构成,每个组占两行,第一行为组的代码,第二行为组值。组代码相当于数据类型的代码,它由CAD图形系统所规定,而组值为具体的数值,二者结合起来表示一个数据的含义和值。例如,代码10代表一个点的X坐标,占一行,而其第二行4.5425则是点X坐标的具体数值,二者结合表示一点,其X坐标值为4.5425。
(1)组代码和组值的类型组代码为一个非负的不超过三位的整数,而组值由组代码的类型决定。例如:
代码0~9组值类型为字符型。
代码10~59组值类型为实型。
代码60~79组值类型为整型。
代码999表示解释行。
(2)组代码的含义每个组代码均有规定的含义,有些代码含义是固定的,而有些组代码则因应用场合不同而有多个含义,应具体分析。另外,一些代码是备用的,目前版本尚未用到,现将他们的含义举例介绍如下。
0:表示一个事物的开始,如一个块、表、图层、实体等。
1:字符型数据的值,如TEXT的字符串、文件名、属性值等。
2:一个事物的名字,如段、表、块、线型、视图等的名字。
3~5:字符型数据的值,如文件名、线型说明等。
6:线型名(固定类型)。
8:图层名(固定类型)。
关于实体的坐标与相应的组代码10~18、20~28、30~38的用法应根据实体所用到点的数量,按组代码个位的0、1、2、……的顺序使用。例如LINE的起点组代码为10、20、30,而11、21、31为其终点。其他类似。
DXF文件的结构相当复杂,完整读取DXF文件也是一项异常繁琐的工程。在实际应用中,为了提取图形的实体信息,可以省略DXF文件中的许多项,只要获取其中的层表、块段和实体段,就可以完成相应几何图形的描述。在层表中说明每一层的颜色、线型,在块段中说明块所在的层、属性及其在图形中的位置,在实体段中说明直线的起点、终点及圆的圆心、半径等几何信息和各实体所在的层。根据实体所在的层,在层表中搜索每一层的颜色、线型并将其添加到实体对象中。在利用CAD进行绘图时,需将变量参数DIMASO设为ON,以保证块段中定义的尺寸块为一个整体,并可被正确无误地获取。根据尺寸类型名、尺寸定义的起点、终点坐标与实体类型名、实体空间坐标是否匹配,对实体对象进行尺寸附加。在绘图时,如对自定义的粗糙度、形位公差等块不进行“EXPLODE”炸开操作,也可通过增加相应读取函数提取其属性。
下面举例说明实体段在DXF文件中的格式。
圆弧(ARC)
0(开始)ARC(圆弧)
8(层的组码)
W1(层名为“W1”)
10(圆弧圆心的X坐标组码)
7.0(圆弧圆心的X坐标组值)
20(圆弧圆心的Y坐标组码)
9.0(圆弧圆心的Y坐标组值)
30(圆弧圆心的Z坐标组码)
0.0(圆弧圆心的Z坐标组值)
40(圆弧的半径组码)
25.0(圆弧的半径值)
50(圆弧的起始角度组码)
90.0(圆弧的起始角度值)
51(圆弧的终止角度组码)
180.0(圆弧的终止角度组值)
若实体的线型用BYLAYER,颜色为256(即BYLAYER),基面高度和厚度为零,其格式可简化。
对于其他图形实体的格式描述(LINE、CIRCLE、TEXT等),这里就不再一一详述了。二、几何图形实体信息的提取
生成DXF文件必须首先进入图形编辑环境,在命令(Command)提示下键入DXFOUT,回答所需的一个文件名后,即把内部压缩格式的图形数据转换为ASCⅡ的数据并写入相应DXF文件(以DXF为扩展名)中,供应用程序提取并处理实体数据。
三、几何图形描述的数据结构
通过对CAD系统的DXF图形交换文件进行分析,可以得到描述零件的全部几何图形元素。为简化问题,设定组成零件内外轮廓的图形元素只包括点、直线和圆弧,并分别用下列数据结构表示。
点:class POINT { float x;float y;float z;}虚基类:class SHAPE{ //由虚基类派生出直线、圆弧,便于链表操作public:
[replyview]
virtual void showEntity()=0;//表示此函数在派生类中必须定义
……//在此定义其他虚函数}
直线:
class LINE:public SHAPE,public POINT{ public://直线类由两个基类SHAPE和POINT 派生而来
POINT start_point;//直线起点
POINT end_point;//直线终点
……//在此定义其他内部变量和函数}
圆弧:class ARC:public SHAPE,public POINT{ public://圆弧类由两个基类SHAPE 和POINT派生而来
POINT center_point;//圆弧圆心
POINT start_point;//圆弧起点
POINT end_point;//圆弧终点
float radius;//圆弧半径
……//在此定义其他内部变量和函数}
结点:
struct Node //定义结点,便于链表内部删除,增加和修改
{SHAPE *Item;//内容域