【VB开源代码栏目提醒】:本文主要为网学会员提供“使用VB应用程序调用AutoCAD和Excel软件的方法 - 编程语言”,希望对需要使用VB应用程序调用AutoCAD和Excel软件的方法 - 编程语言网友有所帮助,学习一下!
第23卷 第4期2001年12月武汉理工大学学报??信息与管理工程版JOURNALOFWUTINFORMATIONMANAGEMENTENGINEERINGVol.23No.4Dec.2001文章编号:10072144X20010420042203使用
VB应用程序调用AutoCAD和Excel软件的方法龙晓林1王国顺21.武汉理工大学自动化学院湖北武汉 4300702.武汉大学动力与机械学院湖北武汉 430072摘 要:VBVisualBasic是一种通用性很强的程序设计语言具有快速的程序开发环境能迅速有效地编制程序界面在
VB环境下可以开发出许多应用软件。
文中介绍了使用
VB开发应用程序调用AutoCAD、Excel和OCX等软件的方法及调用时应注意的技术问题并给出了一系列程序
代码。
关键词:软件VisualBasic数据库中图法分类号:TP311.52 文献标识码:A1 前 言VBVisualBasic是一种通用性很强的程序设计语言具有快速的程序开发环境能迅速有效地编制程序界面。
在
VB5.0及
VB6.0的环境下可以轻易实现数据库、多媒体、Internet程序、客户/服务机程序的开发所以受到了广大应用程序开发者的欢迎。
虽然Autodesk并未宣布Auto2CAD支援
VB但事实上
VB可以当作AutoCAD的发展工具。
笔者在利用
VB开发多媒体教育软件的过程中需要在
VB环境下调用AutoCAD、3DMAX等绘图和动画制作
软件以及其他软件如Word、Excel从而在实践中探索出使用
VB控制AutoCAD等软件的方法。
2 调用AutoCAD软件的步骤2.1 AutoCAD安装与
VB系统设定在安装AutoCAD时除了安装VBA发展工具外还应安装AutoCAD的Object说明书。
之后执行
VB新建一个空白工程。
在
VB中选取“工程→引用→AutoCAD2000ObjectLibrary、Auto2CAD/ObjectDBXCommonObjectLibrary”。
在引用项目加入了ACADObjectLibrary后在
VB中用“视图→对象浏览器”来查看可使用的AutoCAD物件只要物件可以浏览则VisualBasic可以使用此物件2。
2.2 AutoCAD物件的建立因为ACAD物件在大部分子程序中都会使用到因此把ACADobject设为全域变量:DimacadAppAsObject’建立全域的ACADobject可以选择在LoadForm或任何其他子程序中使用AutoCAD物件下面范例是在LoadForm时建立AutoCAD物件必须将其Visible属性设为TURE以防硬盘空转2。
PrivateSubForm-LoadOnErrorResumeNext′如果目前系统中已执行AutoCAD则取得已执行AutoCAD物件SetacadAppGetObject“AutoCAD.Application”IfErrThenErr.Clear′如果目前
系统尚未执行AutoCAD则建立Auto2CAD物件SetacadAppCreateObject“AutoCAD.Applica2tion”EndIfacadApp.VisibleTrue′请务必将物件Visible属性设为TrueEndSub在执行这个程序前若系统已执行Auto2CAD应先结束AutoCAD
程序否则无法看到执行结果因为程序取得物件还未对物件做任何处理。
执行这个程序则程序会启动AutoCAD从执行的过程可以看到
VB的方便连程序都不必编辑甚至不必先存档就可以执行。
当建立acadApp收稿日期:2001208217.作者简介:龙晓林19682女湖北荆州人武汉理工大学自动化学院讲师.物件后就可以使用物件所提供的菜单如利用AddLinemethod来绘制矩形。
AddLine是Mod2elSpaceEntitiesCollectionObject物件的method而ModelSpaceEntitiesCollectionObject的父物件是DocumentObjectDocumentObject的父物件是Ap2plicationObject因此要由a
cadApp物件来建立Line物件必须借用DocumentObject与ModelSpaceOb2ject执行Line后应执行acadApp.Updatemethod才能让方框即时显示在屏幕上。
2.3 读取图档中所有Text及Mtext文字acadObject将目前开启的图档中所有绘图物件都放在ActiveDocument中而ActiveDocument中所有ModelSpace中的物件都放ModelSpace中因此由ActiveDocument.ModelSpace物件的itemmethod中取出物件并依物件的EntityType属性来判断是否为文字即可取出图档中所有文字1。
PrivateSubQueryString-ClickDimiAsIntegerDimretObjAsObjectWithacadApp.ActiveDocument.ModelSpaceFori0To.Count-1Step1SetretObj.ItemiIfretObj.EntityTypeacTextOrretObj.EntityTypeacMtextThenStringList.AddItemretObj.TextString0EndIfNextiEndWithStringList.RefreshEndSub2.4 将图档中所有Line的资料写入资料库如果想将CAD资料写入数据库可在
VB中选取“工程→引用→MicrosoftDAO3.51ObjectLi2brary”使得在
VB中可使用DAO下面给出了建立test.mdb数据库并将图档中所有Line的资料写入数据库中的程序1。
有关数据库的建立方式可参阅VisualBasicOnlineBook的说明。
PrivateSubWLineDB-ClickDimMyDBAsDatabaseMyWsAsWorkspaceDimLineTdAsTableDefDimLineFlds7AsFieldDimfilePathAsStringDimrstLineAsRecordsetDimiAsIntegerDimretObjAsObjectDimretPtAsVariantfilePathApp.Path“test.mdb”′CreateworkspacesSetMyWsDBEngine.Workspaces0′CreateDatabaseSetMyDBMyWs.CreateDatabasefilePathdbLangGeneraldbVersion30′CreateTableSetLineTdMyDB.CreateTableDef“Lines”′设定栏位资料SetLineFlds0LineTd.CreateField“LINE-ID”dbLong′使其成为计数资料栏。
LineFlds0.AttributesdbAutoIncrFieldSetLineFlds1LineTd.CreateField“LINE-P1X”dbDoubleSetLineFlds2LineTd.CreateField“LINE-P1Y”dbDoubleSetLineFlds3LineTd.CreateField“LINE-P1Z”dbDoubleSetLineFlds4LineTd.CreateField“LINE-P2X”dbDoubleSetLineFlds5LineTd.CreateField“LINE-P2Y”dbDoubleSetLineFlds6LineTd.CreateField“LINE-P2Z”dbDouble′将栏位加入TableLineTd.Fields.AppendLineFlds0LineTd.Fields.AppendLineFlds1LineTd.Fields.AppendLineFlds2LineTd.Fields.AppendLineFlds3LineTd.Fields.AppendLineFlds4LineTd.Fields.AppendLineFlds5LineTd.Fields.AppendLineFlds6MyDB.TableDefs.AppendLineTdSetrstLineMyDB.OpenRecordset“Lines”WithacadApp.ActiveDocument.ModelSpaceFori0To.Count-1Step1SetretObj.ItemiIfretObj.EntityTypeacLineThenrstLine.AddNewretPtretObj.startPointrstLineLINE-P1XretPt0rstLineLINE-P1YretPt1rstLineLINE-P1ZretPt2retPtretObj.startPointrstLineLINE-P2XretPt0rstLineLINE-P2YretPt134第23卷第4期 龙晓林等:使用
VB应用程序调用AutoCAD和Excel软件的方法rstLineLINE-P2ZretPt2rstLine.UpdateEndIfNextiEndWithrstLine.CloseMyDB.CloseEndSub3 调用Excel软件的方法3.1 将图档中所有Line的资料写入Excel活页簿
VB可以控制AutoCAD当然也可控制Excel或其他Office程序在
VB中选取“工程→引用→MicrosoftExcel9.0ObjectLibrary”在
VB中启动Excel的过程与启动AutoCAD物件的方式相同。
将图档中Line的资料写入Excel活页簿中的范例这里限于篇幅忽略。
也可以利用Excel来处理运算与分析的功能以往需要借助ADS或ARX的计算能力才能完成的
工作都可借此方式完成2。
3.2 在
VB中使用OCX新的开发工具最好能使用旧的程序码否则以往所写的运算式或演算法都需改这样就更麻烦且不切实际利用OCX可将旧C或C程序改写并提供给
VB使用。
在使用OCX之前必须先将OCX注册这里的范例
注册方式为Regsvr32printer.ocx在
VB中选取“工程→部件”并点取“printerActiveXControlmodual”printerocx程序很大这里忽略。
范例中的OCX中只包含一个QueryPrinter的Method作用为读取系统中Printer清单下面的程序将OCX所取得资料显示在EditBox中2。
PrivateSubListPrinter-ClickPrinterListText.TextPrnOcx.QueryPrinterPrinterListText.RefreshEndSub4 结束语
VB的功能非常强大对于实用软件开发和工程一般应用只要不涉及开发程序
设计工具或环境选择
VB程序设计工具具有开发周期短、见效快的特点。
就运行速度来说现阶段使用ARX来开发AutoCAD还是占有优势但是新版
VB提供了原始码编译和速度优化功能可以大幅度提高程序运行速度并且随着
计算机运行速度的增加用
VB开发的应用程序运行速度也将不再成为突出
问题3。
VB具有强大的功能和实用方便的特点对
VB感兴趣的开发人员完全可以应用
VB作为开发工具来开发出简便实用的应用程序。
参考文献:1 王国强李家富.
VB多媒体编程技术M.北京:人民邮电出版社 .2 EvangelosPetroutsos.
VB6.0从入门到精通M.邱仲潘译.北京:电子工业出版社2000.3 王道义乔陶鹏.
VB6.0使用详解M.北京:机械工业出版社1999.TransferringAutoCADandExcelbyUsingVisualBasicLONGXiao2linWANGGuo2shunAbstract:VBVisualBasicisaprogramminglanguagewithastronggeneral2purpose.Itprovidesagoodconditiontodevelopprogramseasilyandquicklyandeffectivelyprogramsinterfaces.SomeappliedprogramscanbedevelopedwithVBsuchasaprogramofdatabasemultimediainternetandClient/Server.AmethodofhowtotransferAutoCADExcelandOCXwithVBandproblemsarisingfromthistransferringareintroduced.Waystosolvetheseproblemsarealsopresented.Key
words:AutoCADObjectVisualBasicDatabaseLONGXiao2lin:Lect.DepartmentofAutomationWUTWuhan430070China.责任编辑:李道文44 武汉理工大学学报??信息与管理工程版 2001年12月