今回は過去バージョンに対する AutoCAD 2019 の互換性についてまとめておきたいと思います。まず、AutoCAD 2019 の概要については、数回に渡ってご紹介した下記のブログ記事をご確認ください。
Only One AutoCAD - 業種別 AutoCAD 製品の提供方法変更
Only One AutoCAD - モバイル アプリと Web アプリ
図面ファイル形式
AutoCAD 2019 の新機能 ~ その 1 でも触れていますが、AutoCAD 2019、AutoCAD LT 2019 では、昨年の AutoCAD 2018/AutoCAD LT 2018 同様、2018 図面ファイル形式 を採用しています。新規図面を作成して保存する際には、この 2018 図面ファイル形式が既定値となります。
もちろん、旧バージョンの図面ファイル形式を開いたり、保存したりする機能も従来通りです。
図面読み込み:
- すべての AutoCAD バージョンで作成した DWG ファイル
- すべての AutoCAD バージョンで作成した DXF ファイル
図面の保存:
- R14, 2000, 2004, 2007, 2010, 2013, 2018 形式の DWG ファイル
- R12, 2000, 2004, 2007, 2010, 2013, 2018 形式の DXF ファイル
アドイン アプリケーションの互換性
AutoCAD 2019 は、引き続き、AutoLISP/Visual LISP、ActiveX オートメーション(COM)、ObjectARX、.NET API、JavaScript API の 5 つの AutoCAD API をサポートします。残念ながら前バージョンの AutoCAD 2018 から バイナリ非互換リリース となるため、AutoCAD 2018 用に各 AutoCAD API 作成されたアドイン アプリケーションは移植作業が必要になります。
サポート コンパイラ
ObjectARX と .NET API でお使いいただくコンパイラは、Visual Studio 2017 Update 2 以降をサポートしています。Visual Studio 2017 のインストール時には、多数のインストール オプションの指定が必要です。ObjectARX の開発をされる場合には「C++ によるデスクトップ開発」を、.NET API の開発をされる場合には「.NET デスクトップ開発」をそれぞれ選択してください。
ObjectARX
既存の ObjectARX プロジェクトは、https://www.autodesk.com/developer-network/platform-technologies/autocad/objectarx を参照して新しい開発環境となる Visual Studio 2017 Update 2 以降で再ビルドする必要があります。旧バージョンの Visual Studio で作成した プロジェクト は、Visual Studio 2017 で開くことで自動的にアップグレードされて、「プラットフォーム ツールセット」が Visual Studio 2017(v141) に変更されます。
あとは、リンクするスタティック リンク ライブラリを *23.lib に変更するだけです。例えば、AutoCAD 2018 時に Visual Studio 2015 で参照していた ac1st22.lib は、AutoCAD 2019 用に ac1st23.lib に置き換えてください。
ObjectARX でカスタム オブジェクトを定義していて、COM サーバーとしてオブジェクト、メソッド、プロパティを COM で公開している場合には、.idl ファイルでインポートしているタイプライブラリも axdb23enu.tlb ないし、axdb23jpn.tlb に置き換える必要があります。
2018 で廃止、変更されたクラスや関数については、https://www.autodesk.com/developer-network/platform-technologies/autocad/objectarx からダウンロード可能な ObjectARX SDK for AutoCAD 2019 のインストール後、docs フォルダの Reference Guide(arxref.chm)の ObjectARX Migration Guide セクションを確認してみてください。
AutoCAD 2019 用の 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 2017 に MFC コンポーネントがインストールされていない可能性があります。MFC コンポーネントは、コントロール パネル >> プログラムのアンインストール から、Microsoft Visual Studio Installer、または、Visual Studio <edition name> 2017 を選択後、「変更」をクリックすると、Visual Studio 2017 のインストール後でも確認やインストール指示が可能です。「MFC と ATL のサポート (x86 と x64)」にチェックがない場合には、この項目にチェックをして [変更] ボタンをクリックして MFC コンポーネントをインストールしてください。
.NET API
サポートされる .NET Framework は .NET Framework 4.7 です。このため、前バージョンの AutoCAD 2018 用に作成されたアドイン アプリケーションは、そのままロードして実行できるはずです。ただ、十分なテストをお願いします。可能であれば、AutoCAD 2019 のアセンブリ ファイルを参照して再ビルドすることをお勧めします。もちろん、一部のクラスやメソッド、プロパティが変更されている場合がありますので、その場合には、ソースコードに適切な変更を加える必要があります。
2019 で廃止、変更されたクラスやメソッド、プロパティについては、https://www.autodesk.com/developer-network/platform-technologies/autocad/objectarx からダウンロード可能な ObjectARX SDK for AutoCAD 2019 のインストール後、docs フォルダの Managed Class Reference Guide(arxmgd.chm)の .NET Migration Guide セクションを確認してみてください。
なお、.NET API の開発者用ガイドは、AutoCAD 2019 のオンライン ヘルプ内に日本語化された状態で参照することが出来ます。
AutoCAD 2019 用の .NET Wizard は、https://www.autodesk.com/developer-network/platform-technologies/autocad からダウンロードすることが出来ます。ただし、Windows 10 でのインストールには注意が必要です。詳細は、このページ下部の Windows 10 での Wizards の問題 をご確認ください。
AutoLISP/ActiveX オートメーション(COM)/JavaScript
前バージョン用に作成されたアドイン アプリケーションは、そのままロードして実行できるはずです。こちらも、可能であれば、新しいバージョンのタイプライブラリを参照しなおしてテストすることをお勧めします。タイプライブラリの詳細は、AutoCAD 2019 のオンラインヘルプをご確認ください。
VBA をお使いの場合、VBA コンポーネントは http://www.autodesk.com/vba-download から参照可能な Autodesk Knowledge Network 記事からダウンロードすることが出来ます。http://www.autodesk.com/vba-download-jpn を参照すれば、日本語の Autodesk Knowledge Network 記事を表示させることも出来ます。
JavaScript ライブラリには変更はありませんので移植作業は不要です。
その他、アドイン アプリケーションの互換性に関する情報は、AutoCAD 2019 のオンライン ヘルプをご参照ください。
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 2017 Update 2 以降がセットアップされた開発環境にインストールすることが出来ますが、インストーラ自体にデジタル署名が施されていないため、インストール時に警告メッセージが表示されてしまう問題があります。
インストール開始時に「Windows によって PC が保護されました」とメッセージが表示されたら、画面上に表示されてる 詳細情報 リンクをクリックして、[実行] ボタンからインストールをしてみてください。
Windows 10 への ObjectARX Wizards のインストール
ObjectARX Wizards を Windows 10 にインストールする場合にも、上記の方法を使用してインストール自体を完了することは出来ます。ただし、Visual Studio 2017 Update 2 以降を使って ObjectARX 2019 Wizards を起動し て ObjectARX/DBX Project テンプレートを指定後、新規プロジェクトを作成しようとしても、何も処理されません。
この問題を回避するには、Windows 10 上でコマンド プロンプトを管理者モードで起動して、msiexec を使って ObjectARX Wizard をインストールしてください。コマンド プロンプトを管理者モードで起動するには、スタート ボタンから [Windows システム ツール] >> [コマンド プロンプト] を見つけて、マウスの右ボタン メニューから [その他] >> [管理者として実行] を選択します。
コマンド プロンプト上で misexec の実行する際には、msiexec /i ObjectARXWizard2019.msi と入力をしてください。
AutoCAD .NET API の参照アセンブリ
以前、NuGet と AutoCAD.NET API のブログ記事でもご案内したのと同様に、AutoCAD 2019 上で .NET API で使用する際に参照するアセンブリは、Visual Studio 上の NuGet パッケージ マネージャか、オンラインで入手することも出来ます。当該 NuGet ページは https://www.nuget.org/packages/AutoCAD.NET/23.0.0 です。
By Toshiaki Isezaki
コメント
コメントフィードを購読すればディスカッションを追いかけることができます。