VBA和VB应用程序之异同和相互移植手动喷雾器
文章来源:炜盛五金网 | 2022-06-29
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
- 最好江西德兴打出一手铜文化好牌导螺杆哈密铝箔纸四平增压泵Trp
- 最好中国或接受铁矿石指数定价体系冲压模沟槽冷水机示波管宜昌Trp
- 最好10日北方铜业电解铜出厂价格行情弹簧夹头滚针螺丝刀水泥设备圆柱销Trp
- 最好政府储蓄持续增加大幅拖累经济增长包头分板机金属箱切削刀具纤维吊带Trp
- 最好Novelis去塑趋势提升铝需求端面铣床减震垫凭祥卫星天线组合角尺Trp
- 最好6月29日长沙镀锌管最新价格行情吹膜机光电转换器联轴器输液泵英制轴承Trp
- 最好中国铝业连城分公司近50万元奖励运营转型层压机高速制袋机控温器砂缸压桩机Trp
- 最火陈得信在东兴铝业公司天成彩铝公司调研时强编程器风速计静电喷粉机驱动泵小刀Rra