VBA和VB应用程序之异同和相互移植餐盒机
VBA和VB应用程序之异同和相互移植
VBA和VB应用程序之异同和相互移植 2011年12月10日 来源: Microsoft VBA是一个面向对象的编程环境。它提供了与Visual Basic (VB)相似的丰富的开发能力。VBA和VB的最主要的区别在于VBA运行在与AutoCAD相同的处理空间,从而提供了一个具有AutoCAD智能的,非常快的编程环境。 VBA同时也提供与其它有VBA编程能力的应用程序的应用集成。这意味着AutoCAD利用其它应用程序的对象库可以控制其它应用程序,例如Microsoft Word和Excel。 VB是一个独立的开发版本,必须单独购买,但是它为AutoCAD VBA提供了许多附加的组件,象外部数据库引擎和报告输出能力等。 执行AutoCAD VBA有四点好处: Visual Basic编程环境易学易用; VBA运行在与AutoCAD相同的处理空间。使程序执行速度非常快。 对话框构建快速,高效。允许开发者快速地定制程序原形和收到设计的及时反馈。 工程可以单独存在,亦可嵌入在图形中。这就给了开发者在发行他们的应用程序时极大的灵活性。 要想用VB改写VBA的示例代码,你必须首先引用AutoCAD类型库。在VB里,从工程选单中选择引用选项激发引用对话框。从引用对话框,选择AutoCAD 版本15然后击OK。 下一步,在示例代码中用用户定义的指向当前活动文档的专门变量替代所有对ThisDrawing的引用。为了达到这个目的,定义一个AutoCAD应用程序的变量(acadApp)和一个当前文档的变量(acadDoc)。然后,设置应用程序变量(acadApp)为当前AutoCAD应用程序。 如果AutoCAD正在运行,GetObject方法就提取出AutoCAD应用程序对象。如果AutoCAD没有正在运行,一个错误就会发生,VB程序就应该捕捉并且清除它。CreateObject方法然后试图生成一个AutoCAD应用程序对象。如果成功,AutoCAD就启动;如果失败,一个显示错误描述的信息框就会出现。 下面的代码示例演示了VB如何连接到AutoCAD并且如何用Clear和Description属性处理错误信息变量Err。如果你的编程环境不支持这些属性,你需要适当地修改示例。 示例一:从Visual Basic 连接到AutoCAD Sub ConnectToAcad()Dim acadApp As AcadApplicationOn Error Resume NextSet acadApp = GetObject(, "AutoCAD.Application")If Err ThenErr.ClearSet acadApp = CreateObject("AutoCAD.Application")If Err ThenMsgBox Err.DescriptionExit SubEnd IfEnd IfMsgBox "Now running " + acadApp.Name + _" version " + acadApp.VersionEnd Sub下一步,设置文档变量为AutoCAD应用程序的文档对象。文档对象从应用程序对象的ActiveDocument属性返回。 示例二:获取AutoCAD文挡对象 Dim acadDoc as AcadDocument Set acadDoc = acadApp.ActiveDocument 从这里开始,就可以使用acadDoc变量来引用当前的AutoCAD图形。 注意:当运行多个AutoCAD例程时,GetObject方法将返回在Windows运行对象表中的第一个AutoCAD例程。关于运行对象表(ROT)和GetObject方法请参看Microsoft Visual Basic相应文档。 示例三:VBA和VB代码对照 用VBA生成一条线 Sub AddLineVBA() ' This example adds a line ' in model space Dim lineObj As AcadLine Dim startPoint(0 To 2) As Double Dim endPoint(0 To 2) As Double ' Define the start and end ' points for the line startPoint(0) = 1 startPoint(1) = 1 startPoint(2) = 0 endPoint(0) = 5 endPoint(1) = 5 endPoint(2) = 0 ' Create the line in model space Set lineObj = ThisDrawing. _ ModelSpace.AddLine _ (startPoint, endPoint) ' Zoom in on the newly created line ZoomAll End Sub 用VB生成一条线 Sub AddLineVB() On Error Resume Next ' Connect to the AutoCAD application Dim acadApp As AcadApplication Set acadApp = GetObject _ (, "AutoCAD.Application") If Err Then Err.Clear Set acadApp = CreateObject _ ("AutoCAD.Application") If Err Then MsgBox Err.Description Exit Sub End If End If ' Connect to the AutoCAD drawing Dim acadDoc As AcadDocument Set acadDoc = acadApp.ActiveDocument ' Establish the endpoints of the line Dim lineObj As AcadLine Dim startPoint(0 To 2) As Double Dim endPoint(0 To 2) As Double startPoint(0) = 1 startPoint(1) = 1 startPoint(2) = 0 endPoint(0) = 5 endPoint(1) = 5 endPoint(2) = 0 ' Create a Line object in model space Set lineObj = acadDoc.ModelSpace.AddLine _ (startPoint, endPoint) Zoom
- 最好欧洲风电大跃进中国企业有望受益Pvc套管二通阀蛟河气缸活塞无锡Trp
- 最好焦作市人大常委会主任郭国明一行到中州分公电脑剥线机回转阀穆林铁叉制管机Trp
- 最好22日1528镇江市场建筑钢材价格行情刀模过滤器螺柱焊机丝印器材造粒机组Trp
- 最好贵州贵铝物流有限公司2016年首次股东会电脑主板混凝土机械南康铁塔螺栓制药机械Trp
- 最好全国系统门窗专家委员会第一次工作会议在龙电子尺激光雕刻排污泵铜线材注射模具Trp
- 最好2019年上半年全球铜冶炼厂大范围检修GPS多功能机浆液阀启东蜗卷弹簧Trp
- 最好11日济宁市场建筑钢材价格行情充电器固定电阻离心泵视频插座移动存储卡Trp
- 最好冷轧基料镀锌板价格走势2018年10月2刀座过滤系统吕梁丝锥夹头造纸机械Trp
- 最好2018年03月27日今日钼价格便携电脑缝边机聚脂薄膜热处理炉忻州Trp
- 最好河南新疆山东率先开展电力体制改革冲击夯攻牙机冷凝食品包装仪表机箱Trp
- 最好亚洲较大铜业展上海开幕车载电台工业除湿机拉丝模生产设备液体灌装机Trp
- 最好23日温州市场废不锈钢价格行情电阻测量仪吉首配电变压器退火炉铸造件Trp
- 最好5大优势凸显国产铝塑膜将迎市场爆发电动窗帘鹤山霉菌培养箱锁紧垫圈真空设备Trp
- 最好2016年09月10日最新氧化铈价格行情包头分板机金属箱切削刀具纤维吊带Trp