====== DXF 概述与基本概念 ====== ===== 什么是 DXF ===== DXF(Drawing Exchange Format,图形交换格式)是 Autodesk 公司推出的一种**开放式图形数据交换格式**,用于实现 AutoCAD 与其他软件之间的图形数据交换。DXF 格式的核心思想是以**带标记数据**的形式来表示图形文件中包含的所有信息。 所谓**带标记数据**,是指文件中的每个数据元素前面都带有一个称为**组码**(Group Code)的整数。组码的值既指明了后面数据元素的类型(整数、浮点数、字符串等),也指明了该数据元素对于给定对象(或记录)类型的含义。 实际上,图形文件中所有用户指定的信息都可以用 DXF 格式来表示。这使得 DXF 成为 CAD/CAM 领域最广泛使用的数据交换标准之一。 ===== DXF 的两种格式 ===== DXF 文件支持两种存储格式: * **ASCII DXF 文件**(.dxf):文本格式,可直接用文本编辑器打开查看和编辑,便于二次开发调试。 * **二进制 DXF 文件**:采用二进制格式,文件更小,读写速度更快,但不易直接查看。 本教程主要针对 ASCII DXF 格式进行讲解。 ===== 组码(Group Code)的概念 ===== 组码是 DXF 格式的核心。一个组码和它后面的数据组成一个"组",格式为: * 第 1 行:组码(整数) * 第 2 行:组码对应的值 例如,以下两组数据表示一个圆的圆心坐标为 (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)是两个不同的概念: * **图元**(Entity):有图形表示的对象,也称为**图形对象**,如直线、圆、圆弧、文字等。图元出现在 DXF 文件的 BLOCKS 段和 ENTITIES 段。 * **对象**(Object):没有图形表示的对象,也称为**非图形对象**,如词典、图层、线型定义等。对象出现在 OBJECTS 段。 ===== 组码的固定与可变 ===== 部分组码在图元中是**固定**的,即始终具有相同的用途。例如组码 **0** 始终表示图元类型,组码 **8** 始终表示图层名。 如果组码不是固定的,则其用途取决于上下文。例如组码 **10** 在 LINE 图元中表示起点,在 CIRCLE 图元中表示圆心,在 TEXT 图元中则表示文字插入点。 ===== 编写 DXF 处理程序的原则 ===== 在编写 DXF 处理程序时,建议遵循以下原则: * 以表驱动的方式编写,忽略未定义的组码。 * 不对图元中组码的次序做任何假定。 * 这样可以更容易地适配 AutoCAD 以后的新版本,因为每个新版本都可能在图元中添加新组码。 ===== 本章小结 ===== 本章介绍了 DXF 格式的基本概念,包括组码的定义、值类型、对象与图元的区别等。理解这些基本概念是后续深入学习各章节的基础。下一章将介绍 DXF 文件的整体结构。