本帖最后由 飞电 于 2013-12-15 15:49 编辑
刘传亮, 陆建德
(苏州大学 计算机学院,江苏 苏州 215006)
摘 要: DXF 格式文件是传统图形开发中最常用的图形交换格式之一, 众多第三方开发的图形软件均加入了对 DXF 文件的支持。针对DXF 格式文件的二次开发问题,简要介绍了DXF 格式交换文件的结构,详细分析了各代码段与组码的含义及其关系。以及在DXF 二次开发图形软件中针对DXF 文件格式的编程方法。在此基础上对DXF 文件格式的版本演进与不同版本间格式进行了细致的分析与比较, 通过在一个具体项目中的应用, 给出了一个通用的、 具有版本兼容性的 DXF 文件编程方法,为类似图形软件的二次开发提供了一个解决方案。
关键词: AutoCAD; DXF 文件;版本;图形软件;autocad论坛
中图分类号: T P311. 1 文献标识码: A 文章编号: 1005- 3751( 2004) 09- 0101- 04
Analysis on AutoCAD DXF File Format and the 2nd
Development Graphics Software Programming
LIU Chuanliang , LU Jiande
( School of Computer Science and Technology , Suzhou Univ. , Suzhou 215006, China)
Abstract: T he DXF form at is one of the w idely used graphics exchange format s in the t raditional graphics appl i cat i on development . The lots of 3rd part y- developed graphics software have supported DXF f ormat. T o resolve the DXF f ormat s 2nd development problem , this paper has i nt roduced the st ructure of the DXF format exchangeable file in brief and has compared the cont ent s and evolut ion betw een the differ ent versions of DXF f i le format . The paper has discussed and analyzed in det ail the programming methods t o DXF f ile format in the 2nd development . Finally, w i th an applicat ion in a specif ic project , the paper gives a common and version - compat ible solution f or the same kinds of application development .
Key words:AutoCAD; DXF file; version; graphics softw are
收稿日期: 2003- 12- 16
作者简介: 刘传亮( 1975 ) , 男, 江苏徐州人, 硕士研究生, 研究方向为计算机应用、 计算机网络。
0 引 言
DXF( Drawing Interchange Format, 图形交换格式) 是AutoCAD 图形文件中所包含的全部信息的标记数据的一种表示方法, 是 AutoCAD 图形文件的 ASCII 或二进制文件格式[ 1],可用于在 AutoCAD 和其他图形应用程序之间输入、 输出与交换图形文件。AutoCAD 很早就开始在中国广泛使用, 有大量的 DXF 格式的交换文件保存下来。随着 AutoCAD 的发展, 其 DXF 文件格式从 AutoCADR12, R13, R14, 到 AutoCAD2000, 2000i, 再 到 AutoCAD2002也有了较大变化。考虑到它被使用的普遍性,为了使其产生的图形数据文件具有更多的兼容性, 一些其它开发的图形软件加进了读写 DXF 文件的功能, 这里把这些图形软件叫做 DXF 文件的二次开发软件。在设计具有DXF 文件读写功能的二次开发图形软件时需要深入分析 DXF 格式交换文件的结构, 也一定要考虑产生 DXF 文件的各AutoCAD 版本的差异。笔者参加了开发 YH 线切割自动编程控制系统,该系统的软件部分本身已包含图形的生成、 编辑功能。考虑到AutoCAD 有众多的用户, 为了方便使用者, 使 AutoCAD 生成的图形文件也能读入 YH自动编程系统中使用,在该二次开发图形软件中即加进了读取 DXF 文件的功能。也考虑了要能够读取 AutoCAD各版本生成的 DXF 文件。文中将在分析 DXF 文件格式的版本演进与不同版本间格式比较的基础上, 对在二次开发图形软件中针对不同版本的 DXF 文件格式的读入编程方法进行探讨。
1 基本的DXF文件格式结构
AutoCAD 生成的 DXF 文件既可以是 ASCI I 格式也可以是二进制文件格式, ASCI I 格式比二进制文件格式更常见, 文中使用术语 DXF 文件表示ASCII DXF 文件。DXF 文件本质上是由成对的代码和与代码关联的值组成的。这些代码( 即组码) 不仅指出了其后组值的类型,而且与此组值配对。通过使用这些配对的组码和组值,DXF 文件被组织成段, 这些段由记录组成, 而记录又由依次排列的组码和数据条目组成。在 DXF 文件中, 每个组码和每个数据条目都各占一行。DXF 文件就这样包含了所有用户指定的信息, 每个数据以一个组码及一个数据元素( 组值)组成, 组码的值表明了其后数据元素的类型, 也指出了数据元素对于给定对象( 或记录)类型的含意。文件总是以一行组码跟一行组值组成,因此规定组值的最大长度不能超过 255 个字节(AutoCAD2000以后组码 0~ 9及1000~ 1009已经去除了255个字符的限制, 但通常小于 2049 个字节) , 这种规律使得编程设计更加方便。完整的 DXF 文件由七个段( SECT ION) 组成。每个段由一行组码0及一行字符串 SECTION 开始, 紧接着是组码 2及一行表示段名称的字符串( 例如HEADER)。段的结束由一行组码 0 及一行表示该段结束的字符串ENDSEC。这些段中的内容由对象或图元组成, 而这些对象或图元由标志它们属性的组码和组值组成。整个文件以一行组码 0及一行EOF 结束。以下列出的是各个段的段名及段中包含的信息:
* HEADER 段。该段包含与本图形文件有关的基本信息,它由一个 AutoCAD 数据库版本号、 存盘时的各种设置和许多系统变量组成。每个参数包括一个变量名及其组值。
* CLASSES段。该段包含有关应用程序定义类的信息, 这些类的实例包含在 BLOCKS 段、 ENT IT IES 段和OBJECTS 段的数据中。类定义在类的层次结构中是固定不变的。
* TABLES段。该段包含如下符号表的定义, 每个表的表项数目可变:
APPID(应用程序标识表)
BLOCK- RECORD( 块引用表)
DIMSTYLE(标注样式表)
LAYER(图层表)
L TYPE( 线型表)
STYL E(文本样式表)
UCS( 用户坐标系表)
VIEW(视图表)
VPORT (视口配置表)
* BLOCKS段。该段包含有在 AutoCAD 中定义的块。包括块定义和组成图形中每个块引用的图形图元。
* ENTITIES 段。包含图形中出现的所有图形对象(图元) ,包括对块的引用( 插入图元)。
* OBJECTS 段。该段包含那些没有图形显示的非图形对象, 如包含多线和组的字典、 图层等信息。所有那些非符号表记录的、 符号表的和非图元的对象都储存在此段中。
* THUMBNAILIMAGE段。该段为可选, 如果存盘时有预览图像则需要该段。组码和组值定义了对象或图元的特定样子。组值的数据类型可以是字符串型、 整型或浮点数型, 例如点的 X坐标。如果图形 DXF 文件的最大字符串长度超过 256 个字符,在 SAVE, SAVEAS和 WBLOCK 时这些字符串将被删除,在 OPEN 和 INSERT 时它们会导致操作失败。一个 DXF文件的结构可以不必都有这七个段, 如果没有设置HEADER 段中的变量,整个HEADER 段将被忽略;若不需要建立条目, TABLES 段中的表可以被忽略, 若不需要整个 TABLES 段中的内容, 可以将其全部忽略。若用户在 LT YPE 表中定义了任一线型, 则此表必须出现在 LAYER 表前。若图形中没有使用任何块定义, 则也可以忽略整个 BLOCKS 段。但若图形中使用了块定义, 则BLOCKS段必须出现在 ENTIT IES 段前。在 ENT ITIES段中,用户可以引用未在 LAYER 表中定义的图层名, 这些图层将被自动创建, 并且使用颜色 7和 CONTINUOU S线型。最后, 在文件的尾部必须出现 EOF项。下面以DXF 文件中最主要的几个段的组码为例说明各个段的结构( 注:以; 开始的为本文注解) ,详细的组码与组值定义可参见Autode sk公司的有关文档和手册。
( 1)HEADER 段组码:
; * * * * * * * * * * * * * * * * * * * * * * * *
0 ; HEADER 段的开始
SECT ION
2
HEADER
; * * * * * * * * * * * * * * * * * * * * * * * *
9 ;描述的每一个头部变量
$ < 变量> ;
< 组码> ;
< 值> ;每一个头部变量都按此四行重复
; * * * * * * * * * * * * * * * * * * * * * * * *
0 ; HEADER 区域的结束
ENDSEC
( 2) ENTITIES 段的图元组码:
; * * * * * * * * * * * * * * * * * * * * * * * *
0 ; ENTIT IES 段的开始
SECT ION
2
ENT IT IES
; * * * * * * * * * * * * * * * * * * * * * * * *
0 ;每一图元定义为一个条目
< 图元类型>
5
< 句柄>
330
< 指向所有者>
100
AcDbEntity
8
< layer>
100
AcDb< 类名>
.
. < 数据>
.
; * * * * * * * * * * * * * * * * * * * * * * * *
0 ; ENT IT IES 段的结束
ENDSEC
2004 AutoCADDXF文件格式与二次开发图形软件编程.pdf
(675.68 KB, 下载次数: 12)
|