由于Autodesk CAD帮助文档里面资料比较多,在实际简单使用中,没必要查看所有资料,因而整理高效有用的资料如下
关于 DXF 文件的基本结构 (DXF)
DXF 文件本质上由代码及关联值对组成。代码(通常称为组码)表明其后的值的类型。使用这些组码和值对,可以将 DXF 文件组织到由记录组成的区域中,这些记录由组码和数据项目组成。在 DXF 文件中,每个组码和值都各占一行。
每段都以一个后跟字符串 SECTION 的组码 0 开始,其后是组码 2 和表示该段名称的字符串(例如,HEADER)。每段都由定义其元素的组码和值组成。每段都以一个后跟字符串 ENDSEC 的组码 0 结束。
从小图形中生成 DXF 文件,打印出来并在阅读本文时参考,可能会有助于用户理解本文的内容。
DXF 文件完整的结构如下:
- HEADER 段。包含图形的基本信息。它由 AutoCAD 数据库版本号和一些系统变量组成。每个参数都包含一个变量名称及其关联的值。
- CLASSES 段。包含应用程序定义的类的信息,这些类的实例出现在数据库的 BLOCKS、ENTITIES 和 OBJECTS 段中。类定义在类的层次结构中是固定不变的。
- TABLES 段。包含以下符号表的定义:
APPID(应用程序标识表)
BLOCK_RECORD(块参照表)
DIMSTYLE(标注样式表)
LAYER(图层表)
LTYPE(线型表)
STYLE(文字样式表)
UCS(用户坐标系表)
VIEW(视图表)
VPORT(视口配置表)
- BLOCKS 段。包含构成图形中每个块参照的块定义和图形图元。
- ENTITIES 段。包含图形中的图形对象(图元),其中包括块参照(插入图元)。
- OBJECTS 段。包含图形中的非图形对象。除图元、符号表记录以及符号表以外的所有对象都存储在此段。OBJECTS 段中的条目样例是包含多线样式和组的词典。
- THUMBNAILIMAGE 段。包含图形的预览图像数据。此段为可选。
如果使用 SAVE 或 SAVEAS 命令的“选择对象”选项,那么所得到的 DXF 文件的 ENTITIES 区域将只包含选择的图元。
相关参考
组码值类型参考 (DXF)
根据下面的组码范围表,组码将相关值的类型定义为整数、浮点数或字符串。
组码值类型 |
代码范围 | 组值类型 |
0-9 | 字符串(随着从 AutoCAD 2000 起引入了扩展符号名称,字数限制已由 255 个字符扩大到 2049 个单字节字符,不包括行末的换行符) |
10-39 | 双精度三维点值 |
40-59 | 双精度浮点值 |
60-79 | 16 位整数值 |
90-99 | 32 位整数值 |
100 | 字符串(最多 255 个字符;对于 Unicode 字符串,字符数要少一些) |
102 | 字符串(最多 255 个字符;对于 Unicode 字符串,字符数要少一些) |
105 | 表示 16 进制 (hex) 句柄值的字符串 |
110-119 | 双精度浮点值 |
120-129 | 双精度浮点值 |
130-139 | 双精度浮点值 |
140-149 | 双精度标量浮点值 |
160-169 | 64 位整数值 |
170-179 | 16 位整数值 |
210-239 | 双精度浮点值 |
270-279 | 16 位整数值 |
280-289 | 16 位整数值 |
290-299 | 布尔标志值 |
300-309 | 任意字符串 |
310-319 | 表示二进制数据块的十六进制值的字符串 |
320-329 | 表示 16 进制句柄值的字符串 |
330-369 | 表示十六进制对象 ID 的字符串 |
370-379 | 16 位整数值 |
380-389 | 16 位整数值 |
390-399 | 表示 16 进制句柄值的字符串 |
400-409 | 16 位整数值 |
410-419 | 字符串 |
420-429 | 32 位整数值 |
430-439 | 字符串 |
440-449 | 32 位整数值 |
450-459 | 长整数 |
460-469 | 双精度浮点值 |
470-479 | 字符串 |
480-481 | 表示 16 进制句柄值的字符串 |
999 | 注释(字符串) |
1000-1009 | 字符串(与 0-9 代码范围的限制相同) |
1010-1059 | 双精度浮点值 |
1060-1070 | 16 位整数值 |
1071 | 32 位整数值 |
相关概念
按数字次序排列的 DXF 组码参考
下表列出了组码或组码范围以及组码值的解释。在此表中,“固定”表明组码始终具有相同的用途。如果组码不固定,则其用途取决于上下文。
按数字次序排列的组码 |
组码 | 说明 |
-5 | APP:永久反应器链 |
-4 | APP:条件运算符(仅与 ssget 一起使用) |
-3 | APP:扩展数据 (XDATA) 标记(固定) |
-2 | APP:图元名参照(固定) |
-1 | APP:图元名。每次打开图形时,图元名都会发生变化,从不保存(固定) |
0 | 表示图元类型的字符串(固定) |
1 | 图元的主文字值 |
2 | 名称(属性标记、块名等) |
3-4 | 其他文字或名称值 |
5 | 图元句柄;最多 16 个十六进制数字的字符串(固定) |
6 | 线型名(固定) |
7 | 文字样式名(固定) |
8 | 图层名(固定) |
9 | DXF:变量名称标识符(仅在 DXF 文件的 HEADER 段中使用) |
10 | 主要点;直线或文字图元的起点、圆的圆心,等等 DXF:主要点的 X 值(后跟 Y 和 Z 值代码 20 和 30) APP:三维点(三个实数的列表) |
11-18 | 其他点 DXF:其他点的 X 值(后跟 Y 值代码 21-28 和 Z 值代码 31-38) APP:三维点(三个实数的列表) |
20, 30 | DXF:主要点的 Y 值和 Z 值 |
21-28, 31-37 | DXF:其他点的 Y 值和 Z 值 |
38 | DXF:如果非零,则为图元的标高 |
39 | 如果非零,则为图元的厚度(固定) |
40-48 | 双精度浮点值(文字高度、缩放比例等) |
48 | 线型比例;双精度浮点标量值;默认值适用于所有图元类型 |
49 | 重复的双精度浮点值。一个图元的可变长度表(例如,LTYPE 表中的虚线长度)中可能会出现多个 49 组。7x 组始终出现在第一个 49 组之前,用以指定表的长度 |
50-58 | 角度(在 DXF 文件中以度为单位,在 AutoLISP 和 ObjectARX 应用程序中以弧度为单位) |
60 | 图元可见性;整数值;未赋值或值为 0 时表示可见;值为 1 时表示不可见 |
62 | 颜色号(固定) |
66 | “后跟图元”标志(固定) |
67 | 空间 — 模型空间或图纸空间(固定) |
68 | APP:指示视口是处于打开状态但在屏幕上完全不可见,还是未激活或处于关闭状态 |
69 | APP:视口标识号 |
70-78 | 整数值,例如重复计数、标志位或模式 |
90-99 | 32 位整数值 |
100 | 子类数据标记(将派生类名作为字符串)从其他具体类派生的所有对象和图元类必须具有此标记。子类数据标记用于分离由同一对象的继承链中的不同类定义的数据。 对于从 ObjectARX 派生的每个不同的具体类的 DXF 名称来说,这是必须满足的额外要求(参见“子类标记”) |
102 | 控制字符串,后跟“{<任意名称>”或“}”。与扩展数据 1002 组码类似,不同之处在于当字符串以“{”开始时,其后可跟任意字符串,字符串的解释取决于应用程序。唯一允许的另外一个控制字符串是作为组结束符的“}”。除了执行图形核查操作期间外,AutoCAD 不会解释这些字符串。它们供应用程序使用 |
105 | DIMVAR 符号表条目的对象句柄 |
110 | UCS 原点(仅当将代码 72 设定为 1 时才显示) DXF:X 值;APP:三维点 |
111 | UCS X 轴(仅当将代码 72 设定为 1 时才显示) DXF:X 值;APP:三维矢量 |
112 | UCS Y 轴(仅当将代码 72 设定为 1 时才显示) DXF:X 值;APP:三维矢量 |
120-122 | DXF:UCS 原点的 Y 值,UCS X 轴和 UCS Y 轴 |
130-132 | DXF:UCS 原点的 Z 值,UCS X 轴和 UCS Y 轴 |
140-149 | 双精度浮点值(例如点、标高和 DIMSTYLE 设置) |
170-179 | 16 位整数值,例如表示 DIMSTYLE 设置的标志位 |
210 | 拉伸方向(固定) DXF:拉伸方向的 X 值 APP:三维拉伸方向矢量 |
220, 230 | DXF:拉伸方向的 Y 值和 Z 值 |
270-279 | 16 位整数值 |
280-289 | 16 位整数值 |
290-299 | 布尔标志值 |
300-309 | 任意字符串 |
310-319 | 具有相同表示和 1004 组码限制的任意二进制块:用最大长度为 254 个字符的十六进制字符串表示最大长度为 127 个字节的数据块 |
320-329 | 任意对象句柄;“按原样”获取的句柄值。它们在 INSERT 和 XREF 操作期间不进行转换 |
330-339 | 软指针句柄;指向同一个 DXF 文件或图形中的其他对象的任意软指针。在 INSERT 和 XREF 操作期间进行转换 |
340-349 | 硬指针句柄;指向同一个 DXF 文件或图形中的其他对象的任意硬指针。在 INSERT 和 XREF 操作期间进行转换 |
350-359 | 软所有者句柄;指向同一个 DXF 文件或图形中的其他对象的任意软所有者指针。在 INSERT 和 XREF 操作期间进行转换 |
360-369 | 硬所有者句柄;指向同一个 DXF 文件或图形中的其他对象的任意硬所有者指针。在 INSERT 和 XREF 操作期间进行转换 |
370-379 | 线宽枚举值 (AcDb::LineWeight)。作为 16 位整数存储和移动。自定义非图元对象可以使用整个范围内的组码,但图元类只能在其表示中使用 371-379 DXF 组码,因为 AutoCAD 和 AutoLISP 都始终假定 370 组码是图元的线宽。这使 370 组码与其他“通用”图元字段具有相同的行为 |
380-389 | PlotStyleName 类型枚举 (AcDb::PlotStyleNameType)。作为 16 位整数存储和移动。自定义非图元对象可以使用整个范围内的组码,但图元类只能在其表示中使用 381-389 DXF 组码,原因与上述线宽范围相同 |
390-399 | 表示 PlotStyleName 对象的句柄值的字符串,本质上是硬指针,但范围不同,更容易处理向后兼容。作为对象 ID(在 DXF 文件中为句柄)和 AutoLISP 中的特殊类型存储和移动。自定义非图元对象可以使用整个范围内的组码,但图元类只能在其表示中使用 391-399 DXF 组码,原因与上述线宽范围相同 |
400-409 | 16 位整数 |
410-419 | 字符串 |
420-427 | 32 位整数值。与真彩色一同使用时,表示 24 位颜色值的 32 位整数。高阶字节(8 位)为 0;低阶字节为包含“蓝色”值 (0-255)、然后是“绿色”值的无符号字符;次高阶字节是“红色”值。将此整数值转换为十六进制值将得到以下位掩码:0x00RRGGBB。例如,红色==200、绿色==100 和蓝色==50 的真彩色为 0x00C86432,而在 DXF 中以十进制表示则为 13132850 |
430-437 | 字符串;用于真彩色时,则为表示颜色名称的字符串 |
440-447 | 32 位整数值。用于真彩色时,表示透明度值 |
450-459 | 长整数 |
460-469 | 双精度浮点值 |
470-479 | 字符串 |
480-481 | 硬指针句柄;指向同一个 DXF 文件或图形中的其他对象的任意硬指针。在 INSERT 和 XREF 操作期间进行转换 |
999 | DXF:999 组码指示后面的行是注释字符串。SAVEAS 不会在 DXF 输出文件中包含这样的组,但 OPEN 则包括这些组并忽略注释。可以使用 999 组在您已编辑的 DXF 文件中包含注释 |
1000 | 扩展数据中的 ASCII 字符串(最多可以包含 255 个字节) |
1001 | 扩展数据的注册应用程序名(最多可以包含 31 个字节的 ASCII 字符串) |
1002 | 扩展数据控制字符串(“{”或“}”) |
1003 | 扩展数据图层名 |
1004 | 扩展数据中的字节数据块(最多可以包含 127 个字节) |
1005 | 扩展数据中的图元句柄;最多可以包含 16 个十六进制数字的字符串 |
1010 | 扩展数据中的点 DXF:X 值(后跟 1020 和 1030 组) APP:三维点 |
1020, 1030 | DXF:点的 Y 值和 Z 值 |
1011 | 扩展数据中的三维世界空间位置 DXF:X 值(后跟 1021 和 1031 组) APP:三维点 |
1021, 1031 | DXF:世界空间位置的 Y 值和 Z 值 |
1012 | 扩展数据中的三维世界空间位移 DXF:X 值(后跟 1022 和 1032 组) APP:三维矢量 |
1022, 1032 | DXF:世界空间位移的 Y 值和 Z 值 |
1013 | 扩展数据中的三维空间方向 DXF:X 值(后跟 1022 和 1032 组) APP:三维矢量 |
1023, 1033 | DXF:世界空间方向的 Y 和 Z 值 |
1040 | 扩展数据双精度浮点值 |
1041 | 扩展数据距离值 |
1042 | 扩展数据缩放比例 |
1070 | 扩展数据 16 位有符号整数 |
1071 | 扩展数据 32 位有符号长整数 |
相关参考
相关概念
DXF 文件中的图元组码 (DXF)
以下是 DXF 文件 ENTITIES 段的样例:
0 SECTION 2 ENTITIES | ENTITIES 段的开始 |
0 <图元类型> 5 <句柄> 330 <指向所有者的指针> 100 AcDbEntity 8 <图层> 100 AcDb<类名> . . <数据> . | 每个图元定义一个条目 |
0 ENDSEC | ENTITIES 段的结束 |
相关参考
POINT (DXF)
以下组码适用于点图元。
POINT 组码 |
组码 | 说明 |
100 | 子类标记 (AcDbPoint) |
10 | 点位置(在 WCS 中) DXF:X 值;APP:三维点 |
20, 30 | DXF:点位置的 Y 值和 Z 值(在 WCS 中) |
39 | 厚度(可选;默认值 = 0) |
210 | 拉伸方向(可选;默认值 = 0, 0, 1) DXF:X 值;APP:三维矢量 |
220, 230 | DXF:拉伸方向的 Y 值和 Z 值(可选) |
50 | 绘制点时所使用的 UCS 的 X 轴的角度(可选;默认值 = 0);当 PDMODE 非零时使用 |
相关参考
相关概念
LINE (DXF)
以下组码适用于直线图元。
LINE 组码 |
组码 | 说明 |
100 | 子类标记 (AcDbLine) |
39 | 厚度(可选;默认值 = 0) |
10 | 起点(在 WCS 中) DXF:X 值;APP:三维点 |
20, 30 | DXF:起点的 Y 值和 Z 值(在 WCS 中) |
11 | 端点(在 WCS 中) DXF:X 值;APP:三维点 |
21, 31 | DXF:端点的 Y 值和 Z 值(在 WCS 中) |
210 | 拉伸方向(可选;默认值 = 0, 0, 1) DXF:X 值;APP:三维矢量 |
220, 230 | DXF:拉伸方向的 Y 值和 Z 值(可选) |
相关参考
相关概念
LWPOLYLINE (DXF)
以下组码适用于优化多段线图元。
LWPOLYLINE 组码 |
组码 | 说明 |
100 | 子类标记 (AcDbPolyline) |
90 | 顶点数 |
70 | 多段线标志(按位编码);默认值为 0: 1 = 关闭;128 = Plinegen |
43 | 固定宽度(可选;默认值 = 0)。如果设定为可变宽度(代码 40 和/或 41),则不使用 |
38 | 标高(可选;默认值 = 0) |
39 | 厚度(可选;默认值 = 0) |
10 | 顶点坐标(在 OCS 中),多个条目;每个顶点一个条目 DXF:X 值;APP:二维点 |
20 | DXF:顶点坐标的 Y 值(在 OCS 中),多个条目;每个顶点一个条目 |
91 | 顶点标识符 |
40 | 起点宽度(多个条目;每个顶点一个条目)(可选;默认值 = 0;多个条目)。如果设定为固定宽度(代码 43),则不使用 |
41 | 端点宽度(多个条目;每个顶点一个条目)(可选;默认值 = 0;多个条目)。如果设定为固定宽度(代码 43),则不使用 |
42 | 凸度(多个条目;每个顶点一个条目)(可选;默认值 = 0) |
210 | 拉伸方向(可选;默认值 = 0, 0, 1) DXF:X 值;APP:三维矢量 |
220, 230 | DXF:拉伸方向的 Y 值和 Z 值(可选) |
相关参考
相关概念
POLYLINE (DXF)
以下组码适用于多段线图元。
POLYLINE 组码 |
组码 | 说明 |
100 | 子类标记(AcDb2dPolyline 或 AcDb3dPolyline) |
66 | 已废弃;以前是“后跟图元标志”(可选;如果存在则忽略) |
10 | DXF:始终为 0 APP:“虚拟”点;X 值和 Y 值始终为 0,Z 值是多段线的标高(二维时在 OCS 中,三维时在 WCS 中) |
20 | DXF:始终为 0 |
30 | DXF:多段线的标高(二维时在 OCS 中,三维时在 WCS 中) |
39 | 厚度(可选;默认值 = 0) |
70 | 多段线标志(按位编码;默认值 = 0): 1 = 这是一个闭合多段线(或按 M 方向闭合的多边形网格) 2 = 已添加曲线拟合顶点 4 = 已添加样条曲线拟合顶点 8 = 这是一条三维多段线 16 = 这是一个三维多边形网格 32 = 多边形网格以 N 方向闭合 64 = 多段线是一个多面网格 128 = 线型图案在该多段线顶点的周围连续生成 |
40 | 默认起点宽度(可选;默认值 = 0) |
41 | 默认端点宽度(可选;默认值 = 0) |
71 | 多边形网格 M 顶点计数(可选;默认值 = 0) |
72 | 多边形网格 N 顶点计数(可选;默认值 = 0) |
73 | 平滑曲面 M 密度(可选;默认值 = 0) |
74 | 平滑曲面 N 密度(可选;默认值 = 0) |
75 | 曲线和平滑曲面类型(可选;默认值 = 0);整数代码,非按位编码: 0 = 不拟合平滑曲面 5 = 二次 B 样条曲面 6 = 三次 B 样条曲面 8 = Bezier 曲面 |
210 | 拉伸方向(可选;默认值 = 0, 0, 1) DXF:X 值;APP:三维矢量 |
220, 230 | DXF:拉伸方向的 Y 值和 Z 值(可选) |
多段线图元后面将跟随应用程序 ID 为“AUTOCAD_POSTSCRIPT_FIGURE”的扩展数据。它包含与 PostScript 图像和 PostScript 填充信息相关的信息。
相关参考
相关概念
CIRCLE (DXF)
以下组码适用于圆图元。
CIRCLE 组码 |
组码 | 说明 |
100 | 子类标记 (AcDbCircle) |
39 | 厚度(可选;默认值 = 0) |
10 | 中心点(在 OCS 中) DXF:X 值;APP:三维点 |
20, 30 | DXF:中心点的 Y 值和 Z 值(在 OCS 中) |
40 | 半径 |
210 | 拉伸方向(可选;默认值 = 0, 0, 1) DXF:X 值;APP:三维矢量 |
220, 230 | DXF:拉伸方向的 Y 值和 Z 值(可选) |
相关参考
相关概念
ARC (DXF)
以下组码适用于圆弧图元。
ARC 组码 |
组码 | 说明 |
100 | 子类标记 (AcDbCircle) |
39 | 厚度(可选;默认值 = 0) |
10 | 中心点(在 OCS 中) DXF:X 值;APP:三维点 |
20, 30 | DXF:中心点的 Y 值和 Z 值(在 OCS 中) |
40 | 半径 |
100 | 子类标记 (AcDbArc) |
50 | 起点角度 |
51 | 端点角度 |
210 | 拉伸方向(可选;默认值 = 0, 0, 1) DXF:X 值;APP:三维矢量 |
220, 230 | DXF:拉伸方向的 Y 值和 Z 值(可选) |
相关参考
相关概念
ELLIPSE (DXF)
以下组码适用于椭圆图元。
ELLIPSE 组码 |
组码 | 说明 |
100 | 子类标记 (AcDbEllipse) |
10 | 中心点(在 WCS 中) DXF:X 值;APP:三维点 |
20, 30 | DXF:中心点的 Y 值和 Z 值(在 WCS 中) |
11 | 相对于中心的长轴端点(在 WCS 中) DXF:X 值;APP:三维点 |
21, 31 | DXF:相对于中心的长轴端点的 Y 值和 Z 值(在 WCS 中) |
210 | 拉伸方向(可选;默认值 = 0, 0, 1) DXF:X 值;APP:三维矢量 |
220, 230 | DXF:拉伸方向的 Y 值和 Z 值(可选) |
40 | 短轴与长轴的比例 |
41 | 起点参数 (对于闭合椭圆,该值为 0.0) |
42 | 端点参数 (对于闭合椭圆,该值为 2pi) |
相关参考
相关概念
HELIX (DXF)
以下组码适用于螺旋图元。
HELIX 组码 |
组码 | 说明 |
| 样条曲线数据 |
100 | 子类标记 (AcDbHelix) |
90 | 主版本号 |
91 | 维护版本号 |
10, 20, 30 | 轴基点 |
11, 21, 31 | 起点 |
12, 22, 32 | 轴矢量 |
40 | 半径 |
41 | 圈数 |
42 | 圈高 |
290 | 左右手习惯;0 = 左手,1 = 右手 |
280 | 约束类型 0 = 约束圈高 1 = 约束圈数 2 = 约束高度 |
相关参考
相关概念
SPLINE (DXF)
以下组码适用于样条曲线图元。
SPLINE 组码 |
组码 | 说明 |
100 | 子类标记 (AcDbSpline) |
210 | 法向矢量(如果样条曲线为非平面型,则省略) DXF:X 值;APP:三维矢量 |
220, 230 | DXF:法向矢量的 Y 值和 Z 值(可选) |
70 | 样条曲线标志(按位编码): 1 = 闭合样条曲线 2 = 周期性样条曲线 4 = 有理样条曲线 8 = 平面 16 = 线性(同时还设置平面位) |
71 | 样条曲线的阶数 |
72 | 节点数 |
73 | 控制点数 |
74 | 拟合点数(如果有) |
42 | 节点公差(默认值 = 0.0000001) |
43 | 控制点公差(默认值 = 0.0000001) |
44 | 拟合公差(默认值 = 0.0000000001) |
12 | 起点切向 — 可以省略(在 WCS 中) DXF:X 值;APP:三维点 |
22, 32 | DXF:起点切向的 Y 值和 Z 值 — 可以省略(在 WCS 中) |
13 | 端点切向 — 可以省略(在 WCS 中) DXF:X 值;APP:三维点 |
23, 33 | DXF:端点切向的 Y 值和 Z 值 — 可以省略(在 WCS 中) |
40 | 节点值(每个节点一个条目) |
41 | 权值(如果不为 1);对于多组对,如果均不为 1,则出现。 |
10 | 控制点(在 WCS 中);每个控制点一个条目 DXF:X 值;APP:三维点 |
20, 30 | DXF:控制点的 Y 值和 Z 值(在 WCS 中);每个控制点一个条目 |
11 | 拟合点(在 WCS 中);每个拟合点一个条目 DXF:X 值;APP:三维点 |
21, 31 | DXF:拟合点的 Y 值和 Z 值(在 WCS 中);每个拟合点一个条目 |
相关参考
相关概念