AutoCAD属性块与Excel电子表格的双向存取.doc_第1页
AutoCAD属性块与Excel电子表格的双向存取.doc_第2页
AutoCAD属性块与Excel电子表格的双向存取.doc_第3页
AutoCAD属性块与Excel电子表格的双向存取.doc_第4页
AutoCAD属性块与Excel电子表格的双向存取.doc_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

- Page 1-计算机与现代化2003 年第7 期 ISUANJ I YU XIANDAIHUA 总第95 期 ( ) 文章编号:10062475 2003 07008402 AutoCAD属性块与Excel电子表格的双向存取张小红 ,吴伟晖 (1. 南方冶金学院,江西 赣州341000 ;2. 江西省公安厅 ,江西 南昌330006) 摘要: 通过编写Visual Basic 及VBA 的代码 ,完整地实现了AutoCAD 属性块与 Excel 电子表格的双向存取 ,并提供全部程 序代码注释及运行步骤。 关键词: AutoCAD 属性块; Excel 电子表格; 双向存取; VBA ; 宏 中图分类号: TP311. 52 文献标识码 : A Double Access on AutoCAD Piece and Excel Electronic Form ZHANG Xiaohong ,WU Weihui (1. Southern Institute of Metallurgy ,Ganzhou341000 ,China ; 2.Jiangxi Province Public Security Official Hall ,Nanchang330006 ,China) Abstract :Writes Visual Basic and VBA codes ,completely realizes double access on AutoCAD piece and Excel electronic form ,and pro vides all code remarks and running steps. Keywords :AutoCAD property piece ; Excel electronic form ;double access ;VBA ;macro 添加以下代码: 0 引言 由于CAD 软件技术迅猛发展,它所支持的应用范畴越来越广,众多企业为维持竞争力和分析追踪设计产品制造所需的大量资料和信息,纷纷将需求指向图纸与数据上的结合。在当今的办公室里,许多人员对Word 字处理软件和 Excel 电子表格软件都已充分熟悉,将AutoCAD属性数据资料转入熟悉的Excel电子表格中,反过来将 Excel 中处理过的数据绘制回到Auto CAD 图形文件中,是工程人员急切想掌握的技术,本文 图1 结晶器振动装置. dwg 文件中的属性块内容 Public acad As Object 提供的AutoCAD 属性块与 Excel 电子表格的双向存取 Public mspace As Object 程序均在Visual Basic 6. 0 、AutoCAD 2000 中调试成功。 Public excel As Object Public AcadRunning As Integer 1 将AutoCAD 属性存入 Excel 电子表格 Public excelSheet As Object Sub obtain() 假设我们有一个AutoCAD 图纸文件:结晶器振动 Dim elem As Object ( ) 装置. dwg ,希望将它的属性块中的内容 如图1 所示 Dim RowNum As Integer 全部转入到 Excel 电子表格:“属性导出. xls”文件中。 Dim Array1 As Variant ,Array2 As Variant 操作步骤: Dim Count As Integer ( ) 1 新建一个 Excel 电子表格文件 ,取名为:属性导出. xls ; ( ) Set excel = GetObject ,Excel. Application打开一个 Excel (2) 打开需要导出的AutoCAD 文件:结晶器振动装置. dwg ; ( ) 电子表格文件 ,如:属性导入. xls Worksheets sheet1. Activate ( ) 3 单击“工具”菜单 ,选择“宏”“Visual Basic 编辑器”, 激活 sheet1 表单 收稿日期:20030416 ( ) 作者简介:张小红 1966 ,女 ,河北秦皇岛人 ,南方冶金学院副教授 ,北京科技大学博士研究生,研究方向:计算机应用。 (C) 1994-2009 China Academic Journal Electronic Publishing House. All rights reserved. - Page 2- 2003 年第7 期 张小红等:AutoCAD 属性块与 Excel 电子表格的双向存取 85 ( ) Set excelSheet = excel. ActiveWorkbook. Sheets sheet1 Set acad = Nothing ( ) End Sub Set acad = GetObject ,AutoCAD. Application打开一个 ( ) AutoCAD 文件 ,如:结晶器振动装置. dwg 4 单击“工具”菜单 ,选择“宏”“宏. . . ”,在弹出的对 Set doc = acad. ActiveDocument doc 变量指向AutoCAD 目前 话框中,单击“执行”。图 1 中的属性块内容就完整地导入在 文件 Excel 表格中。 ( ) Set mspace = doc. ModelSpace mspace 变量指向AutoCAD 目 5 若上述. dwg 的属性块中的内容进行过修改,可重新 前文件模型空间 打开属性导出. xls ,并在打开文件的提示框中回答“启用宏”, ( ) RowNum = 1 直接运行步骤 4 即可。 Dim Header As Boolean 2 Excel 电子表格中数据导入 Auto Header = False Header 将标记是否读出Excel 标题栏 CAD 属性块 For Each elem In mspace With elem 现在我们要做一个逆向工作 ,将修改整理过的 If StrComp (. EntityName ,AcDbBlockReference,1) = 0 Then Excel 电子表格中数据完整导入AutoCAD 属性块 ,这 If . HasAttributes Then 项工作量相对而言难度更大 ,但对于工程人员实用性 Array1 = . GetAttributes Array1 表示属性数组 更强,操作步骤如下: Array2 = . GetConstantAttributes Array2 表示常数属性数组 (1) 先在AutoCAD 中制作好两个. dwg 块文件:imptitle. dwg ( ) ( ) For Count = LBound Array1 To UBound Array1 和impline. dwg ,前者为绘出属性表表头 ,后者为分别绘制线 If Header = False Then 将Array1 的标签文字tagstring 作为 条 ,注意各字段的宽度要一致 ,如图2 、图3 所示。 Excel 的标题 If StrComp (Array1 (Count) . EntityName ,AcDbAttribute,1) = 0 Then excelSheet. Cells ( RowNum , Count + 1 ) . Value = Array1 (Count) . TagString 图3 impline. dwg 线条 End If (2) 打开一个已编辑好的Excel 电子表格文件。 End If (3) 打开一个欲嵌入 Excel 数据值的AutoCAD 文件 ,单击 Next Count “工具”菜单 ,选择“宏”“Visual Basic 编辑器”,添加以下代 ( ) ( ) For Count = LBound Array2 To UBound Array2 码: If Header = False Then 将Array2 的标签文字tagstring 作为 Public acad As Object Excel 的标题 Public mspace As Object If StrComp ( Array2 ( Count ) . EntityName ,AcDbAttribut Public excel As Object eDefinition,1) = 0 Then Public AcadRunning As Integer ( ( ) excelSheet. Cells RowNum ,UBound Array1 + 1 + Count + Public excelSheet As Object ) ( ) 1 . Value = Array2 Count . TagString Sub import() End If Dim shapes As Object End If Dim RowNum As Integer Next Count Dim Array1 As Variant ,Array2 As Variant RowNum = RowNum + 1 Excel 的行号加 1 Dim Count As Integer ( ) ( ) For Count = LBound Array1 To UBound Array1 ( ) excel. Worksheets sheet1. Activate excelSheet. Cells ( RowNum , Count + 1) . Value = Array1 ( ) Set excelSheet = excel. ActiveWorkbook. Sheets sheet1 (Count) . TextString ( ) Set acad = GetObject ,AutoCAD. Application Next Count Dim insertpt ( ) ( ) For Count = LBound Array2 To UBound Array2 Dim ipt (0 To 2) As Double ,nipt (0 To 2) As Double ( ( ) excelSheet. Cells RowNum ,UBound Array1 + 1 + Count + Dim blkref As AcadBlockReference ) ( ) 1 . Value = Array2 Count . TextString 将Array1 和Array2 的标签 Dim imptitle As String ,impline As String 属性读出,存入 Excel 中 Dim atr As Variant ,catr As Variant Next Count Dim i As Integer Header = True 结束读取标题栏 imptitle = D : imptitle. dwg End If impline = D : impline. dwg End If insertpt = ThisDrawing. Utility. GetPoint( ,请点击属性块内容 End With ) 的插入位置: Next elem (下转第 88 页) (C) 1994-2009 China Academic Journal Electronic Publishing House. All rights reserved. - Page 3- 88 计算机与现代化 2003 年第7 期 业出版社 ,2000. 3 其他 U dw 和DataWindow 服务 表 1 PFC 为DataWindow提供的常用服务 为DataWindow 加入过滤器,提供三种方式过 Filter (过滤服务) DataWindow 是 PowerBuilder 产品最强大的特征之 滤DataWindow 数据。 为DataWindow 中数据提供一种易于使用查找 一 ,DataWindow 用户对象和 DataWindow 服务 自然也 Find (查找服务) 和替换的方法。 就成了PFC 功能的核心内容。除了上面详细介绍的 Linkage ( 链 接 服 提供一种在 DataWindow 之间建立联系的方 ( ) 务) 法,典型用于主控详细结构。 Dropdown Search 下拉搜索 ,PFC 还为DataWindow 提 Multitable Update 处理一个DataWindow 对象内两个或多个表的 ( 供了一些其他服务 详情见 PowerBuilder 光盘 Online (多表更新服务) 更新。 Book) ,这些功能也是常用的。现摘列在文章的最后 , Property ( 属 性 服 该对象用来控制DataWindow 属性窗口。 务) 读者可以模仿上例把其中有用的对象从 PFC 中分离 ( ( Print Preview 打印 提供功能性的打印预览功能 如下页,上页, ) ) 出来 ,加入自己的框架包。 预览服务 缩放等 。 QueryMode (查询模 提供对特定查询实现Query 模式的能力,提供 4 结束语 式服务) 保存和调入查询条件功能。 ( ( Reporting 报表服 提供增强的报表特征 如添加项目、缩放、改 ) ) 务 变字体、颜色等 和打印功能。 本文通过一个实例简单介绍了怎样抽取 PFC 的 提供为必须列启用或者禁止默认数据窗口进 ReqColumn ( 必 须 ( 程 ,使得用户应用程序处理相互依赖的列时 DataWindow 服务来构建自己的开发框架包的方法 其 列服务) 更方便。 他有关 PFC 的内容请参考 PowerBuilder Online Book) 。 Resize ( 数据窗 口 当调整DataWindow 的大小时调整DataWindow ) ( ) 掌握了这些技术 ,剩下的具体实现比较简单 ,不再赘 尺寸调整服务 对象 包含列,计算列、位图和文本 的大小。 提供普通的在 DataWindow 最后插入空行、两 述。需要说明的是,在具体的领域中,应结合本领域 Row Management 列之间加空白列、删除一到多列和恢复最后 (行管理服务) 的特点构建相应的开发包 ,以提高软件开发的效率和 一次删除的服务。 Row Selection (行选 质量。本文是作者根据多年的开发经历做出的经验 择服务) 使用户具有单选、多选和扩展选择的能力。 总结,所介绍的技术在上海关西MRPII 系统和中 Sort (排序服务) 提供四种不同的风格对DataWindow 数据进行 排序。 远大连船厂MIS 系统中应用 ,并取得了良好的效果。 u calculator (计算 生成一个下拉计算器用于计算DataWindow 内 参考文献: 器) 某个栏的值。 1 Simon Gallagher ,Simon Herbert. PowerBuilder 6. 0程序设计 u calendar ( 日历) 生成一个下拉日历用于在DataWindow 的日期 栏内方便地选择日期。 大全M. 北京:机械工业出版社 ,1998. 2 刘红岩. PowerBuilder 高级开发技术M. 北京: 电子工 (上接第 85 页) ( Set blkref = ThisDrawing. ModelSpace. InsertBlock insertpt ,imp 行 ,当AutoCAD 图形命令窗口出现提示:“请点击属性块内容 title ,1 ,1 ,1 ,0) 插入标题图块 的插入位置:”时,在欲插入属性块位置单击鼠标 ,则 Excel 表 ( ) ( ) ( ) ( ) ( ) ipt 0 = insertpt 0 7 :ipt 1 = insertpt 1 0. 4 :ipt 2 = 0 格中的内容全部整齐地嵌入在AutoCAD 图形窗口中。 计算下一个插入点位置 (5) 若今后想在别的. dwg 文件中进行同样属性块的内容 ( ) ( ) RowNum = 2 导入 ,可免去步骤 1 ,重复步骤 2 ,打开一个欲嵌入 Excel 数 Count = 1 据值的AutoCAD 文件 ,单击“工具”菜单 ,选择“宏”“加载工 ( ) ( ) While excelSheet. Cells RowNum ,1 . Value Empty 程 ”,添加步骤 4 中保存的. dvb 文件 ,再点击“宏”“宏 ” ( Set blkref = ThisDrawing. ModelSpace. InsertBlock ipt ,impline , 中

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论