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

基于AutoCAD的DXF格式文件读写方法研究

2011-08-31 4页 pdf 283KB 100阅读

用户头像

is_543882

暂无简介

举报
基于AutoCAD的DXF格式文件读写方法研究 通信论坛 A ■喇 吼 舅 iifi】瞰翻疆遇 弱 曩■ 1.r :鼗. 聊I . I)。ci 2嚣 靠fI 蠹 雄 基于 AutoCAD的 DXF格式文件 读写方法研究 谭 超 张群会 (西安科技大学计算机学院 陕西 西安 71 0054) 【摘 ~]DXF格式文件是传统图形开发中最常用的图形交换格式之一,它逐渐发展成为一种国际通用图形格式。文章阐述 了DXF格式文件各段组码的含义,对现有的一些DXF读写方法进行了简单的分析,提出了一种可行的DXF文件读取方法,该方 法主要是在读取方法上进行了一...
基于AutoCAD的DXF格式文件读写方法研究
通信论坛 A ■喇 吼 舅 iifi】瞰翻疆遇 弱 曩■ 1.r :鼗. 聊I . I)。ci 2嚣 靠fI 蠹 雄 基于 AutoCAD的 DXF格式文件 读写方法研究 谭 超 张群会 (西安科技大学计算机学院 陕西 西安 71 0054) 【摘 ~]DXF格式文件是传统图形开发中最常用的图形交换格式之一,它逐渐发展成为一种国际通用图形格式。文章阐述 了DXF格式文件各段组码的含义,对现有的一些DXF读写方法进行了简单的,提出了一种可行的DXF文件读取方法,该方 法主要是在读取方法上进行了一些相关的改进,并绘制图形进行测试,以求达到比较好的效果,满足科研的需要和现实生活中 的一些应用,最后讨论简单图形的保存方法。 【关键词】DXF 段 组码 读取 保存 中图分类号 :TP311 文献标识码 :A 文章编号 :1008—1739(2009)21—46—4 Research on Read and W rite M ethod of DXF Format File Based on AutoCAD TAN Chao ZHANG Qun—hui (School of Computer,Xi an University of Science&Technology,Xi an Shaanxi 710054,China) Abstract:The DXF format file is one of the most popular graphics exchange format in traditional graphics development.It becomes an international graphics format gradually.The paper expounds meanings of each section s groupcode of DXF form at file,and analyses the emsdng DXF read and write m ethods·It puts forward a feasible read m ethod of DXF file.This paper presents some associated improvements in read method,and drawing graphics for test in order to obtain a better effect and satisfy the need of research and some appfications of the real life.Finally the saving method of simple graphics is discussed. Key words:DXF,section;groupcode;read;save 了使其产生的图形数据文件具 有更好的兼容性,一些图形软件 1引言 提供了读写DXF文件的功能,把这些图形软件称为Au 。cAD 的二次开发软件 。在设计具有 DXF文件读写功能的二次开发 目前 DXF格式 已经成为一种国际通用图形文件格式 。为 图形软件时需要深入 分析 DXF格式交换 文件的结构,并要考 了满足广大工程人员和科 研人 员的需求 ,开发出一种能够读 虑生成 DxF文件 的各种 Aut。cAD 版本 的差异 。文中将在分 取和保存 DxF格式文件 的系统。 析 DxF格式 文件 的版 本演进与 不同版 本间格式比较的基础 图 I ~ nter , c ⋯ ha nge t An- 不同版本 文件格式 toCAD 图形文件中所包含的全部信息的标记数据的一种表示 ⋯ ⋯ ”一 ⋯ ~ ⋯ ⋯ 方法,是 AutoCAD 图形文件 的 ASCII或二进制文件格式,可用 于在A t。cAD和其他图形应用程序之间输入、输出与交换图 2 DXF格式文件 形 文件 。AutoCAD很 早就 开始在 中国广泛使 用,有大量 的 DXF格式的交换文件保存了下来。考虑到它使用的普遍性,为 DXF是 AutoCAD DXF(Drawing Interchange Format或者 ⋯ . .. Drawing Exchange Format)的简称 ,它是 Autodesk公 司开发的 定稿 日期:2009-09-26 《计算机与厨络 》2009年第21期 通信论 坛 计 算 机 与 网 络 创 新 生 活 豳匿翻_盥 描-曩 西蕊疆 4 用于 AutoCAD 与 其他软件 进行数 据交换 的 CAD 数 据文 件 首先 ,设计 1个 CDxfReader:类 ,它是总 的接 口类 ,里面包 格式 ,是 AutoCAD程序使用的基于矢量 的 ASCII格式 。Au一 含读取各个 段的 函数 ,以及 1个 ReadDXF函数 ,该 函数是 1 toCAD可 以提供非常详细的完全可以缩放的图表日。 个接口函数 ,它负责依次接收 各个段函数传递过来 的信息 ,最 AutoCAD软件支持 ASCⅡ文本格式的DXF文件和二进 后对这些信息进行排序、整理之后 ,判断它是否成为 1个完整 制格式 的 DXF文件 ,主要用 于与其他 CAD 系统及用 户应 用 的文件 。 程序间的图形信 息交换 .其中 ASC II文本格式 的 DXF文件 应 (1)HEADER 用较多 。DXF文件 由多个段(SECTION)组成 ,每 个段均 由多 当读取 1个 DXF文件时 ,首先是读取 文件 的标题段 的信 个组 (GROUP)构 成 ,组在 文件 中 占 2行 .第 1行 是组码 息 ,这个段 中包含 的是图形 的一般信息 ,每 一个 参数都包含一 (GRoUpcoDE),为一整数 ;第 2行是组 值(GROUPVALUE), 个组码以及与之对应的组码值,直到把该段 的所有 信息都包 它的数据类型由组码决定 121。典型的 DXF文件 由标题 段 类 含在 内之后 .标题段就结束了 。 、 表段 、块段 、实体段 、对象段和调 形预 览段组成 。 (2)CLASSES DXF通常是文本文件 ,可以用文本编辑器(Windows记事 CLASSES段 包含 的信息适 用于应用程序定义 的类 .这些 本 、写字板)查看 、编辑 其内容 。DXF文件是 由若干 ”代码”和 ” 类 的实例 出现在 数据库的 BLOCKS、ENTITIES和 OBJECTS 值”组 成 的”数 据对 ”构成 的 ,这 里 的 代码 称 为 码”(group 段 。假定类定义在类的层次结构 中是永远固定的。所 有字段都 code),指定其后的值的类型和用途 。每个组码和值都是独 占 是必需的日。该段包含用户 自己定义的类,类的具体内容在后 一 行的。DXF文件被分为多个”段”(section),每个段以组码⋯0’ 面的各段中。 和字符 串”SECTION”开头 ,紧接着是组码”2”和表示段名的字 (3)TABLES 符串(如 HEADER)。段的中间可以使用组码和值 定义段中的 本段介绍的组码都可以在 DXF文件 中找 到,并且可以由 元素。段 的结尾使用组码⋯0’和字符串”ENDSEC”来定义目。由 应用程序使 用。TABLES段包含若干个表 ,每个表都包含多个 于 DXF文件 结构 简单 、可读性 好,易于被其他程序处理 ,因此 条 目。图元定 义列 表中的 AutoLISP和 ObdectARX应 用程 序 它已是事实上的工业标准。 也使用这些代码 。该段共包含 9个表,分别是:① VIEW 表一 DXF文件的结构清晰 ,具体如下: 视图表 ② VPORT表一视窗配置表 ③ LTYPE表一线型表 ④ ① 标题段 (HEADER):有关图形的一般信息都可以 STYLE表一字样表 ⑤ UCS表一用户坐标 系统表 ⑥ DIM— DXF文件的这一节找到 ,每一个参数具有 1个变量名和 1个 STYLE表一标准字体表⑦ APPID表一符号表 ⑧ LAYER表一 相关值;② 类段(CLASSES):包括应用程序定义的类的信息, 图层表 ⑨ BLOCK RECORD 表~符号记录表。 这 些实例将 显示 在 BLOCKS、ENTITIES以及 OBJECTS段 ; (4)BLOCKS ③ 表段(TAB LES):该段包含的指定项的定义,它包括:线形 接下来是块段,每个块定义都包含在图形中构成该块的 表 (LTYPE)、图层 表 (LAYER)、字样 表 (STYLE)、视 图表 图元里。每个块都是以带有 BLOCK标签的0组码开始。块段 (VIEW )、用 户坐标 系统 表 (ucs)、视 NINON表 (VPORT)、标 中始 终 出现 3个 空 间定 义 ,即 *Model Space、*Paper Space、 注 字 体 表 (DIMSTYLE)、符 号 表 (APPID)、符 号 记 录 表 *Paper _ Space0。它在 内部将模 型空间和 图纸空间 的表示显示 (BLOCK RECORD);④ 块 段 (BLOCKS):该段 含有块 定 义 为块 定义。第 1个图纸空间布局 的内部名称是 *Paper _ Space. 实体 ,这些实体描述了图形中组成每个块的实体 ;⑤ 实体段 第 2个是 *Paper_Space0,第 3个是*Paper Spacel,依此类推。 (ENTITIES):该段包含各种实体 ,以及任何块的调用;⑥ 对 (5)ENTITIES 象段 (OBJECTS):适 用于 非图形对 象的 组码 ,对 象与 图元 类 然后是实体 段 ,包含几乎所有图形对象的组码。编写程序 似,唯一不同的是对象没有图形或几何意义;⑦ 文件结束 时不要依赖这些 DXF代码表中显示的次序。尽管这些表显示 (END OF FILE)就是通常情况下 DXF文件 所包 含的段 ,有时 了组码通常 出现 的次序 ,但这个 次序在某些条件下或在 A 一 还会出现 1个 THUMBNAILIMAGE段 ,它不是必需的 ,仅 当 toCAD 以后 的版本 中可能会改变。控制图元的代码应该 由事 将预 览图像与 DXF文件 一同保存时 ,该段 才存在 。 例(开关 )或表驱 动 ,这样即使组 未按预期 的次序显 示 ,仍可以 得到正确的处理 。 3 DXF文件的读取 (6)OBJECTS 最后是对象段 ,适用于非图形对象的组码 ,对 象与 图元 类 该方法首先通过读取各个段中的组码信息 ,逐步完成各 似,唯一不同的是对象没有图形或几何意义。除图元、符号表 个段的信息读取,最终实现读取整个 DxF文件的。 记录以及符号表以外的所有对象都存储在此段。此段通过所 有权表示了 1个具有对象 的拓扑次序 的对 象同类堆 ,因此所 , 2009年第21期 《计算机与厨络 》 通信 论坛 计 算 机 与 网 络 创 新 生 活 有者始终出现在它们所拥有的对象之前 。 DxF文件读写操作如图 1所示。段 的一艘格式如下 : 0 SECT10N 2 段 名 (HEADER、CLASSES、TABLEs、BLOCKS、ENTITIEs、 OBJECTS) O ENDSEC 图1 DXF文件读写操作的流程图 下面 的代码是读取 DXF格式文件的主函数 的代码 : BOOL CDx~ eader::ReadDxf(CString&strFileName) { CString str; std::ifstream DxfFile; std::wstring frlename(strFileName); DxfFile.open(ConvertUnicodeToAscii(filename).dataO);//打 开文件 ReadHeader xfFile);//读取文件头信息 ReadLayer(DxWfle);//读取层信息 DxfFile.close0; DxfFile.open(ConvertUnicodeToAscii(filename).data0);//~ 新读取 ReadTextStyleTable(DxfFile);//读取文本风格信息表 ReadEntities(Dx~ile);//读图元 DxfFile.close(); int nSize=m VecGraphicsData.size();//~1]试 int ntype; for(int i 0;iGetType(); } return T’R UE: } 然后要对每一个图元设计 1个类 ,该 类包括此图元的读 取 函数和保存函数 ,以及进行测试的绘 图函数 ,它们都是该类 的成员函数。 下面 是测试各种图元 ,本文 以直线为例子 ,通过结果来说 明该方法 的优点以及 它的一些独特之处。 函数名称 :void CLine::DrawGraphics(CDC ★pDC) 定义 2个指针 :CPoint ptl,pt2,分别指向起始点和终止点。 pt1.X m StartPoint.X: pt1.Y m _ StartPoint.Y: pt2.X = m EndPoint.X: pt2.Y= m _ EndPoint.Y: 绘制直线 pDC一>MoveTo(pt1); pDC一>LineTo(pt2); 4 DXF文件的保存 相 比 DXF文件 的读 取来说 ,文件 的保 存难度较大 。任 务 量也大 。首先要对 各个段所包含 的信息进行保存 。这是一个任 务量很 大的工作 ,在 录入这些信息的时候一定要仔细认真 ,因 为任何 信息 的遗漏都 有可能导致 DXF格式 的不完整 。而用 AutoCAD 测试打开时就会存在错误信息141。 在 录入各个字段的信息时,应该这样来做。首先用 Au— toCAD 建立 1个空文件 ,然后保存为 AutoCAD 的 DXF格式 文件 ,然后用文本文档打 开 ,就可 以看到 DXF格 式的二进制 格式 的组码和组码值。接下来就是把这里所有 的信息都 写进 去【引。与前面提 到的遥相呼应 ,每个段 的信息都应该写在该段 的类里面 的 SAVE函数里 ,这个 函数很 重要 。写的时候一定要 仔细 ,不能漏掉任何 1个组码 ,否则可能导致意想不到的结 果。 在完成了这些公共字段 的信 息之后 ,接下来 的工作就是 具体 图元的保 存。DXF格 式文件包 括的基本图元 有直线 、射 线 、虚线 、点 、圆、椭圆 、样条 曲线等等 。在 CDxfSaver类里 有 1 个 SaveEntities(DXfFile)函数 ,它 的主要功能就是负 责调 用绘 制 各个图元的函数16]。对于 1个具体 的图元 ,在绘制以及保存的 时候需要特别 注意 它的各个参数 ,这要和前面的读 图元时的 函数参数保持一致 ,而且每个参数代表的含义也要一致 ,不需 要在这里重新定义新的参数 。 DXF格式 的文件包含众多种 类的图元 ,在这里主要研究 它的读写方法并给与实现 ,因此不能把所有的图元都列举出 来 ,只是列举几个图元能说明问题就可 以了 。 《计算机与网络 》2009年第21期 计 算 机 与 网 络 创 新 生 活 通信 论坛 void CDxfSaver::SaveDxf(CString&strFileName)//DXF保 存函数 { std::ofstream DxfFile; std::wstring filename(strFileName); Dx~fle.open(ConvertUnicodeToAscii(filename).data 0);// 打开文件 SaveHeader(DxfFile);//保存 头信息 SaveLayer∞xfFile);//保存层信息 SaveTables(DxfFile);//保存 表信息 SaveEntitiesfUxfFile);//保存实体信息 saveobjects(D ile);//保仔对象信息 CloseFile(DxfFile);//关闭文件 Dx~fle.doseO;//文件结束 } 这里给出的是主函数的源代码 ,由于篇幅 的原 因,各个子 函数 的代码就不再一一列出了 ,需要说明的是 主函数 中所 用 到的每 1个子函数都 表示 1个完整的段的所有信息 。 5结束语 本文的研究工作是基 于一个具体项 目而展 开的 ,并 且根 据项 目进展得到该方法并实现了 DXF文件 的读写操作 。经过 各个图元的测试后 ,所得 结果可观 ,达到了预 期效 果。对于保 存方 法本文只是进行 了简单的分析 ,已实现 的效果可能还 不 能满足 一些高精度行业和科研 的需要 ,因此在保存方法方面 还 有待 于进 一步研究和探索 。由于本人能力有限和经验 的欠 缺 .该系统可能还存在一些不足之处 ,今后还 需要进一步 的改 进和完善。 参考文献 【11刘传 亮.AutoCAD DXF文件格式与二次开发 图形软件编 程 .微机发展,2004(9):52—53. 【21范风强.AutoCAD 2004实用教程【M1.电子科技大学出版 社 .2004. 『3】AutoCAD.帮助文档【M1.Autodesk.北京.2004. [41孙家广,杨长责.计算机图形学【M b京:清华大学出版社, 1994. 【5】梁雪春,宋德明.AutoCAD二次开发技术指南『M1.北京:清 华大学出版,2001. [61张卫峰,林端敏.AutoCAD软件的DXF接 口技术卟机械与 电子,2004(1 1):36—38. [7J胡胜红.使用 Vc++编程实现 DXF文件数据提取U1.福建 电脑.2006(11):21—23. 华硕 RSIO0一E5服务器构建中小企业高效易用平台 对于处在信息化平台初创阶段的中小企业而言 ,在服务 器产品的选 型方面往往一头零水 ,普 遍存 在盲 目选 择和偏离 企业 IT应用 目标的现象 。一些企业干脆将普通 PC作为内部 服务器使用 ,不仅缺乏稳定性和安全保障 。也不利于 日后扩 展 和平 台升级 。相比具备成 熟 IT架构的企业而言 .中小型 用户 的设备选购似乎更为复杂和多变 ,更需要认真 比较和综 合考 量 。 那么 ,什么样 的产 品对于需求多元的中小企业来说能够 具有广泛适用性?首先 ,产 品稳 定性 的重要性 不言而喻 ,特别 是在缺少专业技术 人员的条件下 ,稳定运转的平台能够有效 降低风险 ;其次 ,服 务器 应具备 易于 管理 的特性 .将 日常 维护 的复 杂性 降至最低 ,并能 有效 节省成本 开支 :第三 .中小企 业 服 务器对性能 的要求不宜过高 ,但应具备 良好 的扩展能 力,为 曰后升级留足空间 ;最 后 ,格外关注成 本因素的中小 企业用户 对产品 的节能效果也比较看重 ,在 “节能减 排”的大趋势下 ,具 备绿色环保价值的服 务器将 受到更为广泛 的认 可。 基 于 以 上 选 购 特 点 ,华 硕 针 对 入 门级 用 户 推 出 的 RS100一E5服务器拥有出色 的应用 价值 ,能够帮 助中小企业 应对不断 变革的业务需要 。华硕 RS100-E5采用 38cm 超短 49 机身设计 ,大大降低了用户对空间的要求 ;服务器支持 四个 系 列的英特尔至强双核/四核 处理 器 ,最大支持 8GB内存容量 , 并提供 2组 3.5英 寸硬盘位 ,可组成 RAID 0/1磁盘阵列 ,提 升存储管理的效率和安全性。此外,华硕 RS100一E5配备了 Broadcom BCM5721 PcI—E双端口千兆 网卡 ,支持网络负载 均衡和端 口冗余 ,确保 网络传输 的稳定高效 。 华硕 RS100-E5在 日常管理层面为用户提供了可视化管 理 软件——AswM 2.0,帮助管理者 方便 地了解远端 服务器 的运行状态和获取运行数据 ,包括温度 、电压 、风扇转速等 ,并 通过报警系统使管理 员能够及 时完成远程操控 ,有效处理 各 类 问题和潜在隐患 。ASWM 2.0以“傻瓜式 ”的管理方 式实现 了对企业信息化平 台的有效管理 ,对于 IT管理水平普遍低 下 的 中小企业来说 尤为适用。 基于华 硕绿色科技 的 RS100一E5服 务器还 是一款 高效 的 节能型产品 ,融入 华硕独家 的 SMART—FAN 2.0智能风扇技 术 和 AIR—THRouGH 热空气导流架构 ,保证了系统的充分 散热 ,延长产品使用寿命 ,并将噪音控制在 3O分 贝以下 .利于 打造 安静 、舒适 的办公空 间。 2009年第21期 《计算机与网络 》
/
本文档为【基于AutoCAD的DXF格式文件读写方法研究】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索