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


一、DXF文件结构 

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

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

SECTION 

HEADER 

...... 

ENDSEC 

2、类段:它由程序自己定义的各种类,类的具体内容在后面的各段中。 

例:(类段) 

SECTION 

CLASSES 
...... 

ENDSEC 

3、表段:它有四个表(线型表、图层表、字样表、视图表)构成。 

例: 

SECTION 

TABLES 
注:线型表 

TABLE 

LTYPE 
...... 

ENDTAB 
注:图层表 


TABLE 

LAYPE 
...... 

ENDTAB 
注:字样表 


TABLE 

STYLE 
...... 

ENDTAB 
注:视图表 

TABLE 

VIEW 
...... 

ENDTAB 


ENDSEC 

4、块段:它由图形中块的各个参数构成。 

例: 

SECTION 

TABLES 
...... 

ENDSEC 

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

例: 

SECTION 

ENTITIES 

LINE(线) 
…… 
ENDSEC 

6、对象段:包含图形中的非图形状态。 

例: 

SECTION 

OBJECTS 

ENDSEC 

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

二、DXF文件段数据组成。 

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

三、DXF文件的读取错误及分析解决。 

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

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