autocad结构化表单与excel数据交换方法研究

上传人:小** 文档编号:31361085 上传时间:2018-02-07 格式:DOC 页数:8 大小:308KB
返回 下载 相关 举报
autocad结构化表单与excel数据交换方法研究_第1页
第1页 / 共8页
autocad结构化表单与excel数据交换方法研究_第2页
第2页 / 共8页
autocad结构化表单与excel数据交换方法研究_第3页
第3页 / 共8页
autocad结构化表单与excel数据交换方法研究_第4页
第4页 / 共8页
autocad结构化表单与excel数据交换方法研究_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《autocad结构化表单与excel数据交换方法研究》由会员分享,可在线阅读,更多相关《autocad结构化表单与excel数据交换方法研究(8页珍藏版)》请在金锄头文库上搜索。

1、AutoCAD 结构化表单与 Excel 数据交换方法研究 张向良 沈阳飞机工业(集团)有限公司 摘 要: Excel 与 AutoCAD 表单是工作中常见的两种工具, 由于 AutoCAD 与 Excel 属于两个不同的信息系统, 传统的人工填写的工作方式已经使得 AutoCAD 与 Excel之间的信息交互越来越难以满足工作需求。文章将探讨在 AutoCAD 结构化表单与 Excel 之间进行高效数据交换的方法, 介绍 OLE、Excel 对象模型、AutoCAD图形数据库结构等前置技术知识以及数据交换的具体实现方式, 以期为相关的数据采集工作提供高效的解决方案。关键词: Excel; A

2、utoCAD; 结构化表单; OLE; ObjectARX; 二次开发; 引言Excel 作为最为人所熟悉的数据统计工具, 被很多企业选择与使用, 而 Auto CAD 在工程中的应用同样极为广泛。很多时候需要在这两个平台间传递数据, 以作者所在的航空制造业某部门为例, 工作时就需要将保存于 Auto CAD 图表中的产品信息录入到 Excel 服务器中, 这些数据在后一平台上进行集中管理。本文将探讨在 Auto CAD 与 Excel 两平台间自动交换数据的方法, 以及如何在基于Object ARX (VC) 开发的程序中实现。该方法用程序代替人工操作, 在为设计人员提供方便的同时也保证了数

3、据采集的可靠性。1 运行环境概述Excel 是 Microsoft 发布的一款广为人知的数据统计工具。本文讨论 Excel 与Auto CAD 图表的数据交换, 未涉及 Excel 的其它定制功能.结构化 Auto CAD 表单是在 Auto CAD 图形中加入带有附加信息的图元, 如扩展数据、扩展记录、自定义实体、块参照等。以带属性的块参照为例, 由于属性是一种包含了标签、提示和值的结构体, 而不像普通的文字或多行文字那样只有一个值, 这使得计算机能够“理解”用户所输入的内容 (而不是简单地将其视为一个字符串) 。这为后期的数据采集与分析提供了极大的方便。由于 windows 会为每个进程分

4、配独立的地址空间 (用户空间) , 进程不能够以任何方式读写其他进程用户空间的数据1。即使使用系统 API, 也无法确定所需要读、写的数据的地址。所以需要使用一种能够跨越进程边界通信的方法, 即 OLE 技术。2 OLE 技术与 Excel 对象模型基于 COM 的 OLE2 (业内简称 OLE) 是一种 Microsoft 推出的一种 windows 下的对象通信技术, 经过多年的扩充和演化, 现已变成了在桌面系统上进行程序通信的一个技术总称2。使用 OLE 方式读写 Excel, 需要首先创建一个 Excel 对象 (或通过其它途径获得一个) , 然后通过 Excel 预留的接口调用它所提

5、供的服务, 就像 Excel 本身在操作单元格一样。为此需要了解 Excel 的程序结构, 也就是对象模型。Microsoft 在 Excel 2007开发人员参考中提供了 Excel 对象模型参考, 详细地描述了各种对象的属性和方法。对于读写 Excel 而言需要用到其中的 3 对象:_Application、_Worksheet和 Range。_Application 代表 Excel 应用程序, 一个_Application 对象中包含若干个工作簿_Workbook, 后者又包含多个工作表_Worksheet, 而 Range 则代表一个区域, 当然也可以是 1 个单元格, 如图 1。首

6、先需要获得_Application 对象, 进而使用其 Attach Dispatch 函数获得_Worksheet 对象、Range 对象, 然后便可使用 Set Item 和 Get Item 函数读写单元格里的内容。图 1 下载原图3 Auto CAD 图形数据库读写结构化的 Auto CAD 表单需要了解 Auto CAD 图形数据库的结构。每个承载表单的 dwg 文件就是一个 Auto CAD 图形数据库 Ac Db Database3, 其中包含了块表 Ac Db Block Table, 块表中包含了模型空间 ACDB_MODEL_SPACE, 而用户所绘制的图形、文字等实体就存

7、在于模型空间中。Object ARX (VC) 提供了相关的类库与函数来访问上述对象。首先获得当前活动图形数据库的块表, 获得包含结构化数据的块定义, 然后检索模型空间中的此块定义的块参照 Ac Db Block Reference。需要读取的数据, 也就是属性 Ac Db Attribute 的值, 就包含在这些块参照中。4 数据结构的设计至此已经拥有了外部读写 Excel 和读写结构化 Auto CAD 表单中数据的方法。只需设计编写承载数据的载体, 将上述三者连接起来封装成命令, 便可以实现结构化 Auto CAD 表单与 Excel 之间的一键式数据交换.命令通过以下步骤实现: (1)

8、 使用 OLE 方式获得 Excel 实例。 (2) 读取结构化 Auto CAD 表单, 将数据存入中继数据结构。 (3) 读写 Excel 与写入 Auto CAD 表单, 如图 2。所述的步骤 (1) 使用 OLE 方式获得 Excel 实例:首先获得_Application 对象的COM 类型标识符, 之后 COM 库会从系统注册表中找到对应组件的程序路径等信息, 用以获取运行中的 Excel 实例的 IUnkown 接口, 并通过该接口查询到IDispatch 接口。部分代码如下:图 2 下载原图再用_Application 对象的 Attach Dispatch 函数获得_Work

9、sheet 对象, 进而Range 对象。在此不再赘述。步骤 (2) 读取结构化 Auto CAD 表单:首先获得当前活动图形数据库的块表, 获得包含结构化数据的块定义, 然后检索模型空间中的此块定义的块参照 Ac Db Block Reference。建立一个属性遍历器, 遍历块参照中的属性, 根据属性的标签不同把它的值用 text String 函数读入到 Template Item 结构对应的变量中。部分代码如下:步骤 (3) 读写 Excel 与写入 Auto CAD 表单:根据 Excel 表单的要求使用 Set Item 函数读写单元格, 内容取决于中继数据结构 Template

10、Item 中封装的函数。在向 Excel 写入数据后, 还应用 Get Item 读取相关信息并回写到 Auto CDA 图形数据库中。5 结束语本文针对 Auto CAD 与 Excel 之间数据交互效率低的问题探讨了使用基于Object ARX (VC) 开发的程序读取结构化 Auto CAD 表单中的数据, 并使用 OLE技术将之导入 Excel 的方法。整个过程全部由程序自动完成, 极大地提高了工作效率, 同时避免了人工操作可能出现的种种失误, 为相关数据采集工作提供了高效的解决方案。参考文献1王艳平, 张铮.Windows 程序设计 (第 2 版) M.人民邮电出版社, 2008. 2余英, 梁刚.Visual C+实践与提高 COM 和 COM+篇M.中国铁道出版社, 2001. 3张帆, 朱文俊.Auto CAD Object ARX (VC) 开发基础与实例教程M.中国电力出版社, 2014.

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 管理论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号