Microsoft Visual Studio では、ネイティブ .NET および COM インタフェースの両方を同じプロジェクトで使用することができます。COM 相互運用機能を使用すれば、Visual Basic 6 または VBA で書かれた可能性のある既存のコードを、完全に書き直すことなくマイグレートすることができます。Microsoft Visual Studio で作成されたプロジェクトから AutoCAD オートメーション オブジェクトにアクセスするには、次のファイルへの参照を作成します。
- 最新の AutoCAD または AutoCAD ベースのタイプ ライブラリ acax25jpn.tlb は、<ドライブ>:¥Program Files¥Common Files¥Autodesk Shared にあります。
- AutoCAD/ObjectDBX Common 25.0 タイプ ライブラリ axdb25jpn.tlb は、<ドライブ>:¥Program Files¥Common Files¥Autodesk Shared にあります。
注: 上記のタイプ ライブラリは、ObjectARX SDK の一部としても使用できます。
これらの参照により、次のプライマリ相互運用アセンブリが使用できるようになります。
- Autodesk.AutoCAD.Interop.dll (AutoCAD 固有のタイプ用)
- Autodesk.AutoCAD.Interop.Common.dll (ObjectDBX™ ホスト アプリケーションで共有されるタイプ用)
この相互運用機能アセンブリはグローバル アセンブリ キャッシュに置かれ、オートメーション オブジェクトを .NET の対応するオートメーション オブジェクトにマップします。
タイプ ライブラリを参照した後、次の例に示すように、ライブラリに定義されているオブジェクトを利用するコード モジュールに Autodesk.AutoCAD.Interop および Autodesk.AutoCAD.Interop.Common 名前領域を読み込む必要があります。
C#
using Autodesk.AutoCAD.Interop;
using Autodesk.AutoCAD.Interop.Common;
VB.NET
Imports Autodesk.AutoCAD.Interop
Imports Autodesk.AutoCAD.Interop.Common
次の例に示すように、ライブラリに定義されているオブジェクトに基づいて変数を宣言することができます。
C#
AcadApplication objAcApp;
AcadLine objLine;
VB.NET
Dim objAcApp As AcadApplication
Dim objLine As AcadLine
相互運用機能アセンブリは、VBA から .NET に移行する際に役立つ場合があります。ただし、.NET および AutoCAD .NET API の機能を十分に活用するには、既存の VBA コードを書き直す必要があります。
次のオブジェクトからの次のプロパティを使用することで、対応する .NET オブジェクトから COM オブジェクトへのポインタを取得することができます。
- ApplicationServices.Application.AcadApplication
- DatabaseServices.Database.AcadDatabase
- ApplicationServices.Document.AcadDocument
COM オブジェクトは、FromAcadXxx 静的関数を使用して .NET オブジェクトから取得することができます。たとえば、Database.FromAcadDatabase は、COM データベース オブジェクトから .NET データベース オブジェクトを取得します。
アプリケーションを作成および参照する
AutoCAD .NET アプリケーションは、AutoCAD オートメーション プロジェクトと同じタイプ ライブラリ(acax25jpn.tlb)を使用することができます。このタイプ ライブラリは <ドライブ>:¥Program Files¥Common Files¥Autodesk Shared にあります。
また、AutoCAD .NET アプリケーションでは、CreateObject 関数、GetObject 関数、GetInterfaceObject 関数に、同じバージョン依存 ProgID を使用します。
製品の ProgID を使用して、AutoCAD アプリケーション("AutoCAD.Application")の新しいインスタンスを作成したり、リリースのメジャー番号とマイナー番号を指定してアプリケーションの対象を特定のリリースに制限したり、バイナリ互換性のあるすべてのリリースを対象にすることができます。
例:
- CreateObject("AutoCAD.Application.25.1") は、AutoCAD 2026 の新しいインスタンスを作成します。
- CreateObject("AutoCAD.Application.25.0") は、AutoCAD 2025 の新しいインスタンスを作成します。
- CreateObject("AutoCAD.Application.25")は、AutoCAD 2025 または AutoCAD 2026 の新しいインスタンスを作成します。
- 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.0") は、製品の同じメジャー バージョンが共通の他のリリースがインストールされている場合でも、AutoCAD 2021 の新しいインスタンスを作成します。
- CreateObject("AutoCAD.Application.24")は、AutoCAD 2021、AutoCAD 2022、AutoCAD 2023、または AutoCAD 2024 の新しいインスタンスを作成します。
- CreateObject("AutoCAD.Application.23.1") は、製品の同じメジャー バージョンが共通の他のリリースがインストールされている場合でも、AutoCAD 2020 の新しいインスタンスを作成します。
- CreateObject("AutoCAD.Application.23.0") は、製品の同じメジャー バージョンが共通の他のリリースがインストールされている場合でも、AutoCAD 2019 の新しいインスタンスを作成します。
- 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 プロパティを使用することができます。