内容发布更新时间 : 2024/12/23 20:49:57星期一 下面是文章的全部内容请认真阅读。
一、 DXF 格式简介
DXF是Drawing eXchange File的缩写,意思为图形交换文件。DXF 格式是特定版本 AutoCAD 图形文件中所包含的全部信息的标记数据的一种表示方法。标记数据的意思是指在每个数据元素前都带一个称为组码的整数。组码的值表明了其后数据元素的类型,也指出了数据元素对于给定对象(或记录)类型的含意。图形文件中所有用户指定的信息都能够以 DXF 文件格式表示。
1.基本的DXF约定:组码将按照在 DXF 文件中出现的次序列出,而且每章将以DXF文件中的相关区域来命名。 对象和图元的组码
2.在 DXF 格式中,对象的定义与图元的定义不同:图元有图形表示,而对象则没有图形表示。例如,词典是对象而不是图元。对象通常作为非图形对象来使用,图元则作为图形对象来使用。
3.某些定义图元的组码始终会出现,而其他的组码为可选,它们仅在其值与缺省值不同时才出现。读取 DXF 文件的程序不应该假定说明图元的组码是按照给定次序出现的。与说明图元的组码相连的 0 组码表示此图元已结束。0 组码将开始新图元或表示此区域已结束。 注意:图元的组码是按照CAD绘图时绘制不同图形的顺序生成的,并没有固定的顺序。 组码值类型
将与组码关联的值(组值)定义为整型、浮点数型或字符串型。下表为组码的范围。
组码值类型
组码范围 0-9 10-59 60-79 90-99 100 102 105 140-147 170-175 280-289 300-309 310-319 320-329 330-369 370-379 380-389 390-399
组值类型
字符串 (已经去除了255个字符的限制。尽管所有行被限制在2049个字节之内,但每行的字节数却没有直接限制。) 双精度三维点 16 位整数值 32 位整数值
字符串(最多 255 个字符,对于 UNICODE 字符串则更少) 字符串(最多 255 个字符,对于 UNICODE 字符串则更少) 表示十六进制句柄值的字符串 双精度标量浮点值 16 位整数值 8 位整数值 任意文字字符串
表示二进制数据组的十六进制值的字符串 表示十六进制句柄值的字符串 表示十六进制对象标识符的字符串 8 位整数值 8 位整数值
表示十六进制句柄值的字符串
400-409 410-419 999 1000-1009 1010-1059 1060-1070 1071
16 位整数值 字符串 注释(字符串)
字符串(与0-9组码范围的限制一样) 浮点值 16 位整数值 32 位整数值
二、DXF 格式整体结构
DXF 文件完整的结构由以下段落组成:
HEADER 段: 包含有关图形的基本信息。它由 AutoCAD 数据库版本号和一些系统变量组每个参数都包含一个变量名称及其关联的值。
CLASSES 段。包含应用程序定义的类的信息,这些类的实例出现在数据库的 BLOCKS、ENTITIES 和 OBJECTS 段中。类定义在类的层次结构中是固定不变的。 TABLES 段。 包含以下符号表的定义:
a、
线形表(LTYPE)
b、
层表(LYER)
c、
字体表(STYLE)
d、 视图表(VIEW)
e、 用户坐标系统表(UCS)
f、 视窗配置表(VPORT) g、
标注字体表(DIMSTYLE) h、
申请符号表(APPID)
BLOCKS段。包含构成图形中每个块参照的块定义和图形图元。
ENTITIES 段。包含图形中的图形对象(图元),其中包括块参照(插入图元)。实体段记录了每个实体的名称、所在图层及其名字、线型、颜色等。 这里的信息很重要。
OBJECTS 段。 包含图形中的非图形对象。除图元、符号表记录以及符号表以外的所有对象都存储在此段。OBJECTS 段中的条目样例是包含多线样式和组的词典。
THUMBNAILIMAGE 段。包含图形的预览图像数据。此段为可选。 如果使用 SAVE 或 SAVEAS 命令的“选择对象”选项,那么所得到的 DXF 文件的 ENTITIES 段将只包含选择的图元。
下面是对DXF的基本结构举一实例进行说明:
0 SECTION 2 HEADER 9
//0 后接SECTION
//表明这是一个段的开始 //2 后接的是段名
//说明该段是HEADER 段(标题段)
$ACADVER //文件是由AUTOCAD 产生的 1 AC1008
9 //9 后接 $UCSORG
$UCSORG //用户坐标系原点在世界坐标系中的坐标 10 //10 对应 X 0.0 //X 的值 20 //20 对应 Y 0.0 //Y 的值 30 // 30 对应 Z 0.0 //Z 的值 9
$UCSXDIR //这是一段不太相关的部分,略去 10
1.0
... ....
9 //9 后接 $EXTMIN
$EXTMIN //说明三维实体模型在世界坐标系中的最小值 10 //10 对应 X -163.925293 //X 的值 20 //20 对应 Y -18.5415860.0 //Y 的值 30 //30 对应 Z 78.350945 //Z 的值
9 //9 后接 $EXTMAN
$EXTMAX //说明三维实体模型在世界坐标系中的最大值 10 //10 对应 X 202.492279 //X 的值 20 //20 对应 Y 112.634300 //Y 的值 30 //30 对应 Z 169.945602 //Z 的值
0 // 0 后接 ENDSEC ENDSEC //说明这一段结束了 0 // 0 后接SECTION
SECTION //表明这是一个段的开始 2 //2 后接的是段名