CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

ActiveX 开发指南

关于将 VBA 代码转换为 VB (VBA/ActiveX)

2023-1-5 03:00| 发布者: admin| 查看: 958| 评论: 0|来自: AutoCAD

摘要: 要更新代码示例以用于 VB,必须首先引用 AutoCAD 类型库。

要更新代码示例以用于 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 尚未运行),则未能设置为 TRUE 将导致不可见的 AutoCAD 应用程序;AutoCAD甚至不会出现在Windows任务栏上。GetObjectGetObjectVisible

注意:使用与版本相关的 ProgID。如果主函数使用与版本无关的 ProgID,请将函数更改为使用与版本相关的 ProgID。例如,如果您正在使用,则更改为。此外,如果方法使用与版本无关的 ProgID,则必须将该方法更改为使用与版本相关的 ProgID。CreateObjectGetObjectCreateObjectCreateObject("AutoCAD.Application")CreateObject("AutoCAD.Application.24")GetInterfaceObject

从 Visual Basic 6 及更高版本连接到 AutoCAD

下面的代码示例使用 的和属性。如果您的编码环境不支持这些属性,则需要相应地修改示例:ClearDescriptionErr

Sub Ch2_ConnectToAcad()
    Dim acadApp As AcadApplication
    On Error Resume Next

    Set acadApp = GetObject(, "AutoCAD.Application.24")
    If Err Then
        Err.Clear
        Set acadApp = CreateObject("AutoCAD.Application.24")
        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

Creating a line using VB:

Sub Ch2_AddLineVB()
    On Error Resume Next

    ' Connect to the AutoCAD application
    Dim acadApp As AcadApplication
    Set acadApp = GetObject(, "AutoCAD.Application.24")
    If Err Then
        Err.Clear
        Set acadApp = CreateObject("AutoCAD.Application.24")
        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

路过

雷人

握手

鲜花

鸡蛋

最新评论

QQ|Archiver|CAD开发者社区 ( 苏ICP备2022047690号-1 )

GMT+8, 2024-5-19 13:20

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部