今回は過去バージョンに対する Windows 版 AutoCAD 2022 の互換性についてまとめておきたいと思います。まず、AutoCAD 2022 の概要については次のブログ記事をご確認ください。
図面ファイル形式
AutoCAD 2022、AutoCAD LT 2022 では、昨年の AutoCAD 2021/AutoCAD LT 2021 同様、2018 図面ファイル形式 を採用しています。新規図面を作成して保存する際には、この 2018 図面ファイル形式が既定値となります。
もちろん、旧バージョンの図面ファイル形式を開いたり、保存したりする機能も従来通りです。
図面読み込み:
- すべての AutoCAD バージョンで作成した DWG ファイル (非TrustedDWG を除く)
- すべての AutoCAD バージョンで作成した DXF ファイル
図面の保存:
- R14, 2000, 2004, 2007, 2010, 2013, 2018 形式の DWG ファイル
- R12, 2000, 2004, 2007, 2010, 2013, 2018 形式の DXF ファイル
アドイン アプリケーションの互換性
AutoCAD 2022 は、引き続き、AutoLISP/Visual LISP、ActiveX オートメーション(COM)、ObjectARX、.NET API、JavaScript API の 5 つの AutoCAD API をサポートします。ただし、前バージョンの AutoCAD 2021からは バイナリ互換リリース となるため、前バージョンの AutoCAD 2021 用に作成されたアドイン アプリケーションは、そのままロードして実行できるはずです。ただし、念のため、動作チェックすることをお勧めしています。
サポート コンパイラ
ObjectARX と .NET API でお使いいただくコンパイラは、Visual Studio 2019 16.7 以降をサポートしています(ObjectARX は Visual Studio 2019 16.7)。Visual Studio 2019 のインストール時には、多数のインストール オプションの指定が必要です。ObjectARX を使った開発をする場合には「C++ によるデスクトップ開発」を、.NET API を使った開発をする場合には「.NET デスクトップ開発」をそれぞれ選択してください。
ObjectARX
前バージョンの AutoCAD 2021 用に作成したアドイン アプリケーションをお持ちで、AutoCAD 2021 で使用する必要がない場合には、https://www.autodesk.com/developer-network/platform-technologies/autocad/objectarx から ObjectARX SDK for AutoCAD 2022 をダウンロード、参照して新しい開発環境となる Visual Studio 2019 で再ビルドすることをお勧めします。それ以前の既存プロジェクトの移植では、この作業が必須となります。プロジェクトに設定する「プラットフォーム ツールセット」は Visual Studio 2019(v142) になります。
また、リンクするスタティック リンク ライブラリは、ObjectARX SDK for AutoCAD 2022 の *24.lib に変更してください。
ObjectARX でカスタム オブジェクトを定義していて、COM サーバーとしてオブジェクト、メソッド、プロパティを COM で公開している場合には、.idl ファイルでインポートしているタイプライブラリも acax24enu.tlb ないし、acax24jpn.tlb に置き換える必要があります。
廃止、変更されたクラスや関数については、ObjectARX SDK for AutoCAD 2022 の docs フォルダの Reference Guide(arxref.chm)から ObjectARX Migration Guide セクションをご確認ください。
AutoCAD 2022 用の ObjectARX Wizard は、https://www.autodesk.com/developer-network/platform-technologies/autocad からダウンロードすることが出来ます。ただし、Windows 10 でのインストールには注意が必要です。詳細は、このページ下部の Windows 10 での Wizards の問題 をご確認ください。
また、正しくインストールされた ObjectARX Wizard を使用した場合でも、Wizardの [MFC Support] 画面で Extension DLL using MFC shared DLL(recommended for MFC support) オプションにチェックしてプロジェクトを作成した場合、プロジェクト作成直後に作成されたプロジェクトがロードされず、[新しいプロジェクト] ダイアログが再度表示されてしまう場合には、お使いの Visual Studio 2019 に MFC コンポーネントがインストールされていない可能性があります。MFC コンポーネントは、コントロール パネル >> プログラムのアンインストール から、Microsoft Visual Studio Installer、または、Visual Studio 2019 を選択後、「変更」をクリックすると、Visual Studio 2019 のインストール後でも確認やインストール指示が可能です。
.NET API
サポートされる .NET Framework は .NET Framework 4.8 です。前バージョンの AutoCAD 2021 用に作成したアドイン アプリケーションをお持ちで、AutoCAD 2021 で使用する必要がない場合には、AutoCAD 2022 のアセンブリ ファイルを参照後、再ビルドをお勧めします。 ターゲット フレームワークに .NET Framework 4.8 のまま変更はありません。
AutoCAD 2020 以前からの移植で ターゲット フレームワークに .NET Framework 4.8 に指定する場合には、Visual Studio Installer から、Visual Studio 2019 の [個別のコンポーネント] で「.NET Framework 4.8 Targeting Pack」を先にインストールしておく必要があります。
一部のクラスやメソッド、プロパティが変更されている場合がありますので、ソースコードに適切な変更を加える必要があります。
廃止、変更されたクラスやメソッド、プロパティについては、ObjectARX SDK for AutoCAD 2022 の docs フォルダの Managed Class Reference Guide(arxmgd.chm)から .NET Migration Guide セクションをご確認ください。
なお、.NET API の開発者用ガイドは、AutoCAD 2022 のオンライン ヘルプ内に日本語化された状態で参照することが出来ます。
AutoCAD 2022 用の .NET Wizard は、https://www.autodesk.com/developer-network/platform-technologies/autocad からダウンロードすることが出来ます。ただし、Windows 10 でのインストールには注意が必要です。詳細は、このページ下部の Windows 10 での Wizards の問題 をご確認ください。
ActiveX オートメーション(COM)
前バージョン用に作成されたアドイン アプリケーションは、そのままロードして実行できるはずです。こちらも、可能であれば、新しいバージョンのタイプライブラリを参照しなおしてテストすることをお勧めします。タイプライブラリの詳細は、AutoCAD 2022 のオンラインヘルプをご確認ください。
VBA をお使いの場合、VBA コンポーネントは http://www.autodesk.com/vba-download から参照可能な Autodesk Knowledge Network 記事からダウンロードすることが出来ます。
AutoLISP
Visual Studio Code での AutoLISP 開発 でご案内しているとおり、AutoCAD 2022 でも、従来の Visual LISP エディタが Visual Studio Code に置き換えられていますのでご注意ください。AutoCAD 2022 でも MAKELISPAPP[LISP アプリを作成] コマンドを使って、配布に適したアプリケーション ファイル(.vlx ファイル)にコンパイルすることが出来ます。コンパイル時には、複数の AutoLISP ファイル(.lsp ファイル)を 1 つの .vlx ファイルにすることが出来るだけでなく、同時にバイナリ ファイル化されるので、ソース コードを保護することも出来ます。なお、コンパイル時には、従来通り、ウィザードが用意されています。
JavaScript
JavaScript ライブラリには変更はありませんので移植作業は不要です。
その他、アドイン アプリケーションの互換性に関する情報は、AutoCAD 2022 のオンライン ヘルプをご参照ください。
AutoCAD 2014 以前のリリースからアドインを移植される際の注意
AutoCAD 2014 より前のリリースからアドイン アプリケーションを移植する場合には、リリース毎に加えられたアーキテクチャとセキュリティ仕様等の変更に注意が必要です。特に、次に説明する点は単なる移植ではなく、コードの変更やアプリケーション構成の見直しが必要になる場合があります。
ファイバー削除
AutoCAD 2015 では、AutoCAD ウィンドウ内に複数の図面を表示させることが出来るようになった AutoCAD 2000 以降、初めてとなる大きな変更が加えられています。AutoCAD 2014 までは、 図面を表示する子ウィンドウ間の切り替え処理に「ファイバー」という機構が利用されてきましたが、Microsoft 社がファイバーのサポートを終了するのにあわせ、AutoCAD 2015 ではファイバーを使用しない仕組みを導入しています。これが「ファイバー削除」と呼ばれる所以です。
ファイバー削除によって、子ウィンドウの切り替え時の振る舞いに仕様変更が加えられています。また、ドキュメントの切り替えなど、各種 API を利用してイベントの発生順序に依存するような処理を実装している場合には、従来の構成が期待通り動作しない可能性もあります。AutoCAD 2015 で導入されたファイバー削除の影響については、AutoCAD 2015 のカスタマイズ互換性 の ファイバー削除の影響 項をご参照ください。
ゼロドキュメントの状態
AutoCAD 2015 では、いままでのバージョンのように、起動直後に図面を表示する図面子ウィンドウは表示されません。既定では [新しいタブ] が表示されます(AutoCAD 2016 以降は [スタート] タブに名称変更)。ObjectARX や AutoCAD .NET API を使ったアプリケーションがアクティブなドキュメント(AcApDocument、Document)や図面データベース(AcDbDatabase、Database)を参照している場合には、図面が表示されていない状態、つまり、ゼロドキュメント状態 を想定したプログラム改修が必要です。例えば、現在アクティブな図面データベースの取得を実装している場合には、acdbHostApplicationServices()->workingDatabase() や HostApplicationServices.WorkingDatabase の戻り値が、null、Null、Nothing(言語によって異なる)でないことを明示的に確認する必要があります。
デジタル署名
AutoCAD 2016 以降、セキュリティ向上の観点から、使用する API の種類を問わず、すべてのアドイン アプリケーションにはデジタル署名が求められます。デジタル署名のないアドインを AutoCAD にロードしようとすると、警告メッセージが表示されますのでご注意ください。アドイン アプリケーションに対するデジタル署名埋め込みの詳細については、ブログ記事 AutoCAD 2016 のセキュリティとアドインのデジタル署名 をご確認ください。この内容は、AutoCAD 2018 にも当てはまります。
メニュー ボタン
旧バージョンでカスタム ボタンの背景を透明に表現する目的で使用できた RGB 値、192,192,192 の色指定は、仕様変更によって AutoCAD 2017 から無効になっています。このため、AutoCAD 2017 以降のバージョンで透過性を持つカスタム ボタンのイメージを利用するためには、BMP ファイル形式ではなく、標準で透過性をサポートする PNG ファイルをお使いください。
PNG ファイルへの変換手順は、AutoCAD 2018 オンライン ヘルプの記事をご確認ください。もし、リソース DLL でカスタム ボタンのビットマップ イメージを管理される場合は、ブログ記事 PNG ファイルを使ったリソース DLL に PNG ファイルを使ったリソース DLL ファイルの作成方法をご紹介していますのでご参照ください。
この方法で、ダークテーマとライトテーマの両方を 1 つの画像ファイルでサポート出来るようになります。
オートデスクは、AutoCAD アドイン開発用に Visual Studio のスケルトン プロジェクトを作成する Wizards を、.NET API 用と ObjectARX 用にそれぞれ提供しています。両 Wizards は、http://www.autodesk.com/developautocad から入手することが出来ます。
Windows 10 上での ObjectARX Wizards のインストールや動作不良については、次の Autodesk Knowledge Network 記事をご確認ください。
AutoCAD API:ObjectARX Wizards が動作しない
ご注意:AutoCAD 2021 開発用に AutoCAD API:Visual Studio 2019 に .NET Wizards が認識されない の Autodesk Knowledge Network 記事に沿って _34EEC1CC133F4F489A28FCAE47DA4684.zip ファイルと _71ED6AA364074B9BAE8E4BDC8E024143.zip ファイルを C:\Users\<user name>\ドキュメント\Visual Studio 2019\Templates\ProjectTemplatesフォルダ(または C:\Users\<user name>\OneDrive\ドキュメント\Visual Studio 2019\Templates\ProjectTemplates フォルダに配置している場合、AutoCAD 2022 用の .NET Wizard が識別されない場合があります。AutoCAD 2022 用の .NET Wizard のインストール前に _34EEC1CC133F4F489A28FCAE47DA4684.zip ファイルと _71ED6AA364074B9BAE8E4BDC8E024143.zip ファイルを削除してください。
AutoCAD .NET API の参照アセンブリ
以前、NuGet と AutoCAD.NET API のブログ記事でもご案内したのと同様に、AutoCAD 2022 上で .NET API で使用する際に参照するアセンブリは、Visual Studio 上の NuGet パッケージ マネージャか、オンラインで入手することも出来ます。当該 NuGet ページは https://www.nuget.org/packages/AutoCAD.NET/24.1.51000 です。
By Toshiaki Isezaki
コメント