首 页 网络编程
网页制作 图形图象 操作系统 冲浪宝典
软件教学 认证考试

网络安全 网络办公 行业资讯 评测对比
您当前位置:站长天空 -> 认证考试-> ORACLE认证
autocadr14与vb_visualbasic教程
作者:网友供稿 点击:0
推荐
西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!可在线rar解压,自动数据恢复设置虚拟目录等.免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金
站内搜索
文章页数:[1] 
前言在AutoCADR14发展工具中,VBA算是最让程式发展人员注目,全新的发展介面加上与MicrosoftOffice使用相同发展语言,对於我们这些发展人员,可真是一大震撼,不过在高兴之余却听说目前这版
AutoCADR14只支援VBA而不支援VirtualBasic,需要到R14下一版才支援,实在令人失望。

  如果您也曾因听说R14不支援VirtualBasic而放弃VirtualBasic,那您可错过一个快速且容易的发展语言,笔者在一次与同事闲聊的偶然机会中意外发现,VirtualBasic可以当做AutoCADR14的发展工具,笔者虽为C 的忠诚拥护者,见到VirtualBasic也不禁为它喝采,废话不多说,现在就为您说明如何使用VirtualBasic控制AutoCADR14。

启始设定

  在开始说明前请读者先拿出你们的R14光碟,并执行光碟中vbainst\setup.exe程式,安装程式除了安装VBA发展工具外,最重要的是安装了AutoCAD的Object说明书。

  当您安装完说明书後请执行VirtualBasic,并开始一个空白专案。如图1,在VirutualBasic中选取「专案→设定引用项目→AutoCADR14ObjectLibrary」。在引用项目加入了ACADObjectLibrary後,就可以在VB用「检视→浏览物件」来查看可使用的AutoCAD物件,若熟悉VirtualBasic应该了解,当物件可以浏览时,也就代表Virtual
Basic可以使用此物件,至此我们已完成了所需的设定。

建立R14物件

  您可依下面步骤建立R14物件。

  1.因为ACAD物件在大部分副程式中都会使用到,因此把ACADobject设为全域变数。

DimacadAppAsObject'建立全域的ACADobject

  2.可以选择在LoadForm或任何其他副程式中建立R14物件,下面范例是在LoadForm时建立R14物件,但请特别注意,必须将Visible属性设为TURE,否则将会发觉硬碟拼命转,但萤幕上却没任何变化。

PrivateSubForm_Load()
OnErrorResumeNext
`如果目前系统中已有执行R14则取得已执行R14物件
SetacadApp=GetObject(,“AutoCAD.Application")
IfErrThen
Err.Clear
`如果目前系统尚未有执行R14则建立R14物件(
SetacadApp=CreateObject(“AutoCAD.Application")
EndIf
acadApp.Visible=True`请务必将物件Visible属性设为true
EndSub

  3.您已经可以试著去执行这个程式,建议您,若系统已执行R14,请先结束R14程式,否则无法看到执行结果,因为程式取得物件还未对物件做任何处理,您会发现当执行这个程式则程式会启动R14,从执行的过程您是否体会到VirtualBasic的方便,连程式都不必Complier,甚至不必先存档就可以执行。

  在R14中画(10,10)至(100,100)的方框

  当建立acadApp物件後,就可以使用物件所提供的method,下面范例就是利用AddLinemethod来画出一个四方形,读者可能会对
acadApp.ActiveDocument.ModelSpace.AddLine这行指令的语法感到困惑,
其实若查看ACAD的Objectmodel(如图3)就可以很清楚了解,addLine是ModelSpaceEntitiesCollectionObject物件的methos,而ModelSpaceEntitiesCollectionObject的父物件是DocumentObject,DocumentObject的父物件是ApplicationObject,因此要由acadApp物件来建立Line物件当然必须透过DocumentObject与ModelSpaceObject;另外值得注意的是,画完line後记得执行acadApp.Updatemethod才能让方框即时显示在萤幕上。

PrivateSubDrawBox_Click()
Dimp1(0To2)AsDouble
Dimp2(0To2)AsDouble
Dimp3(0To2)AsDouble
Dimp4(0To2)AsDouble
DimlineObjAsObject
`设定点座标
p1(0)=10#
p1(1)=10#
p1(2)=0#
p2(0)=100#
p2(1)=10#
p2(2)=0#
p3(0)=100#
p3(1)=100#
p3(2)=0#
p4(0)=10#
p4(1)=100#
p4(2)=0#
`划第一点到第二点
SetlineObj=acadApp.ActiveDocument.ModelSpace.AddLine(p1,p2)
`划第二点到第三点
SetlineObj=acadApp.ActiveDocument.ModelSpace.AddLine(p2,p3)
`划第三点到第四点
SetlineObj=acadApp.ActiveDocument.ModelSpace.AddLine(p3,p4)
`划第四点到第一点
SetlineObj=acadApp.ActiveDocument.ModelSpace.AddLine(p4,p1)
acadApp.Update
EndSub

  读取图档中modelspace的所有text及mtext文字

  请读者先看下面范例程式,您是否吓一跳,这绝对是真的,下面这段程式码真的可以读取图档中modelspace的所有text及mtext文字,acadobject将您目前开启的图档中所有绘图物件都放在ActiveDocument中,而ActiveDocument中所有Modelspace中的物件都放ModelSpace中,因此我们由ActiveDocument.ModelSpace物件的
itemmethod中取出物件,并依物件的EntityType属性来判断是否为文字,及可取出图档中所有文字了。

PrivateSubQueryString_Click()
DimiAsInteger
DimretObjAsObject
WithacadApp.ActiveDocument.ModelSpace
Fori=0To.Count-1Step1
SetretObj=.Item(i)
IfretObj.EntityType=acTextOrretObj.EntityType=acMtextThen
StringList.AddItemretObj.TextString,0
EndIf
Nexti
EndWith
StringList.Refresh
EndSub

  将图档中所有Line的资料写入资料库

  想将CAD资料写入Database吗?在VirtualBasic中当然没问题,请先依图4所示在VirutualBasic中选取「专案→设定引用项目→MicrosoftDAO3.5ObjectLibrary」,以便在VirtualBasic中使用DAO,下面范例将建立test.mdb资料库并将图档中所有Line的资料写入Database中,有关资料库的建立方式您可参考VirtualBasicOnlineBook的说明,图5为利用Access开起启test.mdb所显示的程式执行结果


PrivateSubWLineDB_Click()
DimMyDBAsDatabase,MyWsAsWorkspace
DimLineTdAsTableDef
DimLineFlds(7)AsField
DimfilePathAsString
DimrstLineAsRecordset
DimiAsInteger
DimretObjAsObject
DimretPtAsVariant

filePath=App.Path “\test.mdb"
`Createworkspaces
SetMyWs=DBEngine.Workspaces(0)
`CreateDatabase
SetMyDB=MyWs.CreateDatabase(filePath,dbLangGeneral,dbVersion30)
`CreateTable
SetLineTd=MyDB.CreateTableDef(“Lines")

`设定栏位资料
SetLineFlds(0)=LineTd.CreateField(“LINE_ID",dbLong)`使其成为计数资料栏。
LineFlds(0).Attributes=dbAutoIncrField
SetLineFlds(1)=LineTd.CreateField(“LINE_P1X",dbDouble)
SetLineFlds(2)=LineTd.CreateField(“LINE_P1Y",dbDouble)
SetLineFlds(3)=LineTd.CreateField(“LINE_P1Z",dbDouble)
SetLineFlds(4)=LineTd.CreateField(“LINE_P2X",dbDouble)
SetLineFlds(5)=LineTd.CreateField(“LINE_P2Y",dbDouble)
SetLineFlds(6)=LineTd.CreateField(“LINE_P2Z",dbDouble)

`将栏位加入Table
LineTd.Fields.AppendLineFlds(0)
LineTd.Fields.AppendLineFlds(1)
LineTd.Fields.AppendLineFlds(2)
LineTd.Fields.AppendLineFlds(3)
LineTd.Fields.AppendLineFlds(4)
LineTd.Fields.AppendLineFlds(5)
LineTd.Fields.AppendLineFlds(6)
MyDB.TableDefs.AppendLineTd

SetrstLine=MyDB.OpenRecordset(“Lines")
WithacadApp.ActiveDocument.ModelSpace
Fori=0To.Count-1Step1
SetretObj=.Item(i)
IfretObj.EntityType=acLineThen
rstLine.AddNew
retPt=retObj.startPoint
rstLine!LINE_P1X=retPt(0)
rstLine!LINE_P1Y=retPt(1)
rstLine!LINE_P1Z=retPt(2)
retPt=retObj.startPoint
rstLine!LINE_P2X=retPt(0)
rstLine!LINE_P2Y=retPt(1)
rstLine!LINE_P2Z=retPt(2)
rstLine.Update
EndIf
Nexti
EndWith

rstLine.Close
MyDB.Close

EndSub

  将图档中所有Line的资料写入Excel活页簿

VirtualBasic可以控制AutoCAD,当然也可控制Excel或其他Office程式,读者请先依图6所示在VirutualBasic中选取「专案→设定引用项目→MicrosoftExcel5.0ObjectLibrary,在VB中启动Excel的过程与启动AutoCAD物件的方式相同,下面范例将图档中Line的资料写入Excel活页簿中,当然也可以利用Excel来处理运算与分析的功能,以往需要借由ADS或ARX的计算能力才能完成的工作,都可藉由此方式完成


PrivateSubExport2Excel_Click()
DimexcelAppAsObject
DimcellPosAsString
DimiAsInteger
OnErrorResumeNext
SetexcelApp=GetObject(,“Excel.Application")
IfErrThen
Err.Clear
`如果目前系统尚未有执行Excel则建立Excel物件(
SetexcelApp=CreateObject(“excel.Application")
EndIf
excelApp.Visible=True`请务必将物件Visible属性设为true
excelApp.Workbooks.Add
WithacadApp.ActiveDocument.ModelSpace
Fori=0To.Count-1Step1
SetretObj=.Item(i)
IfretObj.EntityType=acLineThen
rstLine.AddNew
retPt=retObj.startPoint
cellPos=“A" Trim(str(i 1))
excelApp.Range(cellPos).Select
excelApp.ActiveCell.FormulaR1C1=retPt(0)
cellPos=“B" Trim(str(i 1))
excelApp.Range(cellPos).Select
excelApp.ActiveCell.FormulaR1C1=retPt(1)
cellPos=“C" Trim(str(i 1))
excelApp.Range(cellPos).Select
excelApp.ActiveCell.FormulaR1C1=retPt(2)
retPt=retObj.endPoint
cellPos=“D" Trim(str(i 1))
excelApp.Range(cellPos).Select
excelApp.ActiveCell.FormulaR1C1=retPt(0)
cellPos=“E" Trim(str(i 1))
excelApp.Range(cellPos).Select
excelApp.ActiveCell.FormulaR1C1=retPt(1)
cellPos=“F" Trim(str(i 1))
excelApp.Range(cellPos).Select
excelApp.ActiveCell.FormulaR1C1=retPt(2)
EndIf
Nexti
EndWith
EndSub

  在VirtualBasic中使用OCX

  读者或许会疑惑,为什麽会有这个主题?虽然VirtualBasic功能强大,但程式开发者应该都了解,新的开发工具最好能使用旧的程式码,否则以往所写的运算式或演算法都需改写的话,就更麻烦且不切实际,利用OCX可将旧c或c 程式改写并提供给VirtualBasic使用。

  在使用OCX之前必须先将OCX注册,此范例注册方式为Regsvr32printer.ocx,并请依图7所示在VirutualBasic中选取「专案→设定使用元件」,并点取「printerActiveXControlmodual」,printer
ocx程式请参考程式列表1(编注:此程式因过於庞大,请至CADesigner的Homepage上参看),范例中的OCX中只包含一个QueryPrinter()的Method,目地为读取系统中Printer清单,下面范例将OCX所取得资料显示在EditBox中。

PrivateSubListPrinter_Click()
PrinterListText.Text=PrnOcx.QueryPrinter
PrinterListText.Refresh
EndSub
程式所有使用的元件清单
元件型态元件名称
ButtonDrawBox
ButtonWLineDB
ButtonExport2Excel
ButtonListPrinter
ButtonQueryString
ListBoxStringList
EditBoxPrinterListText
OCXPrnOcx

後记

  看过上面的说明您是否也心动於VirtualBasic强大功能,事实上如果好好利用VirtualBasic可以简易作出以前不易作出的功能,不过如果您非常在乎执行速度,您还是必须使用ARX来开发较为适当,另外Autodesk并未宣布AutoCADR14支援VirtualBasic,因此若您选择VirtualBasic来开发程式也许会面临未知的问题,虽然如此但VirtualBasic仍是值得探究的开发工具。->


文章整理:站长天空 网址:http://www.z6688.com/
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

文章页数:[1] 


放大字体显示 缩小字体显示 打印文章 推荐给朋友
热门文章
·一个特牛的日期时间判断正则表达式-ASP教程,正则表达式
·Remoting编程知识一-.NET教程,.NET Framework
·从客户端检测到有潜在危险的Request.Form 值-ASP教程,客户端相关
·关于DataRow和DataColumn的一点个人简单理解-.NET教程,数据库应用
·DataTable.Select使用小心得-.NET教程,数据库应用
·在Java中如何模拟多继承-JSP教程,Java技巧及代码
·上海移动数据网综合网管的实现
·在VC中用GDI+绘制角度可变的颜色渐变效果-.NET教程,VB.Net语言
·超漂亮的绿色按扭制做-网页设计,Photoshop
·Java获取Html变量的值-JSP教程,Java技巧及代码
最新文章
·阿里联盟:关于结算时间问题的统一说明_网赚技巧
·谷歌官方组织adsense优化大赛_网赚技巧
·google adsense 2007巡讲大会上海站总结_网赚技巧
·网络只是一个开始:专访91now站长小鱼头_站长访谈
·asp.net应用程序资源访问安全模型_asp.net技巧
·给那些迷惑于做垃圾站的站长们_站长心得
·免费——不是威客网站的杀手锏_站长心得
·圈圈浅谈个人网站发展和赚钱的模式-网站推广的口碑篇_站长心得
·说网解络之web2.0概念诠释(1)_站长心得
·google adsense系列技巧100条_google推广
相关主题
  • autocad 2008的service pack 1测试版发布_autocad教程
  • autocad三维基础实例教程_autocad教程
  • autocad阵列操作全攻略_autocad教程
  • autocad中巧妙计算图形对象的个数_autocad教程
  • autocad中的标注线性比例和标注全局比例_autocad教程
  • 西部数码虚拟主机

    友情链接
    CNNIC 西部数码
    万网 自助建站
    虚拟主机 asp空间
    域名注册 域名
    域名申请 主页空间
    论坛空间 网站空间
    国际域名 虚拟空间
    空间租用 DDOS防火墙
    成都主机托管 四川主机托管
    主机租用 服务器租用
    网站目录 自助建站
    虚拟主机 网址大全
    软件下载
    自助链接
    虚拟主机资讯 特价虚拟主机
    版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
    关于我们:站长天空:专业提供最新的站长资讯、在线教程、虚拟主机权威评测、虚拟主机性能对比、网站制作教程,开发教程,站长工具。包括网页制作教程、冲浪宝典、编程参考、操作系统、软件教学、行业动态等。
    特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
    发表评论 打印  刷新     关闭