1、
如何在
VB
中连接
AutoCAD
。
启动 VB ,引用 AutoCAD 类型库。操作步骤:从 “ 工程 ” 菜单中选择 “ 引用 ” 选项,启动 “ 引用 ” 对话框。在 “ 引用 ” 对话框中,选择 AutoCAD 类型库,然后单击 “ 确定 ” 。
启动 VB ,引用 AutoCAD 类型库。操作步骤:从 “ 工程 ” 菜单中选择 “ 引用 ” 选项,启动 “ 引用 ” 对话框。在 “ 引用 ” 对话框中,选择 AutoCAD 类型库,然后单击 “ 确定 ” 。
2、
定义模块级变量
AutoCAD
应用程序
(acadApp)
和当前的文档
(acadDoc)
。
如果 AutoCAD 正在运行,使用 GetObject 函数将检索 AutoCAD Application 对象。如果 AutoCAD 没有运行,使用 CreateObject 函数试图创建一个 AutoCAD Application 对象。如果创建成功,会启动 AutoCAD ;如果失败,则会发生错误。
同时运行多个 AutoCAD 任务时, GetObject 函数会返回 Windows 运行对象表中的第一个 AutoCAD 实例。
要显示 AutoCAD 图形窗口,需要将 AutoCAD 应用程序的 Visible 特性设置为 TRUE 。
使用 acadDoc 变量引用当前的 AutoCAD 图形。
示例:
Dim acadApp As AcadApplication
Dim acadDoc as AcadDocument
Sub ConnectToAcad()
On Error Resume Next
Set acadApp = GetObject(, "AutoCAD.Application")
If Err Then
Err.Clear
Set acadApp = CreateObject("AutoCAD.Application")
If Err Then End
End If
acadApp.Visible = True
Set acadDoc = acadApp.ActiveDocument
End Sub
2 、如何使 VB 开发的程序不依赖于 AutoCAD 的版本。
启动 VB ,定义模块级变量 AutoCAD 应用程序 (acadApp) 和当前的文档 (acadDoc) 。
如果 AutoCAD 正在运行,使用 GetObject 函数将检索 AutoCAD Application 对象。如果 AutoCAD 没有运行,使用 CreateObject 函数试图创建一个 AutoCAD Application 对象。如果创建成功,会启动 AutoCAD ;如果失败,则会发生错误。
同时运行多个 AutoCAD 任务时, GetObject 函数会返回 Windows 运行对象表中的第一个 AutoCAD 实例。
要显示 AutoCAD 图形窗口,需要将 AutoCAD 应用程序的 Visible 特性设置为 TRUE 。
使用 acadDoc 变量引用当前的 AutoCAD 图形。
示例:
Dim acadApp As Object
Dim acadDoc as Object
Sub ConnectToAcad()
On Error Resume Next
Set acadApp = GetObject(, "AutoCAD.Application")
If Err Then
Err.Clear
Set acadApp = CreateObject("AutoCAD.Application")
If Err Then End
End If
acadApp.Visible = True
Set acadDoc = acadApp.ActiveDocument
End Sub
与第一个问题相比较,可以看出,不引用具体的类型库以及使用通用的对象类型就可以达到通用性。
3 、前期绑定和后期绑定
要创建一个使用前期绑定方式的对象变量,也就是说,在程序编译时就完成绑定,则对象变量在声明时应指定类 ID ,如: Dim acadApp As AcadApplication 。
使用 As Object 子句声明对象变量,可以创建一个能包含任何类型对象引用的变量。不过,该变量访问对象是后期绑定的,也就是说,绑定在程序运行时才进行,如: Dim acadApp As Object 。
前期绑定的变量引用可以提供更好的性能,但该变量只能存放声明中所指定的类的引用。
而后期绑定的变量引用可以提供更好的通用性。
4 、依赖于版本和独立于版本
如果 CreateObject 或 GetObject 函数使用的 ProgID 没有附加版本号,那么是独立于版本的,否则是依赖于版本的。例如,如果使用的是 CreateObject ,则 CreateObject ("AutoCAD.Application") 是独立于版本的,而 CreateObject ("AutoCAD.Application.15") 是依赖于版本的。
5 、 VB 代码到 VBA 代码的转换
在 VBA 的 IDE 环境中,使用 “ 导入文件 ” 将要转换的 VB 工程的模块、类模块以及窗体文件一一导入。接着将 VB 代码中所有的当前的文档 (acadDoc) 变量替换为 ThisDrawing ,而 AutoCAD 应用程序 (acadApp) 变量替换为 Application 。同时删除定义的 AutoCAD 应用程序 (acadApp) 和当前的文档 (acadDoc) 变量,删除与 AutoCAD 应用程序连接的代码。注意:要转换 VB 代码的窗体部分,则窗体必须是用 UserForm 创建的。
6 、图形对象和非图形对象
图形对象(也称为图元、实体对象)是组成图形的可见对象(例如直线、圆、光栅图像等)。非图形对象是指属于图形的一部分但不可见的(提示性的)对象,例如 Layers 、 Linetypes 、 DimStyles 、 SelectionSets 等等。要创建这些对象,可使用 Add 方法。每一个对象都有用于特定目的的方法和特性,都有设置和检索扩展数据以及删除自己的方法。
如果 AutoCAD 正在运行,使用 GetObject 函数将检索 AutoCAD Application 对象。如果 AutoCAD 没有运行,使用 CreateObject 函数试图创建一个 AutoCAD Application 对象。如果创建成功,会启动 AutoCAD ;如果失败,则会发生错误。
同时运行多个 AutoCAD 任务时, GetObject 函数会返回 Windows 运行对象表中的第一个 AutoCAD 实例。
要显示 AutoCAD 图形窗口,需要将 AutoCAD 应用程序的 Visible 特性设置为 TRUE 。
使用 acadDoc 变量引用当前的 AutoCAD 图形。
示例:
Dim acadApp As AcadApplication
Dim acadDoc as AcadDocument
Sub ConnectToAcad()
On Error Resume Next
Set acadApp = GetObject(, "AutoCAD.Application")
If Err Then
Err.Clear
Set acadApp = CreateObject("AutoCAD.Application")
If Err Then End
End If
acadApp.Visible = True
Set acadDoc = acadApp.ActiveDocument
End Sub
2 、如何使 VB 开发的程序不依赖于 AutoCAD 的版本。
启动 VB ,定义模块级变量 AutoCAD 应用程序 (acadApp) 和当前的文档 (acadDoc) 。
如果 AutoCAD 正在运行,使用 GetObject 函数将检索 AutoCAD Application 对象。如果 AutoCAD 没有运行,使用 CreateObject 函数试图创建一个 AutoCAD Application 对象。如果创建成功,会启动 AutoCAD ;如果失败,则会发生错误。
同时运行多个 AutoCAD 任务时, GetObject 函数会返回 Windows 运行对象表中的第一个 AutoCAD 实例。
要显示 AutoCAD 图形窗口,需要将 AutoCAD 应用程序的 Visible 特性设置为 TRUE 。
使用 acadDoc 变量引用当前的 AutoCAD 图形。
示例:
Dim acadApp As Object
Dim acadDoc as Object
Sub ConnectToAcad()
On Error Resume Next
Set acadApp = GetObject(, "AutoCAD.Application")
If Err Then
Err.Clear
Set acadApp = CreateObject("AutoCAD.Application")
If Err Then End
End If
acadApp.Visible = True
Set acadDoc = acadApp.ActiveDocument
End Sub
与第一个问题相比较,可以看出,不引用具体的类型库以及使用通用的对象类型就可以达到通用性。
3 、前期绑定和后期绑定
要创建一个使用前期绑定方式的对象变量,也就是说,在程序编译时就完成绑定,则对象变量在声明时应指定类 ID ,如: Dim acadApp As AcadApplication 。
使用 As Object 子句声明对象变量,可以创建一个能包含任何类型对象引用的变量。不过,该变量访问对象是后期绑定的,也就是说,绑定在程序运行时才进行,如: Dim acadApp As Object 。
前期绑定的变量引用可以提供更好的性能,但该变量只能存放声明中所指定的类的引用。
而后期绑定的变量引用可以提供更好的通用性。
4 、依赖于版本和独立于版本
如果 CreateObject 或 GetObject 函数使用的 ProgID 没有附加版本号,那么是独立于版本的,否则是依赖于版本的。例如,如果使用的是 CreateObject ,则 CreateObject ("AutoCAD.Application") 是独立于版本的,而 CreateObject ("AutoCAD.Application.15") 是依赖于版本的。
5 、 VB 代码到 VBA 代码的转换
在 VBA 的 IDE 环境中,使用 “ 导入文件 ” 将要转换的 VB 工程的模块、类模块以及窗体文件一一导入。接着将 VB 代码中所有的当前的文档 (acadDoc) 变量替换为 ThisDrawing ,而 AutoCAD 应用程序 (acadApp) 变量替换为 Application 。同时删除定义的 AutoCAD 应用程序 (acadApp) 和当前的文档 (acadDoc) 变量,删除与 AutoCAD 应用程序连接的代码。注意:要转换 VB 代码的窗体部分,则窗体必须是用 UserForm 创建的。
6 、图形对象和非图形对象
图形对象(也称为图元、实体对象)是组成图形的可见对象(例如直线、圆、光栅图像等)。非图形对象是指属于图形的一部分但不可见的(提示性的)对象,例如 Layers 、 Linetypes 、 DimStyles 、 SelectionSets 等等。要创建这些对象,可使用 Add 方法。每一个对象都有用于特定目的的方法和特性,都有设置和检索扩展数据以及删除自己的方法。