DXF(Drawing Exchange Format,图形交换格式)是 Autodesk 公司推出的一种开放式图形数据交换格式,用于实现 AutoCAD 与其他软件之间的图形数据交换。DXF 格式的核心思想是以带标记数据的形式来表示图形文件中包含的所有信息。
所谓带标记数据,是指文件中的每个数据元素前面都带有一个称为组码(Group Code)的整数。组码的值既指明了后面数据元素的类型(整数、浮点数、字符串等),也指明了该数据元素对于给定对象(或记录)类型的含义。
实际上,图形文件中所有用户指定的信息都可以用 DXF 格式来表示。这使得 DXF 成为 CAD/CAM 领域最广泛使用的数据交换标准之一。
DXF 文件支持两种存储格式:
本教程主要针对 ASCII DXF 格式进行讲解。
组码是 DXF 格式的核心。一个组码和它后面的数据组成一个“组”,格式为:
例如,以下两组数据表示一个圆的圆心坐标为 (0,0):
10 0.0 20 0.0 30 0.0
其中组码 10、20、30 分别表示点的 X、Y、Z 坐标。
根据组码的范围,可以判断其后数据值的类型:
| 组码范围 | 值类型 |
|---|---|
| 0 - 9 | 字符串 |
| 10 - 39 | 双精度三维点值 |
| 40 - 59 | 双精度浮点值 |
| 60 - 79 | 16 位整数值 |
| 90 - 99 | 32 位整数值 |
| 100 | 字符串(子类标记) |
| 102 | 控制字符串 |
| 105 | 十六进制句柄值 |
| 110 - 149 | 双精度浮点值 |
| 170 - 179 | 16 位整数值 |
| 210 - 239 | 双精度浮点值 |
| 270 - 289 | 16 位整数值 |
| 290 - 299 | 布尔标志值 |
| 300 - 309 | 任意字符串 |
| 310 - 319 | 二进制数据块(十六进制) |
| 320 - 369 | 十六进制句柄/对象ID |
| 370 - 389 | 16 位整数值(线宽等) |
| 390 - 399 | 十六进制句柄值 |
| 400 - 409 | 16 位整数值 |
| 410 - 419 | 字符串 |
| 420 - 429 | 32 位整数值(真彩色) |
| 430 - 439 | 字符串 |
| 440 - 449 | 32 位整数值(透明度) |
| 450 - 459 | 长整数 |
| 460 - 469 | 双精度浮点值 |
| 470 - 479 | 字符串 |
| 999 | 注释(字符串) |
| 1000 - 1009 | 扩展数据字符串 |
| 1010 - 1059 | 扩展数据双精度浮点值 |
| 1060 - 1070 | 扩展数据 16 位整数 |
| 1071 | 扩展数据 32 位整数 |
在 DXF 格式中,对象(Object)和图元(Entity)是两个不同的概念:
部分组码在图元中是固定的,即始终具有相同的用途。例如组码 0 始终表示图元类型,组码 8 始终表示图层名。
如果组码不是固定的,则其用途取决于上下文。例如组码 10 在 LINE 图元中表示起点,在 CIRCLE 图元中表示圆心,在 TEXT 图元中则表示文字插入点。
在编写 DXF 处理程序时,建议遵循以下原则:
本章介绍了 DXF 格式的基本概念,包括组码的定义、值类型、对象与图元的区别等。理解这些基本概念是后续深入学习各章节的基础。下一章将介绍 DXF 文件的整体结构。