CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

ActiveX 开发指南

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

2023-1-5 03:00| 发布者: admin| 查看: 1268| 评论: 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 时 AutoCAD 尚未运行),则无法设置为 TRUE 将导致 AutoCAD 应用程序不可见;AutoCAD 甚至不会出现在 Windows 任务栏上。GetObjectGetObjectVisible

注意:使用与版本相关的 ProgID。如果 or 函数使用与版本无关的 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

使用 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   苏公网安备32011402011833)

GMT+8, 2025-4-19 18:50

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部