dxf文件格式与二次图形开发
第 l4卷.第 9期 2004年 9月 微 机 发 展
Microcomputer Development
voI.14 No.9
Sep.2004
AutoCAD DXF文件格式与二次开发图形软件编程
刘传亮,陆建德
(苏州大学 计算机学院,江苏 苏州 215006)
摘 要:DXF格式文件是传统图形开发中最常用的图形交换格式之一,众多第三方开发的图形软件均加入了对DXF文件
的支持。针对DXF格式文件的二次开发问题,简要介绍了DXF格式交换文件的结构,详细分析了各代码段与组码的含义
及其关系。以...
第 l4卷.第 9期 2004年 9月 微 机 发 展
Microcomputer Development
voI.14 No.9
Sep.2004
AutoCAD DXF文件
与二次开发图形软件编程
刘传亮,陆建德
(苏州大学 计算机学院,江苏 苏州 215006)
摘 要:DXF格式文件是传统图形开发中最常用的图形交换格式之一,众多第三方开发的图形软件均加入了对DXF文件
的支持。针对DXF格式文件的二次开发问
,简要介绍了DXF格式交换文件的结构,详细分析了各代码段与组码的含义
及其关系。以及在DXF二次开发图形软件中针对DXF文件格式的编程方法。在此基础上对DXF文件格式的版本演进与
不同版本问格式进行了细致的分析与比较,通过在一个具体项目中的应用,给出了一个通用的、具有版本兼容性的DXF文
件编程方法,为类似图形软件的二次开发提供了一个解决
。
关键词:AutoCAD;DXF文件;版本;图形软件
中图分类号.TP311.1 文献标识码:A 文章编号:1005—3751(2004)09—0101—04
Analysis on AutoCAD DXF File Format and the 2nd
Development Graphics Software Programming
LIU Chuan-liang.LU Jian.de
(School of Computer Science and Technology,Suzhou Univ.,Suzhou 215006,China)
Abstract:The D format is one of the widely used graphics exchange formats in the traditional graphics application development.The lots
of 3rd party—developed graphics software have supp0rted D format.To resolve the D format’s 2nd development problem,this paper
hasintrodm-edthe structure oftheDⅨFformat exchangeablefilein brief and hasoompamtthe eoltateaats and evolu~n betweenthe differ.
ea'lt ve~ ons ofD fileformat.Thepaper hasdiscussed and amly-~ lindetailthe programnangmedxxtstOD fileformatinthe2ndde.
velopmmt.Finally,withan applicationin a specific project,thepapergives a ool$1n'lon and version—compatible solutionforthe&Imekinds
of application devdolmaent.
Keywords:AutoCAD;DXFfile;version;graphics software
O 引 言
DXF(Drawing Interchange Format,图形交换格式)是
Aut~AD图形文件中所包含的全部信息的标记数据的一
种表示方法,是 AutoCAD图形文件的 ASCII或二进制文
件格式⋯,可用于在 AutoCAD和其他图形应用程序之间
输入、输出与交换图形文件。AutoCAD很早就开始在中
国广泛使用,有大量的DXF格式的交换文件保存下来。
随着 AutoCaD的发展,其 DXF文件格式从 AutoCAD
Rl2,Rl3,Rl4,到 AutoCA[)2000,20O0i,再 到 Auto.
CAD2002也有了较大变化。考虑到它被使用的普遍性,
为了使其产生的图形数据文件具有更多的兼容性,一些其
它开发的图形软件加进了读写 DXF文件的功能,这里把
这些图形软件叫做 DXF文件的二次开发软件。在
具
有DXF文件读写功能的二次开发图形软件时需要深入分
收稿 日期:2oo3—12—16
作者简介:刘传亮(1975一),男,江苏徐州人,硕士研究生,研究方向
为计算机应用、计算机网络。
析DXF格式交换文件的结构,也一定要考虑产生 DXF文
件的各 AutoCAD版本的差异。笔者参加了开发 YH线切
割自动编程控制系统,该系统的软件部分本身已包含图形
的生成、编辑功能。考虑到Autd:AD有众多的用户,为了
方便使用者,使 AutoCAD生成的图形文件也能读入 YH
自动编程系统中使用,在该二次开发图形软件中即加进了
读取DXF文件的功能。也考虑了要能够读取 AutoCAD
各版本生成的 DXF文件。文中将在分析DXF文件格式
的版本演进与不同版本间格式比较的基础上,对在二次开
发图形软件中针对不同版本的DXF文件格式的读入编程
方法进行探讨。
l 基本的DXF文件格式结构
AutoCAD生成的 DXF文件既可以是 ASCII格式也
可以是二进制文件格式,ASCII格式比二进制文件格式
更常见,文中使用术语“DXF文件”表示ASCII DXF文件。
DXF文件本质上是由成对的代码和与代码关联的值
组成的。这些代码(即组码)不仅指出了其后组值的类型,
维普资讯 http://www.cqvip.com
· 102· 微 机 发 展 第 l4卷
而且与此组值配对。通过使用这些配对的组码和组值,
DXF文件被组织成段,这些段由记录组成,而记录又由依
次排列的组码和数据条目组成。在 DXF文件中,每个组
码和每个数据条目都各占一行。
DxF文件就这样包含了所有用户指定的信息,每个
数据以一个组码及一个数据元素(组值)组成,组码的值表
明了其后数据元素的类型,也指出了数据元素对于给定对
象(或记录)类型的含意。文件总是以一行组码跟一行组
值组成,因此规定组值的最大长度不能超过 255个字节
(Autd AD2000以后组码0~9及 1000~1009已经去除了
255个字符的限制,但通常小于 2049个字节),这种规律
使得编程设计更加方便。
完整的 DXF文件由七个段(SECr10N)组成。每个
段由一行组码0及一行字符串SECTION开始,紧接着是
组码2及一行表示段名称的字符串(例如 }玎三ADER)。段
的结束由一行组码 0及一行表示该段结束的字符串
ENI C。这些段中的内容由对象或图元组成,而这些对
象或图元由标志它们属性的组码和组值组成。整个文件
以一行组码 0及一行EOF结束。以下列出的是各个段的
段名及段中包含的信息:
*HFdkDER段。该段包含与本图形文件有关的基
本信息,它由一个 AutoCAD数据库版本号、存盘时的各种
设置和许多系统变量组成。每个参数包括一个变量名及
其组值。
*CIAssES段。该段包含有关应用程序定义类的
信息,这些类的实例包含在 BL0CKS段、ENTITIES段和
oBJECrs段的数据中。类定义在类的层次结构中是固定
不变的。
*TABI.ES段。该段包含如下符号表的定义,每个
表的表项数目可变:
APPID(应用程序标识表)
BLOCK—RE∞RD(块引用表)
DIMS1 YI E(标注样式表)
LAYER(图层表)
LTYPE(线型表)
STYLE(文本样式表)
UCS(用户坐标系表)
VIEW(视图表)
VPORT(视口配置表)
*BL0CKS段。该段包含有在 AutoCAD中定义的
块。包括块定义和组成图形中每个块引用的图形图元。
*ENTITIES段。包含图形中出现的所有图形对象
(图元),包括对块的引用(插入图元)。
*0BJECTS段。该段包含那些没有图形显示的非
图形对象,如包含多线和组的字典、图层等信息。所有那
些非符号表记录的、符号表的和非图元的对象都储存在此
段中。
*THUMBNAILIMAGE段。该段为可选,如果存盘
时有预览图像则需要该段。
组码和组值定义了对象或图元的特定样子。组值的
数据类型可以是字符串型、整型或浮点数型,例如点的X
坐标。
如果图形DⅪ 文件的最大字符串长度超过256个字
符,在SAVE,SAVE /kS和WBL(X3K时这些字符串将被删
除,在 0PEN和 INSERT时它们会导致操作失败。
一 个DXF文件的结构可以不必都有这七个段,如果
没有设置HFdkDER段中的变量,整个 HFdkDER段将被忽
略;若不需要建立条目,TAB】ES段中的表可以被忽略,若
不需要整个 TAB】ES段中的内容,可以将其全部忽略。
若用户在 I.眦 表中定义了任一线型,则此表必须出现
在 LAYER表前。若图形中没有使用任何块定义,则也可
以忽略整个B S段。但若图形中使用了块定义,则
B )CKS段必须出现在 ENTITIES段前。在 ENTITIES
段中,用户可以引用未在 LAYER表中定义的图层名,这
些图层将被自动创建,并且使用颜色7和CoI、rI、INUOU_S
线型。最后,在文件的尾部必须出现E()F项。
下面以DⅪ 文件中最主要的几个段的组码为例说明
各个段的结构(注:以‘;’开始的为本文注解),详细的组码
与组值定义可参见Autodesk公司的有关文档和手册。
(1)}玎三ADER段组码:
· :* * * * * * * * * * * * * * * * * * * * * * * *
0;HEADER段的开始
S1 CTION
2
HEADER
:* * * * * * * * * * * * * * * * * * * * * * * *
9;描述的每一个头部变量
$<变量 > :
<组码 > ;
<值> ;每一个头部变量都按此四行重复
:* * * * * * * * * * * * * * * * * * * * * * * *
0;HEADER区域的结束
ENDSEC
(2)ENTITIES段的图元组码:
: * * * * 'K- * * * 'K- 'K- * * * 'K- * * * * 'K- * * * *
0;ENTITIES段的开始
sl CTION
2
ENTITIES
:* * * * * * * * * * * * * * * * * * * * * * * *
0;每一图元定义为一个条目
<图元类型>
5
<句柄>
330
<指向所有者>
100
维普资讯 http://www.cqvip.com
第 9期 刘传亮等:AutoCAD DXF文件格式与二次开发图形软件编程 ·103·
AcDbEntity
8
100
AcDb<类名>
. <数据>
:* * * * * * * * * * * * * * * * * * * * * * * *
0;ENTITIES段的结束
ENDSEC
2 不同版本 DXF文件格式的比较与分析
(1)D 文件格式的发展与版本比较、判别。
美国Autodesk公司于 1982年推出 AutoCAD的第一
个版本。AutoCAD R12于 1992年 7月正式推出,这是一
个主要基于D3s系统的版本。当时正值中国微机普及的
快速发展时期,R12在中国的使用曾相当普遍。R12的
DXF文件只有 ADI ,TABIES,BLoCKS和 ENTI.
TIES四个段。由于 R12不是面向对象的,所以没有
a SEs和 OBJECTS段。
分别于 1994年和 1997年推出的R13和R14版本是
第一代以Windows为平台的AutoCAD版本,再加上硬件
水平的处理能力的提高,使得AutoCAD的功能大大增强。
同时还支持了面向对象,使得这些版本的 DXF格式有了
相当大的变化:加入了CIASSEs和 OBJEa 段,并增加
了ELLIPsE(椭圆)、I删 .YLINE(多义线)、SPLINE
(样条曲线)等大量实用图元类型。
其后推出的AutoCAD2000,2000i及2002版本分别在
设计环境、人机界面和 Intemet等功能上做了改进。这些
版本DXF文件格式改进不大,只做了局部的修改,另外增
加了一个可选的n AILIMAGE段。
DXF文件版本信息存储在 HEADER段的开头,其中
的第一个组码 9组值为 $ACADVER,标志版本变量开
始,第二个组码 1组值为标志版本号的字符串。表 1列出
版本号字符串与 AutoCAD对应版本的对照列表,在设计
DXF文件的二次开发图形软件时可以据此进行版本号的
判别。各版本 $ACADVER组码对照如表 1所示。
表1 AutcCAD各版本的DXF版本号
ACloo6
AClOD9
AClOl2
AC1014
AC1015
Ac1015.o5
Autd:AD RlO
Autd二AD Rl l、Rl2
AutoCAn R13
AutoCAn R14
AutoCAn R15、20oO
Auto(:AD 20oOi
(2)DⅪ 文件格式主要变化的分析比较。
R12与 R14版本间的DIW 文件格式变化较大,R12
与R14版本的Autc~2AD都是曾经广泛使用的版本,下面
仅就R12与R14的DXF文件格式的主要变化加以分析。
AutoCAD从 R13开始支持面向对象,这时的图形信
息除了可以显示的图元外,还增加了其他代表各种参数信
息的对象。在 DXF文件格式中新出现的段 CLASSES 和
0BJE 分别存储了用户和程序定义的类和对象。
另一个较大的变化是在图元类型上,以前 R12的
DXF文件只支持一些简单的图元类型,对于圆锥曲线等
复杂曲线都是用 PoI.Ⅵ.INE(多段线)来表示,记录的内
容为曲线上采样的各个点。由于需要取得较多的点以使
曲线平滑,所以导致了最后的DXF存盘文件尺寸变大。
以一个简单的椭圆为例,在缺省精度下要记录129个顶点
(VERTEX),每个顶点在文件里占 14行,共需 1806行。
从R13开始补充了大量的新图元类型,图元的表示
上也有了简化和改进。以前的Ⅶ RTEX,PoIM . E等
图元类型予以保留,增加的图元在数据表示上更加灵活高
效。多数复杂曲线图元只记录对象的属性值,而不象 R12
以前版本那样采用多段线表示。以椭圆为例,R13以后版
本只需记录圆心坐标、长轴端点坐标、长短轴比例即可,每
个椭圆在文件里只占36行,比R12少占用大量空间。
3 具有版本兼容性的DXF二次开发图形软件的编
程方法
根据以上分析,在 DXF文件的二次开发图形软件设
计中,如果用户以表驱动方式(忽略未定义即老版本不能
识别的组码,且对图元中的组码次序不做任何假定)编写
DXF处理程序,那么该程序将比较容易针对 Aut~AD的
后续版本做调整 2。这是因为Aut~.AD以后版本的性能
将不断得到增强,图元中将添加一些新组码以提供更多功
能,二次开发图形软件中可以随之进行相应灵活的调整,
而在这之前,对未定义的组码仅是忽略而已,不影响其对
老版本图元组码的识别和处理。
在 YH线切割自动编程控制系统的设计中,即采用了
以上方法完成 DXF文件读取功能。下面是用 VC6.0编
写的读取 DXF文件模块的部分流程,如图1所示。
下面是用 VC6.0编写的读取圆弧图元的部分程序。
R12与R14版本的DXF文件中圆弧的组码顺序不同,但
是采用以下程序后都能将圆弧的各个参数正确读出l3】。
void CDxf_.:ReadArc(FILE*fp。a)c pDC){
int gCode; //组码
float xl,yl,r,start,end,pi=3.1415926; /俄 心、半径、起
始角度等本地变量
char str[80];
f~ nf(fp,“%s\n”,str);
do{
gCx3de=atoi(str);
switch(gCode){
维普资讯 http://www.cqvip.com
· 104· 微 机 发 展 第 l4卷
图1 读取 D 文件流程图
case 10: //读到组码“1O”,下一行为圆弧X坐标
fse~ (fp,“%f\I1”,&x1); //读取圆弧 X坐标
break;
case 20:
(fp,“%f\fI’’,&y1); //读取圆弧 Y坐标
break;
⋯ ⋯ //读取其他参数
default:
fScal1f(fp,“%s\I1”,str);
break;
}
fscanf(fp,“%s\fI'.,sir); //此处总是读到组码
}while(sircmp(sir,“O”)!=0); //组码“0”,退出循环
DrawArc(pDC,xl,Yt,r,start,end);
4 结束语
笔者对二次开发图形软件YH系统的DXF读入编程
进行了详细的分析,并经反复比较各版的DXF文件格式
读入测试,使YH系统的设计取得了成功,获得了很好的
效果。
参考文献:
[1] 罗卓书.AutoCAD 2000中文版基础培训教程[M].北京:电
子工业出版社,2000.
[2] 清宏计算机工作室.Aut~-AD工程二次开发[M].北京:机
械工业出版社,2000.
[3] 方 铁、AutoCADC语言高级编程[M].北京:清华大学出
版社,1995.
(上接第100页)
表 1 可重用构件的信息表结构
可重用构件名:是用户区别可重用构件的惟一标识;
功能描述:简要描述可重用构件的功能;
地址:描述可重用构件在库中的地址,用于方便地检
索构件;
权限:描述构件是只读,还是可读写,及组内外用户其
进行读写操作的权限;
说明:存放构件的功能,如何使用该构件等详细内容;
属性:构件中面向用户的信息,如构件的作者、建立日
期、算法出处等信息;
详细内容:包括相应的文档、动态连结库、ODD图、以
PAL描述的PAD等信息。
在这个文件中,用户可以方便地对构件进行插入、查
找和使用,此过程具有对用户透明的特点。
5 结束语
文中在基于构件的PDM系统框架的开发基础上,提
出了框架中工程数据的管理实现的方法和技术以及PDM
系统中构件的管理,从而使得基于构件开发的PDM系统
是个能够实现“即插即用”的支撑平台,此系统能有效地支
持在分布、异构多用户环境中的信息、功能和过程的集成,
又能对应用领域工具产生的各种异构数据进行管理和传
递,保证数据的共享。
参考文献 :
[1] 杜晓明,张本生,甘茂治.并行环境下基于组件的CAD框
架模型研究[J].计算机工程与应用,2002,39(4):215—
216.
[2] 韩 鑫、产品数据管理系统的构造框架和实现方法[J].软
件学报,1998,9(12):881—883.
[3] 李 炜,张 利,张建军.并行设计环境的柔性 PDM系统
框架研究[J].合肥工业大学学报,2004,26(4):392—395.
[4] 陆 薇.基于组件的开放式 CAD系统模型[J].软件学报,
1998,9(9):651—655.
[5] 贾宏字.基于构件/构架复用技术的工控软件设计研究[J].
计算机工程与应用,2002,(1):130—132.
[6] KuokkaR.CommunicationinfrastructureforCoo~urrent Er1gi.
neering[J].Artifidal Intelligence for Engin~__fing Design,
1995,(9):283—297.
维普资讯 http://www.cqvip.com
本文档为【dxf文件格式与二次图形开发】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。