dxf格式:06_dxf_blocks_entities

BLOCKS 段与 ENTITIES 段

本章介绍 DXF 文件中两个最重要的图形段:BLOCKS 段(块定义段)和 ENTITIES 段(图元段)。

BLOCKS 段存储图形中所有块定义(Block Definition)。每个块定义以 BLOCK 图元开始,以 ENDBLK 图元结束,中间包含构成该块的所有图元。

组码 说明
0 BLOCK
2 块名
3 块的描述
5 句柄
8 图层名
10,20,30 块的基点(世界坐标系)
70 块类型标志位
100 子类标记

块类型标志位(组码 70):

  • 0 = 标准块
  • 1 = 由外部参照(Xref)定义
  • 2 = 由外部参照依赖
  • 4 = 已解析的外部参照
  • 8 = 已加载的外部参照
  • 16 = 匿名块(*U### 或 *D### 格式)
  • 32 = 非恒定属性定义
  • 64 = 块为 xref 覆盖
组码 说明
0 ENDBLK
5 句柄
8 图层名
  • *MODEL_SPACE(模型空间)— 所有在模型空间中绘制的图元都存储在此块中
  • *PAPER_SPACE(图纸空间)— 所有在图纸空间中绘制的图元都存储在此块中
  • *PAPER_SPACE0*PAPER_SPACE1 等 — 其他图纸空间布局

BLOCKS 段基本结构示例:

 0
 SECTION
 2
 BLOCKS

 0
 BLOCK
 2
 *MODEL_SPACE    ; 模型空间块
 70
 0
 10
 0.0
 20
 0.0
 30
 0.0
 0
 ENDBLK

 0
 BLOCK
 2
 MY_BLOCK        ; 用户定义的块
 70
 0
 10
 5.0
 20
 5.0
 30
 0.0
 ; 块内的图元定义
 0
 LINE
 10
 0.0
 20
 0.0
 11
 10.0
 21
 10.0
 0
 ENDBLK

 0
 ENDSEC

ENTITIES 段包含图形中的所有图元(实体/图形对象)。这是 DXF 二次开发中最常处理的段落。每个图元以组码 0 后跟图元类型名开始。

以下组码适用于所有图元类型:

组码 说明 是否必需
0 图元类型名
5 句柄
8 图层名
6 线型名
62 颜色号
48 线型比例
67 模型/图纸空间
100 子类标记
210 拉伸方向(默认为 (0,0,1))
330 所有者句柄
347 材质句柄
370 线宽
420 真彩色

直线是 DXF 中最简单的图元:

组码 说明
100 AcDbLine
10,20,30 起点坐标
11,21,31 终点坐标
39 厚度(可选)
 0
 LINE
 5
 42
 8
 0
 100
 AcDbLine
 10
 0.0      ; 起点 X
 20
 0.0      ; 起点 Y
 30
 0.0      ; 起点 Z
 11
 100.0    ; 终点 X
 21
 100.0    ; 终点 Y
 31
 0.0      ; 终点 Z
组码 说明
100 AcDbCircle
10,20,30 圆心坐标
40 圆半径
39 厚度(可选)
210 拉伸方向(可选)
 0
 CIRCLE
 5
 43
 8
 0
 100
 AcDbCircle
 10
 50.0     ; 圆心 X
 20
 50.0     ; 圆心 Y
 30
 0.0      ; 圆心 Z
 40
 25.0     ; 半径
组码 说明
100 AcDbArc
10,20,30 圆心坐标
40 半径
50 起始角度(度)
51 终止角度(度)
 0
 ARC
 5
 44
 8
 0
 100
 AcDbArc
 10
 50.0
 20
 50.0
 30
 0.0
 40
 30.0
 50
 0.0       ; 起始角度 0°
 51
 180.0     ; 终止角度 180°
组码 说明
100 AcDbText
10,20,30 文字插入点
11,21,31 对齐点(可选)
1 文字内容
7 文字样式名
40 文字高度
41 宽度因子(默认 1.0)
50 旋转角度
51 倾斜角度
71 文字生成标志
72 水平对齐方式(0=左对齐,1=居中对齐,2=右对齐)
73 垂直对齐方式
 0
 TEXT
 5
 45
 8
 0
 100
 AcDbText
 10
 10.0
 20
 20.0
 30
 0.0
 1
 Hello DXF
 40
 5.0       ; 高度
 7
 STANDARD  ; 文字样式
 50
 0.0       ; 旋转角度
组码 说明
100 AcDbMText
10,20,30 插入点
1 文字内容(含格式代码)
7 文字样式名
40 文字高度
41 参考宽度
71 附着点(1=左上,2=中上,3=右上等)
72 绘制方向
44 行间距比例
73 行间距类型(1=至少,2=精确)

MTEXT 的文字内容可以包含格式代码,例如:

  • \H2.5x — 改变高度
  • \FSimSun|b0|i0 — 改变字体
  • \S 1/2; — 生成分数
  • \P — 换行
 0
 MTEXT
 5
 46
 8
 0
 100
 AcDbMText
 10
 50.0
 20
 50.0
 30
 0.0
 1
 {\FSimSun|c0;这是一段多行文字}\P第二行内容
 40
 5.0
 41
 100.0
 71
 1

INSERT 用于在图形中插入块的实例:

组码 说明
100 AcDbBlockReference
2 块名
10,20,30 插入点
41 X 缩放比例(默认 1.0)
42 Y 缩放比例(默认 1.0)
43 Z 缩放比例(默认 1.0)
50 旋转角度(默认 0)
70 列数(MINSERT 时使用)
71 行数
44 列间距
45 行间距
 0
 INSERT
 5
 47
 8
 0
 100
 AcDbBlockReference
 2
 MY_BLOCK      ; 引用的块名
 10
 100.0         ; 插入点 X
 20
 100.0         ; 插入点 Y
 30
 0.0
 41
 1.0           ; X 比例
 42
 1.0           ; Y 比例
 43
 1.0           ; Z 比例
 50
 45.0          ; 旋转 45°

LWPOLYLINE 是 AutoCAD R14 引入的优化多段线格式,比传统的 POLYLINE 更紧凑:

组码 说明
100 AcDbPolyline
90 顶点数量
70 多段线标志(1=闭合,128=样条化等)
43 恒定宽度(可选)
38 标高
39 厚度
10 顶点 X 坐标(可重复)
20 顶点 Y 坐标(可重复)
40 起点宽度(可重复,可选)
41 终点宽度(可重复,可选)
42 凸度(可重复)

凸度(组码 42)说明:

  • 0 = 直线段
  • 1 = 半圆
  • 小于 1 的正值 = 圆弧朝向逆时针
  • 负值 = 圆弧朝向顺时针
 0
 LWPOLYLINE
 5
 48
 8
 0
 100
 AcDbPolyline
 90
 4           ; 4 个顶点
 70
 1           ; 闭合多段线
 10
 0.0         ; 顶点 1 X
 20
 0.0         ; 顶点 1 Y
 10
 100.0       ; 顶点 2 X
 20
 0.0
 10
 100.0       ; 顶点 3 X
 20
 100.0
 10
 0.0         ; 顶点 4 X
 20
 100.0

传统的 POLYLINE 使用 VERTEX 图元定义顶点:

组码 说明
100 AcDb2dPolyline 或 AcDb3dPolyline
70 多段线标志(0=2D,8=3D等)
40 默认起点宽度
41 默认终点宽度
71 多边形网格 M 数量
72 多边形网格 N 数量

顶点使用 VERTEX 图元定义,以 SEQEND 结束。

组码 说明
100 AcDbEllipse
10,20,30 中心点
11,21,31 长轴端点相对中心点的矢量
40 短轴与长轴的比例(< 1)
41 起始参数(可选,默认 0)
42 终止参数(可选,默认 2π)
 0
 ELLIPSE
 5
 49
 8
 0
 100
 AcDbEllipse
 10
 50.0         ; 中心 X
 20
 50.0         ; 中心 Y
 30
 0.0
 11
 30.0         ; 长轴矢量 X
 21
 0.0          ; 长轴矢量 Y
 31
 0.0
 40
 0.5          ; 短轴/长轴比例
组码 说明
100 AcDbPoint
10,20,30 点坐标
50 点显示角度(UCS 下的角度)

HATCH 是较复杂的图元,包含边界路径和填充图案数据:

组码 说明
100 AcDbHatch
10 填充图案名称
30 填充类型(0=用户定义,1=预定义,2=自定义)
91 边界路径数量
92 边界路径类型(1=多段线,2=圆,4=图元等)
93 边界路径中的边数
72 边界边类型(1=直线,2=圆弧,3=椭圆弧)
10,20 顶点坐标(直线边)
11,21,31 中心点(圆弧边)
40 半径(圆弧边)
50,51 起始/终止角度(圆弧边)
94 图案线数量
76 图案线角度
52 图案线偏移(可选)

示例 - 矩形填充:

 0
 HATCH
 5
 50
 8
 0
 100
 AcDbHatch
 10
 ANSI31    ; 填充图案
 30
 1         ; 预定义图案
 91
 1         ; 1 个边界路径
 92
 1         ; 多段线路径
 93
 4         ; 4 条边
 72
 1         ; 直线边
 10
 0.0
 20
 0.0
 72
 1
 10
 100.0
 20
 0.0
 72
 1
 10
 100.0
 20
 100.0
 72
 1
 10
 0.0
 20
 100.0
 97
 0         ; 0 个填充图案线
组码 说明
100 AcDbSpline
70 样条曲线标志
71 阶数(通常为 3)
72 节点数
73 控制点数
74 拟合点数(可选)
40 节点值(可重复)
10,20,30 控制点坐标(可重复)
11,21,31 拟合点坐标(可重复、可选)
12,22,32 起始切向(可选)
13,23,33 终止切向(可选)

DIMENSION 是一个复合图元,包含多种标注子类型:

组码 说明
100 AcDbDimension
2 标注块名(包含标注图元的匿名块)
10,20,30 标注线定义点
11,21,31 文字中点
12,22,32 插入点(用于块参照类型)
70 标注类型(0=旋转、1=对齐等)
1 标注文字替代文字(可选)
53 旋转角度
54 水平/垂直方向角度

标注类型(组码 70):

  • 0 = 旋转标注
  • 1 = 对齐标注
  • 2 = 角度标注
  • 3 = 直径标注
  • 4 = 半径标注
  • 5 = 角度 3 点标注
  • 6 = 坐标标注
  • 64 = 块参照(组码 100=AcDbAlignedDimension 等)
组码 说明
100 AcDbFace
10,20,30 第一角点
11,21,31 第二角点
12,22,32 第三角点
13,23,33 第四角点
70 不可见边标志(1=边1,2=边2,4=边3,8=边4)
组码 说明
100 AcDbViewport
10,20 视口中心
40 视口宽度
41 视口高度
68 视口状态
69 视口 ID
1. **图元结束判断**:图元的结束由下一个组码 **0** 标识,这可能是新图元的开始或段结束标记。
2. **可见性控制**:组码 60 值为 1 表示图元不可见,0 或未赋值表示可见。
3. **颜色处理**:组码 62 值为 256 表示 BYLAYER,值为 0 表示 BYBLOCK。
4. **子类标记**:组码 100 的 **AcDb*** 字符串标识图元的具体类型,对正确解析至关重要。
5. **拉伸方向**:组码 210/220/230 默认值为 (0,0,1),即平行于世界坐标系 Z 轴。当图元在非水平平面时此值会变化。

BLOCKS 段定义了图形的块资源,ENTITIES 段包含实际的图形对象。从二次开发角度看,ENTITIES 段的处理占据了大部分工作。掌握常用图元的组码结构是成功读写 DXF 文件的关键。建议在开发中大量参考具体的 DXF 文件样例来验证解析逻辑。

该主题尚不存在

您访问的页面并不存在。如果允许,您可以使用创建该页面按钮来创建它。

  • dxf格式/06_dxf_blocks_entities.txt
  • 最后更改: 2026/06/17 09:44
  • 张叶安