为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

dxf文件格式与二次图形开发

2011-08-31 4页 pdf 170KB 117阅读

用户头像

is_543882

暂无简介

举报
dxf文件格式与二次图形开发 第 l4卷.第 9期 2004年 9月 微 机 发 展 Microcomputer Development voI.14 No.9 Sep.2004 AutoCAD DXF文件格式与二次开发图形软件编程 刘传亮,陆建德 (苏州大学 计算机学院,江苏 苏州 215006) 摘 要:DXF格式文件是传统图形开发中最常用的图形交换格式之一,众多第三方开发的图形软件均加入了对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,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索