关于将VBA代码转换为VB(VBA / ActiveX)
要更新用于 VB 的代码示例,必须先引用 AutoCAD 类型库。 若要在 VB 中执行此操作,请从“项目”菜单中选择“引用”选项以启动“引用”对话框。从“参照”对话框中,选择 AutoCAD 的文字库,然后单击“确定”。 接下来,在代码示例中,将所有引用替换为引用活动文档的用户指定的变量。为此,请为 AutoCAD 应用程序 () 和当前文档 () 定义一个变量。然后,将应用程序变量设置为当前 AutoCAD 应用程序。ThisDrawingacadAppacadDoc 如果 AutoCAD 正在运行,则在指定 AutoCAD 版本号时,VB 函数将检索 AutoCAD 应用程序对象。如果AutoCAD未运行,则会出现错误,该错误(在本例中)被捕获,然后清除。然后,该函数将尝试创建 AutoCAD 应用程序对象。如果成功,则启动AutoCAD;如果失败,则消息框将显示错误说明。GetObjectCreateObject 运行多个AutoCAD进程时,该函数将在Windows运行对象表中返回AutoCAD的第一个实例。有关验证 返回的会话的详细信息,请参阅有关运行对象表 (ROT) 和函数的 Microsoft VBA 文档。GetObjectGetObjectGetObject 必须将 AutoCAD 应用程序的特性设置为 TRUE 才能显示 AutoCAD 图形窗口。Visible 如果创建AutoCAD的新实例(即,发出 AutoCAD 时 AutoCAD 尚未运行),则无法设置为 TRUE 将导致 AutoCAD 应用程序不可见;AutoCAD 甚至不会出现在 Windows 任务栏上。GetObjectGetObjectVisible 注意:使用与版本相关的 ProgID。如果 or 函数使用与版本无关的 ProgID,请将该函数更改为使用与版本相关的 ProgID。例如,如果使用 ,则更改为 。此外,如果方法使用与版本无关的 ProgID,则必须将该方法更改为使用与版本相关的 ProgID。CreateObjectGetObjectCreateObjectCreateObject("AutoCAD.Application")CreateObject("AutoCAD.Application.23")GetInterfaceObject
从 Visual Basic 6 及更高版本连接到 AutoCAD下面的代码示例使用 的 和 属性。如果您的编码环境不支持这些属性,则需要相应地修改示例:ClearDescriptionErr Sub Ch2_ConnectToAcad() Dim acadApp As AcadApplication On Error Resume Next Set acadApp = GetObject(, "AutoCAD.Application.23") If Err Then Err.Clear Set acadApp = CreateObject("AutoCAD.Application.23") If Err Then MsgBox Err.Description Exit Sub End If End If MsgBox "Now running " + acadApp.Name + _ " version " + acadApp.Version End Sub 接下来,将文档变量设置为AutoCAD应用程序中的对象。该对象由该对象的属性返回。DocumentDocumentActiveDocumentApplication Dim acadDoc as AcadDocument Set acadDoc = acadApp.ActiveDocument 从此时开始,使用变量参照当前 AutoCAD 图形。acadDoc VBA 与 VB 比较代码示例下面的代码示例演示如何在 VBA 和 VB 中创建一行。 使用 VBA 创建行: Sub Ch2_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 Ch2_AddLineVB() On Error Resume Next ' Connect to the AutoCAD application Dim acadApp As AcadApplication Set acadApp = GetObject(, "AutoCAD.Application.23") If Err Then Err.Clear Set acadApp = CreateObject("AutoCAD.Application.23") 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) ZoomAll acadApp.visible = True End Sub 相关概念 |
|Archiver|CAD开发者社区
( 苏ICP备2022047690号-1 苏公网安备32011402011833)
GMT+8, 2025-3-14 08:29
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.