您的当前位置:首页基于VBA的AutoCAD与Excel信息的双向传递

基于VBA的AutoCAD与Excel信息的双向传递

2022-08-05 来源:爱问旅游网
维普资讯 http://www.cqvip.com 第29卷第2期 武汉理工大学学报・信息与管理工程版 Vo1.29 No.2 2007年2月 JOURNAL OF WUT(INFORMATION&MANAGEMENT ENGINEERING) Feb.2oo7 文章编号:1007—144X(2007)02~0074—03 基于VBA的AutoCAD与Excel信息的双向传递 吴敬兵 ,陈定方 ,余梦华 ,陈 昆 ((1.武汉理工大学机电工程学院,湖北武汉430070;2.武汉理工大学智能制造与控制研究所,湖北武汉430063; 3.武汉市轨道交通有限公司,湖北武汉430030)) 摘要:结合软件开发实践,介绍了基于VBA二次开发编程。从AutoCAD图纸中自动提取标题栏和明细表 信息,输出到Excel电子表格,以及在Excel中填写好标题栏和明细表信息后,自动在AutoCAD图纸中绘制出 标题栏和明细表,从而完成AutoCAD与Excel信息的双向传递。 关键词:VBA二次开发;AutoCAD;Excel;ActiveX;产品数据管理 中图法分类号:TH126 文献标识码:A 1 引 言 赋予属性。这样,即使在手工绘制时,也会比较方 便。只需分别插入明细表头图块和明细表行图 随着AutoCAD在企业中的广泛应用,设计人 块,并赋给不同的属性以数值或文字表示即可。 员在享受AutoCAD所带来便利的同时,仍为需要 图块属性设计好后,接下来就要通过编程来完成 耗费大量的时间来处理AutoCAD图纸中的文档 这些信息的提取和传递。 信息而苦恼。笔者结合软件开发实践,介绍了通 过VBA二次开发编程,从AutoCAD图纸中自动 3程序设计思路 提取标题栏和明细表信息,输出到Excel电子表 3.1 VBA简介… 格.以及在Excel中填写好标题栏和明细表信息 VBA(Visual Basic for Application)最早是建 后,自动在AutoCAD图纸中绘制出标题栏和明细 立在微软公司Ofifce 97中的标准宏语言,由于它 表,从而完成AutoCAD与Excel信息的双向传递。 在开发方面的易用性且功能强大,Autodesk公司 2设计图块属性 购得了它的使用许可,并将其嵌入自己的应用程 序AutoCAD中。Excel 2000和AutoCAD 2004中 首先,以明细表为例来进行分析。明细表包 使用的VBA是基于VB 5.0版本,完全面向对象 括明细表头和明细表行这2个部分。一般而言, 体系结构的一种编程语言。换言之,作为主程序 明细表头由序号、代号、名称、数量、材料、单重、总 的Excel 2000和AutoCAD 2004根据自身特点,提 重和备注8个部分组成。设计人员需要根据零部 供对象体系结构,然后均可用相同的VBA格式调 件图,在明细表头对应的明细表行中填写每一个 用,因此可以说VBA是完成AutoCAD与Excel信 零件的序号、代号等信息。零件不同,这些信息也 息双向传递适宜的开发工具。 就不一样。可以将明细表行绘制成图块,在明细 3.2从AutoCAD中提取信息传递给Excel 表行的第一列插入“序号”属性,定义为“可见”、 前面建立了明细表头和明细表行2个图块, “不固定”,在明细表行的第二列插入“代号”属 假设已经用插入图块的方式绘制好了一副Auto. 性。同样,也定义为“可见”、“不固定”等。以次 CAD图纸,现在就要用Excel VBA编程来提取包 类推,可以将8个部分都作为属性插入图块中,使 含在明细表行图块中的信息,即Excel VBA的目 明细表行图块带上这8个属性。同时,可以把明 的就是要遍历AutoCAD的模型空间,首先判断是 细表头也绘制成图块,所不同的是这个图块不需 否有块引用对象,再判断块引用对象中是否有块 收稿日期:2006—10—16. 作者简介:吴敬兵(1971一),男,湖北黄冈人,武汉理工大学机电工程学院讲师 维普资讯 http://www.cqvip.com 第29卷第2期 吴敬兵,等:基于VBA的AutoCAD与Excel信息的双向传递 75 属性值,若有就获取属性值。这里关键是用到了 BlockRef对象的HasAttributes属性和GetAt. tirbutes方法。属性提取出后,再利用Excel的Ac— tiveX对象模型及其属性和方法,将块属性值写入 Excel工作表对象的单元格中,其搜索实现过程如 图1所示。 图1 提取AutoCAD图块信息的遍历过程 3.3将Excel中的信息绘制到AutoCAD中 ] 要实现这一功能,就需要对AutoCAD VBA进 行编程。程序设计思路是遍历Excel中被激活的 工作表Worksheets,如果工作表单元格Cells中的 值不为空,就在AutoCAD模型空间中插入一个明 细表行图块,并将工作表该行中各个单元格的值 赋给明细表行图块所对应的各个块属性值中。接 着程序扫描工作表的下一行,若单元格仍不为空, 就在AutoCAD模型空间中再插入一个明细表行 图块,赋给相应的块属性值。如此往复,即可将 Excel中的信息全部绘制到AutoCAD中,其搜索 实现过程如图2所示。 4实现方法 4.1 Au ̄CAD接收Excel中的信息 以下是利用AutoCAD VBA建立与Excel的 联系,并将Excel工作表中的信息依次赋值给标 题栏图块的各个块属Jl生的代码。 Set excel=GetObject(, Exce1.Application ) Dim l As String Dim Biao As Object Set Bian=exce1.ActiveSheet 图2提取Excel信息的遍历过程 =Biao.Name Set excelSheet=exce1.ActiveWorkbook.Sheet (J.) biaotilan=”D:\CADCS\标题栏.dwg insertpt=ThisDrawing.Utility.GetPoint(, 请 点取标题栏的插入点: ) Set blkref=ThisDrawing.ModelSpace.Insert— Block(insertpt,biaotilan,BL,BL,1,0) With blkref atr=.GetAttributes For i=0 To 7 atr(i).textStirng=excelSheet.Cells(i+l,l0) Next End With 4.2 Excel提取AutoCAD中的信息 以下是利用Excel VBA建立与AutoCAD的 联系,获取已打开的多幅AutoCAD图纸信息, 将每一张AutoCAD图纸信息注人与之对应的: 作表中的代码。 Set acad=GetObject(, AutoCAD.Applica・ tion”) For i=0 To acad.Documents.Count一1 Set doc=acad.Documents.Item(i1 doc.Active Set mspace=doc.ModelSpace =doc.Fu11Name 三=Len(doc.Name)一4 J=Left(doc.Name,L) 获取AutoCAD图纸 维普资讯 http://www.cqvip.com 76 武汉理工大学学报・信息与管理工程版 2007年2月 文件名、路径等信息 Dinl Biao As Object 插入一个新的工作表 Set Biao=Worksheets.Add Biao.Name= For Each elem In mspace With elem If StrComp(.EntityName, AcDbBlockRefer- ence ,1)=0 Then If.Name= 标题栏 Then If.HasAttributes Then Array2=.GetAttributes For Count=LBound(Array2)To UBound(Ar- ray2) If StrComp(Array2(Count).EntityName, Ac- DbAttribute”,1)=0 Then Biao.Cells(Count+1,9).Value=Array2 (Count).TagString End If Next Count 图3 Excel VBA运行时的信息采集界面 For Count=LBound(Array2)To UBound(Ar- ray2) Biao.Cells(Count+1,10).Value=Array2 (Count).TextString Next Count End If End If End If End With Next elem Next i 细表和标题栏信息的改写,也可以迅速地提取 AutoCAD图纸中的产品信息到Excel中。同时, 只要在AutoCAD接收Excel中信息功能的基础上 增加一个对AutoCAD图纸文件的搜索功能,便可 以方便地实现对多幅AutoCAD图纸信息的批量 提取。这必将极大减轻设计人员的劳动强度,缩 短产品的设计周期,并为实现产品数据管理 (PDM)奠定基础。按照所介绍的设计思路,还可 以对具体的零件实现数据管理,并可广泛运用于 企业、工厂的设备和仓库管理,以及电机、电子、建 筑与室内设计业的规划与管理。 参考文献: 集界面如图3所示。 [1]王钰.用VBA开发AutoCAD2000应用程序[M]. 5结束语 需修改E璺苎l2个功能,呈 xcel中的数据就可以完成对AutoCAD明 uF[2]兰襄 toC A。 一。、 ‘&数据库整合运用实 …一’ 。 通 运 t:d提取A D @ocAD 、Ex:e 憩 。………….仕门 州M .Transferring Information between AutoCAD and Excel Based on VBA Abstract:This paper introduces the transferring information between AutoCAD and Excel based on VBA,including extracting in- formation from heading table and bill of material of AutoCAD drawing to Excel and drawing the ifornmation of Excel in AutoCAD drawing automatically. Key words:second development of VBA;AutoCAD;Excel;ActiveX;PDM Wu Jingbing:Lect.;School of Mechanical and Electircal Engineering,WUT,Wuhan 430070China. ,[编辑:王志全] 

因篇幅问题不能全部显示,请点此查看更多更全内容