DWG格式数据是AutoCAD图形文件,内部工作格式,以二进制方式存储,格式不开源。
DXF格式是AutoCAD(Drawing Exchange Format) 绘图交换文件,主要作用就是用于与其他软件进行数据交互。
对外交互,说明格式标准稳定,并可解析,所以如果自己开发CAD文件的读写软件需要从.dxf文件入手。下面我们就一起来揭开.dxf文件格式的面纱
文末附DXF文件格式白皮书
一、数据结构
就如文本章节一般,任何数据内容都有一个格式让你去认识它,dwf文件数据结构简单,行递进式结构,符合机器语言,但是让人阅读还是有点伤脑袋。
使用txt打开dxf,你懵圈了吗?不要慌,我们先认识骨架。

骨架:
Dwf文件由 段—>节—>内容,这样的数据层次构成。段可以理解为文章大章节,节为每章的小标题,内容就是正文内容呐。
组表达式:
Dwf文件数据表达方式为行组,即每两行代表一组具有指定意义的关联数据,第一行为该组的组代码,第二行为具体内容。
如表示段落的一组数据,首行组代码2含义:一个事物的名字,如段、表、块、线型、视图等的名字。第二行HEADER,组内容,即为该段落的名称。

组代码:
即可表示组内容(值)的数据类型,也可表式规定好含义,在不同的应用场景上体现不同的意义,就像外国人觉得一个中文词怎么会具有那么多含义一样。
(1)组代码和组值的类型的关系
组代码为一个非负的不超过三位的整数,而组值由组代码的类型决定。例如:
- 代码0~9组值类型为字符型。
- 代码10~59组值类型为实型。
- 代码60~79组值类型为整型。
- 代码999表示解释行。
(2)组代码的含义每个组代码均有规定的含义,有些代码含义是固定的,而有些组代码则因应用场合不同而有多个含义,应具体分析。
- 0:表示一个事物的开始,如一个块、表、图层、实体等。
- 1:字符型数据的值,如TEXT的字符串、文件名、属性值等。
- 2:一个事物的名字,如段、表、块、线型、视图等的名字。
- 3~5:字符型数据的值,如文件名、线型说明等。
- 6:线型名(固定类型)。
- 8:图层名(固定类型)。
二、文件内容
DXF文件完整内容结构如下:

HEADER 段
包含有关图形的基本信息。它由 AutoCAD 数据库版本号和一些系统变量组成。每个参数都包含 一个变量名称及其关联的值。
CLASSES 段
包含应用程序定义的类的信息,这些类的实例出现在数据库的 BLOCKS、ENTITIES 和 OBJECTS 段中。类定义在类的层次结构中是固定不变的。
TABLES 段
包含以下符号表的定义:
- APPID(应用程序标识表)
- BLOCK_RECORD(块参照表)
- DIMSTYLE(标注样式表)
- LAYER(图层表)
- LTYPE(线型表)
- STYLE(文字样式表)
- UCS(用户坐标系表)
- VIEW(视图表)
- VPORT(视口配置表)
BLOCKS 段
包含构成图形中每个块参照的块定义和图形图元。
ENTITIES 段
包含图形中的图形对象(图元),其中包括块参照(插入图元)。
OBJECTS 段
包含图形中的非图形对象。除图元、符号表记录以及符号表以外的所有对象都存储在此段。 OBJECTS 段中的条目样例是包含多线样式和组的词典。
THUMBNAILIMAGE 段
包含图形的预览图像数据。此段为可选。
其中最重要的是实体段(ENTITIES)这个段里面包含了所有图形的数据,如 LINE 、ARC、CIRCLE、POINT等。以我绘制的下图为例,包含直线与圆两种图形元素

圆
0
SECTION
2
ENTITIES
0 #图元类型
CIRCLE #圆
5 #句柄
12A
330 #指向所有者的指针
1F
100
AcDbEntity
8 #图层
0
100 #类名
AcDbCircle
10
1435.14995076596
20
532.7834302205283
30
0.0
40
219.5725288906973
主要看AcDbCircle下面的那段,其中10 、20、 30下面的数据代表圆的圆心坐标,40下面的数据代表圆的半径,有了圆心和半径,那么这个圆也确定了。
直线
0
LINE
5
12B
330
1F
100
AcDbEntity
8
0
100
AcDbLine
10
1050.575605434713
20
448.8605050830583
30
0.0
11
1498.821204005648
21
164.0311755091325
31
0.0
0
LINE
5
12C
330
1F
100
AcDbEntity
8
0
100
AcDbLine
10
1587.960949219491
20
209.8073184267351
30
0.0
11
1837.552248247214
21
568.38709841122
31
0.0
主要是看AcDbLine下面的数据,10 下面的数据代表起点的X轴坐标,20下面的数据代表起点的Y轴坐标,30下面的数据代表起点的Z轴坐标。11下面的数据代表终点的X轴坐标,21下面的数据代表终点的Y轴坐标,31下面的数据代表终点的Z轴坐标。对于直线,确定了起点和终点的坐标,那么这条直线就确定了。
其他段内容数据格式一样,对照Dxf白皮书即可解析。
Dxf白皮书:https://download.csdn.net/download/qq_42022528/14161610
本文详细介绍了DXF绘图交换文件格式,包括其数据结构、组表达式和组代码,重点解析了圆和直线等图形元素在文件内容中的表示方式,是了解和开发CAD文件读写软件的入门指南。
1万+

被折叠的 条评论
为什么被折叠?



