COM 互操作性 (.NET)
Microsoft Visual Studio 可以在同一项目中同时使用本机 .NET 和 COM 接口。通过利用 COM 互操作,可以迁移可能用 Visual Basic 6 或 VBA 编写的现有代码,而无需完全重写它。要从在 Microsoft Visual Studio 中创建的项目访问 AutoCAD 自动化对象,请创建对以下文件的引用:
- 最新的AutoCAD或基于AutoCAD的文字库acax24enu.tlb位于<drive>:\Program Files\Common Files\Autodesk Shared。
- AutoCAD/ObjectDBX Common 24.0 类型库 axdb24enu.tlb,位于 <drive>:\Program Files\Common Files\Autodesk Shared。
注意:前面提到的类型库也作为 ObjectARX SDK 的一部分提供。
这些引用将使以下主要互操作程序集可用:
- Autodesk.AutoCAD.Interop.dll(适用于特定于 AutoCAD 的类型)
- Autodesk.AutoCAD.Interop.Common.dll(适用于 ObjectDBX™ 主机应用程序共享的类型)
互操作程序集位于全局程序集缓存中;它们将自动化对象映射到其 .NET 对应项。
引用类型库后,应将 和 命名空间导入到代码模块中,这些模块将利用库中定义的对象,如以下示例所示:Autodesk.AutoCAD.InteropAutodesk.AutoCAD.Interop.Common
- VB.NET
-
Imports Autodesk.AutoCAD.Interop
Imports Autodesk.AutoCAD.Interop.Common
- C#
-
using Autodesk.AutoCAD.Interop;
using Autodesk.AutoCAD.Interop.Common;
可以根据库中定义的对象声明变量,如以下示例所示:
- VB.NET
-
Dim objAcApp As AcadApplication
Dim objLine As AcadLine
- C#
-
AcadApplication objAcApp;
AcadLine objLine;
互操作程序集有助于从 VBA 过渡到 VB.NET。但是,为了充分利用 .NET 和 AutoCAD .NET API 提供的所有功能,您需要重写现有的 VBA 代码。
可以使用以下对象中的以下属性从相应的 .NET 对象获取指向 COM 对象的指针:
- ApplicationServices.Application.AcadApplication
- DatabaseServices.Database.Acad数据库
- ApplicationServices.Document.AcadDocument
可以使用静态函数从 .NET 对象获取 COM 对象。例如,从 COM 数据库对象获取 .NET 数据库对象。FromAcadXxxDatabase.FromAcadDatabase
创建和引用应用程序
AutoCAD .NET 应用程序可以使用与 AutoCAD 自动化项目相同的类型库 (acax24enu.tlb)。类型库位于 <drive>:\Program Files\Common Files\Autodesk Shared 中。
AutoCAD .NET 应用程序还对 、 和 函数使用与版本相关的相同 ProgID。CreateObjectGetObjectGetInterfaceObject
可以使用产品 ProgID 创建 AutoCAD 应用程序的新实例 (),并指定版本的主要和次要编号,以将应用程序限制为特定版本或彼此二进制兼容的所有版本。"AutoCAD.Application"
例如
- CreateObject("AutoCAD.Application.24.3")尝试创建 AutoCAD 2024 的新实例,即使安装了共享相同产品主要版本的另一个版本也是如此。
- CreateObject("AutoCAD.Application.24.2")尝试创建 AutoCAD 2023 的新实例,即使安装了共享相同产品主要版本的另一个版本也是如此。
- CreateObject("AutoCAD.Application.24.1")尝试创建 AutoCAD 2022 的新实例,即使安装了共享产品相同主要版本的另一个版本也是如此。
- CreateObject("AutoCAD.Application.24")尝试创建 AutoCAD 2021、AutoCAD 2022 或 AutoCAD 2023 的新实例。
- CreateObject("AutoCAD.Application.23.1")尝试创建 AutoCAD 2020 的新实例,即使安装了共享相同产品主要版本的另一个版本也是如此。
- CreateObject("AutoCAD.Application.23")尝试创建 AutoCAD 2019 或 AutoCAD 2020 的新实例。
- CreateObject("AutoCAD.Application.22")尝试创建 AutoCAD 2018 的新实例。
- CreateObject("AutoCAD.Application.21")尝试创建 AutoCAD 2017 的新实例。
- CreateObject("AutoCAD.Application.20.1")尝试创建 AutoCAD 2016 的新实例,即使安装了共享相同产品主要版本的另一个版本也是如此。
- CreateObject("AutoCAD.Application.20")尝试创建 AutoCAD 2015 或 AutoCAD 2016 的新实例。
注意:您必须安装尝试创建其实例的相应版本。
如果从进程内 DLL(类库)使用 ActiveX/COM,并且想要引用 AutoCAD 应用程序对象,则可以使用特性。Autodesk.AutoCAD.ApplicationServices.Application.AcadApplication
|