今回は、カスタマイズを含む AutoCAD 2018 の互換性についてご案内します。AutoCAD 2018 自体の新機能については、次のブログ記事をご確認ください。
図面ファイル形式
AutoCAD 2018 の新機能 ~ その4 でもご案内していますが、AutoCAD 2018、AutoCAD LT 2018 では、新しく 2018 図面ファイル形式 が採用されています。
もちろん、旧バージョンとのデータ交換に必要な下位図面ファイル形式の保存機能も備えています。
図面読み込み:
- すべての AutoCAD バージョンで作成した DWG ファイル
- すべての AutoCAD バージョンで作成した DXF ファイル
図面の保存:
- R14, 2000, 2004, 2007, 2010, 2013, 2018 形式の DWG ファイル
- R12, 2000, 2004, 2007, 2010, 2013, 2018 形式の DXF ファイル
すべての図面ファイルで明確な恩恵を体感出来るわけではありませんが、今回の 2018 DWG ファイル形式の採用で、図面保存時のパフォーマンスが向上しています。過去の図面ファイル形式の改変理由については、過去のブログ記事 図面ファイル形式の更新について を参照してみてください。
なお、AutoCAD 2016 から DWG 図面ファイルへのパスワード設定の機能は削除されていますのでご注意ください。詳しくは、ブログ記事 AutoCAD 2016 のカスタマイズ互換性 で触れていますので、必要に応じてご確認ください。
アドイン アプリケーションの互換性
AutoCAD 2018 は、引き続き、AutoLISP/Visual LISP、ActiveX オートメーション(COM)、ObjectARX、.NET API、JavaScript API の 5 つの AutoCAD API をサポートします。今回のリリースは前リリースから バイナリ非互換リリース となるため、前リリース用に各 AutoCAD API 作成されたアドイン アプリケーションは移植作業が必要になります。
ObjectARX
既存の ObjectARX プロジェクトは、ObjectARX SDK for AutoCAD 2018 を参照して新しい開発環境となる Visual Studio 2015 Update 3で再ビルドする必要があります。旧バージョンの Visual Studio で作成した プロジェクト は、Visual Studio 2015 で開くことで自動的にアップグレードされて、「プラットフォーム ツールセット」が Visual Studio 2015(v140) に変更されます。
あとは、リンクするスタティック リンク ライブラリを *22.lib に変更するだけです。例えば、AutoCAD 2017 時に Visual Studio 2015 で参照していた ac1st21.lib は、AutoCAD 2018 用に ac1st22.lib に置き換えてください。
ObjectARX でカスタム オブジェクトを定義していて、COM サーバーとしてオブジェクト、メソッド、プロパティを COM で公開している場合には、.idl ファイルでインポートしているタイプライブラリも axdb22enu.tlb ないし、axdb22jpn.tlb に置き換える必要があります。
2018 で廃止、変更されたクラスや関数については、http://www.autodesk.com/objectarx からダウンロード可能な ObjectARX SDK for AutoCAD 2018 のインストール後、docs フォルダの Reference Guide(arxref.chm)の ObjectARX Migration Guide セクションを確認してみてください。
サポートされる .NET Framework は .NET Framework 4.6 です。このため、前バージョンの AutoCAD 2017 用に作成されたアドイン アプリケーションは、そのままロードして実行できるはずです。ただ、可能であれば、AutoCAD 2018 のアセンブリ ファイルを参照して再ビルドすることをお勧めします。もちろん、一部のクラスやメソッド、プロパティが変更されている場合がありますので、その場合には、ソースコードに適切な変更を加える必要があります。
2018 で廃止、変更されたクラスやメソッド、プロパティについては、http://www.autodesk.com/objectarx からダウンロード可能な ObjectARX SDK for AutoCAD 2018 のインストール後、docs フォルダの Managed Class Reference Guide(arxmgd.chm)の .NET Migration Guide セクションを確認してみてください。
AutoLISP/ActiveX オートメーション(COM)/JavaScript
前バージョン用に作成されたアドイン アプリケーションは、そのままロードして実行できるはずです。こちらも、可能であれば、新しいバージョンのタイプライブラリを参照しなおしてテストすることをお勧めします。タイプライブラリの詳細は、AutoCAD 2018 のオンラインヘルプをご確認ください。
VBA をお使いの場合、VBA コンポーネントは http://www.autodesk.com/vba-download から参照可能な Autodesk Knowledge Network 記事からダウンロードすることが出来ます。http://www.autodesk.com/vba-download-jpn を参照すれば、日本語の Autodesk Knowledge Network 記事を表示させることも出来ます。
JavaScript ライブラリには変更はありませんので移植作業は不要です。
その他、アドイン アプリケーションの互換性に関する情報は、AutoCAD 2018 のオンライン ヘルプをご参照ください。
AutoCAD 2014 以前からアドインを移植される際の注意
AutoCAD 2015 より前のリリースからアドイン アプリケーションを移植する場合には、リリース毎に加えられたアーキテクチャとセキュリティ仕様等の変更に注意が必要です。特に、次に説明する点は単なる移植ではなく、コードの変更やアプリケーション構成の見直しが必要になる場合があります。
ファイバー削除
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 つの画像ファイルでサポート出来るようになります。
Windows 10 での Wizards の問題
オートデスクは、AutoCAD アドイン開発用に Visual Studio のスケルトン プロジェクトを作成する Wizards を、.NET API 用と ObjectARX 用にそれぞれ提供しています。両 Wizards は、http://www.autodesk.com/developautocad から入手することが出来ます。両者とも msi 形式のインストーラで Visual Studio 2015 Update 3 がセットアップされた開発環境にインストールすることが出来ますが、インストーラ自体にデジタル署名が施されていないため、インストール時に警告メッセージが表示されてしまう問題があります。
インストール開始時に「Windows によって PC が保護されました」とメッセージが表示されたら、画面上に表示されてる 詳細情報 リンクをクリックして、[実行] ボタンからインストールをしてみてください。
Windows 10 への ObjectARX Wizards のインストール
ObjectARX Wizards を Windows 10 にインストールする場合にも、上記の方法を使用してインストール自体を完了することは出来ます。ただし、Visual Studio 2015 Update 3 上でインストールされた ObjectARX 2018 Wizards を起動し て ObjectARX/DBX Project テンプレートを指定し、新規プロジェクトを作成しようとしても、何も処理されません。
この問題を回避するには、Windows 10 上でコマンド プロンプトを管理者モードで起動して、msiexec を使って ObjectARX Wizard をインストールしてください。コマンド プロンプトを管理者モードで起動するには、スタート ボタンから [Windows システム ツール] >> [コマンド プロンプト] を見つけて、マウスの右ボタン メニューから [その他] >> [管理者として実行] を選択します。
コマンド プロンプト上で misexec の実行する際には、msiexec /i ObjectARXWizards.msi と入力をしてください。
AutoCAD .NET API の参照アセンブリ
以前、NuGet と AutoCAD.NET API のブログ記事でもご案内したのと同様に、AutoCAD 2018 上で .NET API で使用する際に参照するアセンブリは、Visual Studio 上の NuGet パッケージ マネージャか、オンラインで入手することも出来ます。当該 NuGet ページは https://www.nuget.org/packages/AutoCAD.NET/22.0.0 です。
By Toshiaki Isezaki
コメント