第一章:认识 CAD 图形文件 —— DXF 格式
AutoCAD 的 DXF 文件有两种存储形式:ASCII DXF和二进制DXF。
1 ASCII DXF
- 形式:纯文本文件(.dxf),内容用 可读的 ASCII 字符 表示。
- 特点:
- 每个 DXF 文件由「组码(group code)」+「数据值」的形式组成。
- 组码是一个整数(表示该数据的含义,比如图层名、坐标、颜色等)。
- 数据值则是对应的数值或字符串。
- 人可以直接用文本编辑器(如 Notepad、VSCode)打开和阅读。
- 优点:可读性强,便于调试、学习 DXF 格式。
- 缺点:文件体积大,解析速度相对较慢。
示例(ASCII DXF 圆)
0
CIRCLE
8
0
10
100.0
20
200.0
30
0.0
40
50.0
2 Binary DXF(二进制 DXF)
- 形式:扩展名仍是 .dxf,但内容采用 二进制编码存储。
- 特点:
- 仍然遵循组码/值的结构,但数值直接以二进制写入,而不是文本。
- 文件体积比 ASCII DXF 小很多。
- 解析速度更快(机器直接读数值,不需要从字符串转换)。
- 人类几乎无法直接阅读,必须用程序解析。
- 优点:效率高、文件小,适合大模型。
- 缺点:不可直接用文本编辑器查看,不便于调试。
为了更直观地理解 DXF 文件的组成,我们以 ASCII DXF 文件 为例,对其基本结构进行讲解和分析。
DXF文件本质上是由组码和关联值组成。每个组码和值都各占一行。同一种图元是由一个区域地组码和值构成。DXF 文件的数据结构是按区块(section)划分的。DXF完整结构如下:
- HEADER:存储图形的基本信息,包括数据库版本号和一些系统变量。每个系统变量都由变量名和相应的值表示。
- CLASSES:记录应用程序定义的类及其属性,这些类的实例可在 BLOCKS、ENTITIES 和 OBJECTS 区块中找到。类的层次结构是固定的,不可更改。
- TABLES:
- APPID
- BLOCK_RECORD
- DIMSTYLE
- LAYER
- LTYPE
- STYLE
- UCS
- VIEW
- VPORT
下面将详细介绍 DXF 文件中每个区块的结构及其组成。
HEADER区块的结构如下:
每个区块(section)的结构如下:
开头五行:
1) 0 —— 标记区块开始
2) SECTION —— 区块类型
3) 2 —— 固定组码
4) 区块名称 —— 如 HEADER、TABLES 等
5)9 —— 表示“接下来是变量名”
中间内容:
每组三行表示一个变量或条目:
1) $变量名
2) 对应的组码
3) 变量的值
结尾:
1) 0 —— 标记区块结束
2) ENDSEC