CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

AutoCAD 2020 开发者帮助

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

2024-5-18 18:19| 发布者: admin| 查看: 152| 评论: 0|原作者: admin|来自: AutoCAD

关于将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

路过

雷人

握手

鲜花

鸡蛋

最新评论

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

GMT+8, 2025-3-14 08:29

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部