本节介绍 ASCII DXF 文件的格式。只有自行编写程序处理 DXF 文件,或者使用由 AutoLISP ® 和 ObjectARX ® 应用程序获得的图元信息时,才需要使用本节中包含的信息。
相关参考
AutoCAD ® 使用各种格式的文件与其他应用程序交换图形数据。这些格式包括图形交换文件 (DXF™)、二进制 DXF、幻灯片 (SLD) 和幻灯片库 (SLB) 文件格式。
DXF 文件可以是 ASCII 格式,也可以是二进制格式。由于 ASCII DXF 文件格式比二进制文件格式更常用,因此术语 DXF 文件用来表示 ASCII DXF 文件,而术语二进制 DXF 文件则用来表示二进制格式。
相关参考
DXF 文件本质上由代码及关联值对组成。代码(通常称为组码)表明其后的值的类型。使用这些组码和值对,可以将 DXF 文件组织到由记录组成的区域中,这些记录由组码和数据项目组成。在 DXF 文件中,每个组码和值都各占一行。
每段都以一个后跟字符串 SECTION 的组码 0 开始,其后是组码 2 和表示该段名称的字符串(例如,HEADER)。每段都由定义其元素的组码和值组成。每段都以一个后跟字符串 ENDSEC 的组码 0 结束。
从小图形中生成 DXF 文件,打印出来并在阅读本文时参考,可能会有助于用户理解本文的内容。
DXF 文件完整的结构如下:
APPID(应用程序标识表)
BLOCK_RECORD(块参照表)
DIMSTYLE(标注样式表)
LAYER(图层表)
LTYPE(线型表)
STYLE(文字样式表)
UCS(用户坐标系表)
VIEW(视图表)
VPORT(视口配置表)
如果使用 SAVE 或 SAVEAS 命令的“选择对象”选项,那么所得到的 DXF 文件的 ENTITIES 区域将只包含选择的图元。
相关参考
组码和关联值定义对象或图元的特定方面。紧接着组码的一行是关联值。该值可以是字符串、整数或浮点值,例如点的 X 坐标。组中第二行后面的行(如果存在)由组定义和与组关联的数据确定。
特殊组码用作文件分隔符,例如用于表示段和表的开始和结束,以及文件本身结束的标记。
图元、对象、类、表和表条目以及文件分隔符通过 0 组码(其后是用于描述该组的名称)引入。
DXF 文件字符串的最大长度是 256 个字符。如果 AutoCAD 图形中包含的字符串超出了此数字,则在执行 SAVE、SAVEAS 和 WBLOCK 时将截断那些字符串。如果 DXF 文件包含的字符串超出了此长度,OPEN 和 INSERT 命令将失败。
相关参考
应用程序可以使用 AutoLISP getvar 函数检索这些变量的值。
以下是 DXF™ 文件的 HEADER 区域的样例:
| 0 SECTION 2 HEADER | HEADER 段的开始 |
| 9 $<变量> <组码> <值> | 为每个标题变量重复一次 |
| 0 ENDSEC | HEADER 段的结束 |
相关参考
以下是 DXF 文件 CLASSES 段的样例:
| 0 SECTION 2 CLASSES | CLASSES 段的开始 |
| 0 CLASS 1 <类 dxf 记录> 2 <类名> 3 <应用程序名> 90 <标志> 280 <标志> 281 <标志> | 为每个条目重复一次 |
| 0 ENDSEC | CLASSES 段的结束 |
相关参考
以下是 DXF 文件 TABLES 段的样例。
| 0 SECTION 2 TABLES | TABLES 段的开始 |
| 0 TABLE 2 <表类型> 5 <句柄> 100 AcDbSymbolTable 70 <最大条目数量> | 通用表组码;为每个条目重复一次 |
| 0 <表类型> 5 <句柄> 100 AcDbSymbolTableRecord . . <数据> . | 表条目数据;为每个表记录重复一次 |
| 0 ENDTAB | 表的结束 |
| 0 ENDSEC | TABLES 段的结束 |
相关参考
以下是 DXF 文件 BLOCKS 段的样例:
| 0 SECTION 2 BLOCKS | BLOCKS 段的开始 |
| 0 BLOCK 5 <句柄> 100 AcDbEntity 8 <图层> 100 AcDbBlockBegin 2 <块名> 70 <标志> 10 <X 值> 20 <Y 值> 30 <Z 值> 3 <块名> 1 <外部参照路径> | 每个块条目的开始(块图元定义) |
| 0 <图元类型> . . <数据> . | 块中的每个图元定义有一个条目 |
| 0 ENDBLK 5 <句柄> 100 AcDbBlockEnd | 每个块条目的结束(endblk 图元定义) |
| 0 ENDSEC | BLOCKS 段的结束 |
相关参考
以下是 DXF 文件 ENTITIES 段的样例:
| 0 SECTION 2 ENTITIES | ENTITIES 段的开始 |
| 0 <图元类型> 5 <句柄> 330 <指向所有者的指针> 100 AcDbEntity 8 <图层> 100 AcDb<类名> . . <数据> . | 每个图元定义一个条目 |
| 0 ENDSEC | ENTITIES 段的结束 |
相关参考
以下是 DXF 文件 OBJECTS 段的样例:
| 0 SECTION 2 OBJECTS | OBJECTS 段的开始 |
| 0 DICTIONARY 5 <句柄> 100 AcDbDictionary | 命名对象词典(根词典对象)的开始 |
| 3 <词典名> 350 <子对象句柄> | 为每个条目重复一次 |
| 0 <对象类型> . . <数据> . | 对象数据组 |
| 0 ENDSEC | OBJECTS 段的结束 |
相关参考
通过 DXF 文件编写与 AutoCAD 通信的程序似乎比实际情况要难。使用 DXF 格式可以轻松地忽略不需要的信息,而只读取需要的信息。
相关参考
DXF 参考主题中列出的每个组码均由数字组码值和说明表示。所有组码都可以应用于 DXF™ 文件和/或应用程序(AutoLISP 或 ObjectARX)。如果应用程序与 DXF 文件具有不同的代码说明(代码说明只适用于二者之一),说明前面将添加以下标识符:
如果 DXF 文件和应用程序具有相同的代码说明,说明前面将不显示任何标识符。
可选代码的说明中有“可选”字样。
相关概念
在 DXF™ 格式中,对象的定义与图元的定义不同:对象没有图形表示,而图元则有图形表示。例如,词典是对象而不是图元。图元也称为图形对象,而对象称为非图形对象。
图元出现在 DXF 文件的 BLOCK 和 ENTITIES 段。组码在这两段中的用法相同。
定义图元的某些组码始终显示;其他组码是可选的,仅当其值与默认值不同时才显示。
编写程序时请不要按照此处显示的次序。图元的结尾由下一个 0 组表示,该组表示下一个图元的开始或指示此段已结束。
注意:如果以表驱动的方式编写 DXF 处理程序,忽略未定义的组码,且对图元中的组码次序不做任何假定,那么将比较容易在 AutoCAD ® 以后的版本中调整 DXF 文件。在每个新的 AutoCAD 发行版中,都会在图元中添加一些新组码,以提供更多功能。
相关概念
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删