今回は,、過去バージョンに対する Windows 版 AutoCAD 2021 の互換性についてまとめておきたいと思います。まず、AutoCAD 2021 の概要については、数回に渡ってご紹介した下記のブログ記事をご確認ください。
図面ファイル形式
AutoCAD 2021、AutoCAD LT 2021 では、昨年の AutoCAD 2020/AutoCAD LT 2020 同様、2018 図面ファイル形式 を採用しています。新規図面を作成して保存する際には、この 2018 図面ファイル形式が既定値となります。
もちろん、旧バージョンの図面ファイル形式を開いたり、保存したりする機能も従来通りです。
図面読み込み:
-
- すべての AutoCAD バージョンで作成した DWG ファイル
- すべての AutoCAD バージョンで作成した DXF ファイル
図面の保存:
-
- R14, 2000, 2004, 2007, 2010, 2013, 2018 形式の DWG ファイル
- R12, 2000, 2004, 2007, 2010, 2013, 2018 形式の DXF ファイル
アドイン アプリケーションの互換性
AutoCAD 2021 は、引き続き、AutoLISP/Visual LISP、ActiveX オートメーション(COM)、ObjectARX、.NET API、JavaScript API の 5 つの AutoCAD API をサポートします。ただし、前バージョンの AutoCAD 2020からは バイナリ非互換リリース となるため、前バージョンの AutoCAD 2020 用に作成されたアドイン アプリケーションは、再ビルドを含む移植作業が必要になります。
サポート コンパイラ
ObjectARX と .NET API でお使いいただくコンパイラは、Visual Studio 2019 以降をサポートしています。Visual Studio 2019 のインストール時には、多数のインストール オプションの指定が必要です。ObjectARX を使った開発をする場合には「C++ によるデスクトップ開発」を、.NET API を使った開発をする場合には「.NET デスクトップ開発」をそれぞれ選択してください。
ObjectARX
既存の ObjectARX プロジェクトは、https://www.autodesk.com/developer-network/platform-technologies/autocad/objectarx から ObjectARX SDK for AutoCAD 2021 をダウンロード、参照して新しい開発環境となる Visual Studio 2019 で再ビルドする必要があります。プロジェクトに設定する「プラットフォーム ツールセット」が Visual Studio 2019(v142) になります。
また、リンクするスタティック リンク ライブラリを *24.lib に変更してください。
ObjectARX でカスタム オブジェクトを定義していて、COM サーバーとしてオブジェクト、メソッド、プロパティを COM で公開している場合には、.idl ファイルでインポートしているタイプライブラリも acax24enu.tlb ないし、acax24jpn.tlb に置き換える必要があります。
廃止、変更されたクラスや関数については、ObjectARX SDK for AutoCAD 2021 の docs フォルダの Reference Guide(arxref.chm)から ObjectARX Migration Guide セクションをご確認ください。
AutoCAD 2021 用の ObjectARX Wizard は、https://www.autodesk.com/developer-network/platform-technologies/autocad からダウンロードすることが出来ます。ただし、Windows 10 でのインストールには注意が必要です。詳細は、このページ下部の Windows 10 での Wizards の問題 と Windows 10 への ObjectARX 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 2020 用に作成したアドイン アプリケーションは、AutoCAD 2021 のアセンブリ ファイルを参照後、プロジェクトのターゲット フレームワークを .NET Framework 4.8 に変更して再ビルドしてください。 ターゲット フレームワークに .NET Framework 4.8 を指定出来るようにするには、Visual Studio Installer から、Visual Studio 2019 の [個別のコンポーネント] で「.NET Framework 4.8 Targeting Pack」をインストールしてください。
一部のクラスやメソッド、プロパティが変更されている場合がありますので、ソースコードに適切な変更を加える必要があります。
廃止、変更されたクラスやメソッド、プロパティについては、ObjectARX SDK for AutoCAD 2021 の docs フォルダの Managed Class Reference Guide(arxmgd.chm)から .NET Migration Guide セクションをご確認ください。
なお、.NET API の開発者用ガイドは、AutoCAD 2021 のオンライン ヘルプ内に日本語化された状態で参照することが出来ます。
AutoCAD 2021 用の .NET Wizard は、https://www.autodesk.com/developer-network/platform-technologies/autocad からダウンロードすることが出来ます。ただし、Windows 10 でのインストールには注意が必要です。詳細は、このページ下部の Windows 10 での Wizards の問題 をご確認ください。
ActiveX オートメーション(COM)
前バージョン用に作成されたアドイン アプリケーションは、そのままロードして実行できるはずです。こちらも、可能であれば、新しいバージョンのタイプライブラリを参照しなおしてテストすることをお勧めします。タイプライブラリの詳細は、AutoCAD 2021 のオンラインヘルプをご確認ください。
VBA をお使いの場合、VBA コンポーネントは http://www.autodesk.com/vba-download から参照可能な Autodesk Knowledge Network 記事からダウンロードすることが出来ます。
AutoLISP
Visual Studio Code での AutoLISP 開発 でご案内しているとおり、AutoCAD 2021 では、従来の Visual LISP エディタが Visual Studio Code に置き換えられていますのでご注意ください。AutoCAD 2021 では、新しく用意された MAKELISPAPP[LISP アプリを作成] コマンドを使って、配布に適したアプリケーション ファイル(.vlx ファイル)にコンパイルすることが出来ます。コンパイル時には、複数の AutoLISP ファイル(.lsp ファイル)を 1 つの .vlx ファイルにすることが出来るだけでなく、同時にバイナリ ファイル化されるので、ソース コードを保護することも出来ます。なお、コンパイル時には、従来通り、ウィザードが用意されています。
JavaScript
JavaScript ライブラリには変更はありませんので移植作業は不要です。
その他、アドイン アプリケーションの互換性に関する情報は、AutoCAD 2021 のオンライン ヘルプをご参照ください。
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 が動作しない
Windows 10 上の Visual Studio 2019 で AutoCAD .NET Wizards が正しく認識されない問題については、次の Autodesk Knowledge Network 記事をご確認ください。
AutoCAD API:Visual Studio 2019 に .NET Wizards が認識されない
AutoCAD .NET API の参照アセンブリ
以前、NuGet と AutoCAD.NET API のブログ記事でもご案内したのと同様に、AutoCAD 2021 上で .NET API で使用する際に参照するアセンブリは、Visual Studio 上の NuGet パッケージ マネージャか、オンラインで入手することも出来ます。当該 NuGet ページは https://www.nuget.org/packages/AutoCAD.NET/24.0.0 です。
By Toshiaki Isezaki
コメント
コメントフィードを購読すればディスカッションを追いかけることができます。