CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

ObjectARX 开发指南

COM 互操作性 (.NET)

2023-1-1 17:58| 发布者: admin| 查看: 809| 评论: 0|来自: AutoCAD

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 Type Libraryaxdb24enu.tlb,位于<drive>:\Program Files\Common Files\Autodesk Shared
注意:前面提到的类型库也作为 ObjectARX SDK 的一部分提供。

这些引用将使以下主互操作程序集可用:

  • Autodesk.AutoCAD.Interop.dll(适用于特定于 AutoCAD 的类型)
  • Autodesk.AutoCAD.Interop.Common.dll(适用于 ObjectDBX主机应用程序共享的类型)

互操作程序集位于全局程序集缓存中;它们将自动化对象映射到其 .NET 对应项。

引用类型库后,应将 theandnamespace 导入到代码模块中,这些代码模块将使用库中定义的对象,如以下示例所示: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.AcadDatabase
  • 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")尝试创建AutoCAD 2021 的新实例。
  • CreateObject("AutoCAD.Application.23.1")尝试创建AutoCAD 2020 的新实例,即使安装了共享相同产品主要版本的另一个版本也是如此。
  • CreateObject("AutoCAD.Application.23")尝试创建AutoCAD 2019 或 AutoCAD2020 的新实例。
  • 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


路过

雷人

握手

鲜花

鸡蛋

最新评论

 VBA & VB.NET开发基础与实例教程

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

GMT+8, 2024-5-7 05:42

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部