CADCAM技术的不断发展,DXF文件作为一种通用格式在CAD与CAM之间传递应用,但由于不同软件之间的结构或处理方式的差异,使得DXF文件在读取中经常会出现一些故障。现将DXF文件的结构与表达关系分析如下,希望对需要处理DXF文件的读者有所帮助。


一、DXF文件结构
DXF文件是一个顺序文件,主要是由:标题段、类段、表段、块段、实体段、对象段六段组成;各段由”0” “SECTION”
开始, “0” “ENDSEC”结束。介绍如下:

 
1、标题段:主要描述图形的基本信息,由AUTOCAD系统变量组成,包括一个变量名和变量值。
例:(标题段)
0
SECTION
2
HEADER
9
......
0
ENDSEC


2、类段:它由程序自己定义的各种类,类的具体内容在后面的各段中。
例:(类段)
0
SECTION
2
CLASSES
......
0
ENDSEC


3、表段:它有四个表(线型表、图层表、字样表、视图表)构成。
例:
0
SECTION
2
TABLES
注:线型表
0
TABLE
2
LTYPE
......
0
ENDTAB
注:图层表
0
TABLE
2
LAYPE
......
0
ENDTAB
注:字样表
0
TABLE
2
STYLE
......
0
ENDTAB
注:视图表
0
TABLE
2
VIEW
......
0
ENDTAB
0
ENDSEC

 
4、块段:它由图形中块的各个参数构成。
例:
0
SECTION
2
TABLES
......
0
ENDSEC


5、实体段:它描述了实体中所有信息(如实体名称,所在图层,线型,颜色、坐标尺寸),它是所有段中能直观表现图形特征的段。
例:
0
SECTION
2
ENTITIES
0
LINE(线)
……
ENDSEC

6、对象段:包含图形中的非图形状态。
例:
0
SECTION
2
OBJECTS
0
ENDSEC


DXF图形以“0” “EOF”结束。


二、DXF文件段数据组成。
DXF文件各段均由组构成,每个组分为两行数据,第一行为组码,由自然数构成,表示第二行代码的含义。一般来说常用组码的含义是固定的,但是有些组代码会因表达环境的不同而有多个含义。在分析时需要根据不同的段和不同的表达而判断。(0:表示事物开始,1:表示事物属性中的值,2:表示事物的名字,3~5:表示事物解释
0:表示一个开始,如一个块、表、图层、实体等。6、7、8表示固定类型。如线形、图层。10以上的是用到实体段的居多,有多个含义,要具体分析。


三、DXF文件的读取错误及分析解决。
1、 出现图形读不出来或者缺少,主要原因是因为程序在读取中类建立得不完善,导致有些类数据丢失。
2、 读出来的图形多线或与原图不符,主要是读取中把其他类的读入到自己的类中造成的。
3、 读出来的图形边界不完整,主要是在编程中没有考虑数据范围,导致只能读取部分。


综上所述,要使图形读入完整,建议导出前光滑后炸开,这样所以的图形都变成小块后,读入错误会大大降低。