资源描述:
《CAD应用二次开发VB和VBA开发CAD的知识.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、个人收集整理勿做商业用途1、如何在 VB 中连接 AutoCAD。启动 VB ,引用 AutoCAD 类型库。操作步骤:从“工程”菜单中选择“引用”选项,启动“引用”对话框。在“引用”对话框中,选择 AutoCAD 类型库,然后单击“确定”。 定义模块级变量 AutoCAD 应用程序 (acadApp) 和当前的文档 (acadDoc)。如果 AutoCAD 正在运行,使用 GetObject 函数将检索 AutoCAD Application 对象。如果 AutoCAD 没有运行,使用 CreateObject 函数试图创建一个
2、AutoCAD Application 对象。如果创建成功,会启动 AutoCAD;如果失败,则会发生错误。 ﻫ同时运行多个 AutoCAD 任务时,GetObject 函数会返回 Windows 运行对象表中的第一个 AutoCAD 实例。要显示 AutoCAD 图形窗口,需要将 AutoCAD 应用程序的 Visible 特性设置为 TRUE。 使用 acadDoc 变量引用当前的 AutoCAD 图形。 ﻫ示例: ﻫDim acadApp As AcadApplication ﻫDim acadDoc as AcadDocum
3、ent 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 开发的
4、程序不依赖于 AutoCAD 的版本。ﻫ启动 VB ,定义模块级变量 AutoCAD 应用程序 (acadApp) 和当前的文档 (acadDoc)。如果 AutoCAD 正在运行,使用 GetObject 函数将检索 AutoCAD Application 对象。如果 AutoCAD 没有运行,使用 CreateObject 函数试图创建一个 AutoCAD Application 对象。如果创建成功,会启动 AutoCAD;如果失败,则会发生错误。 个人收集整理勿做商业用途同时运行多个 AutoCAD 任务时,GetObject
5、 函数会返回 Windows 运行对象表中的第一个 AutoCAD 实例。ﻫ要显示 AutoCAD 图形窗口,需要将 AutoCAD 应用程序的 Visible 特性设置为 TRUE。 ﻫ使用 acadDoc 变量引用当前的 AutoCAD 图形。 示例: ﻫDim acadApp As Object ﻫDim acadDoc as Object Sub ConnectToAcad() ﻫﻫOn Error Resume NextSet acadApp = GetObject(, "AutoCAD.Application") If
6、 Err Then Err.Clear ﻫSet acadApp = CreateObject("AutoCAD.Application")ﻫIf Err Then EndEnd IfacadApp.Visible = TrueSet acadDoc = acadApp.ActiveDocument ﻫEnd Subﻫ与第一个问题相比较,可以看出,不引用具体的类型库以及使用通用的对象类型就可以达到通用性。 ﻫ3、前期绑定和后期绑定要创建一个使用前期绑定方式的对象变量,也就是说,在程序编译时就完成绑定,则对象变量在声明时应指定类 ID
7、,如:Dim acadApp As AcadApplication。 ﻫ使用 As Object 子句声明对象变量,可以创建一个能包含任何类型对象引用的变量。不过,该变量访问对象是后期绑定的,也就是说,绑定在程序运行时才进行,如:Dim acadApp As Object。ﻫ前期绑定的变量引用可以提供更好的性能,但该变量只能存放声明中所指定的类的引用。ﻫ而后期绑定的变量引用可以提供更好的通用性。ﻫ4、依赖于版本和独立于版本个人收集整理勿做商业用途ﻫ如果 CreateObject 或 GetObject 函数使用的 ProgID 没有
8、附加版本号,那么是独立于版本的,否则是依赖于版本的。例如,如果使用的是 CreateObject,则 CreateObject ("AutoCAD.Application") 是独立于版本的,而 CreateObject ("Auto