Design Automation API for AutoCAD で利用するカスタム アクティビティでは、AppPackage(App パッケージ)にAutoCAD 用に作成したアドイン アプリケーションを指定することが出来ます。指定用可能なアドイン アプリケーションは、ObjecrARX(.crx ファイル)、.NET API(.dll ファイル)、AutoLISP で作成されたもので、いずれも、ダイアログ ボックスやバルーン通知など、ユーザ インタフェースを表示しない実装になっている必要があります。
Design Automation API for AutoCAD へは、PackageContents.xml ファイルを使った AppPackage bundle(App パッケージ バンドル)一式を ZIP 圧縮して、事前にアップロードする必要があります。ただ、クラウド上の AutoCAD コアエンジン(accoreconsole.exe)でのテストに、毎回、App パッケージををアップロードするのは少し手間がかかりすぎです。また、実装したアドイン アプリケーション自体の不具合で、アップロードした App パッケージが期待した動作をしない場合も考えられます。
そのような点も考慮して、実際に Design Automation API for AutoCAD を使ったテストの前に、ローカル コンピュータ上で、アドインのロード、動作を事前にテストすることをお勧めしています。
AppPackage bundle(App パッケージ バンドル)のロードテスト
App パッケージ バンドルは、ZIP 圧縮前のフォルダ構造を特定の位置に配置することで、AutoCAD に自動認識させることが出来ます。PackageContents.xml ファイル に含まれるアドインがのサポート バージョンやプラットフォームが一致した場合、自動ロードする自動ローダー メカニズムを利用して、クラウド上のコアエンジンにアドイン アプリケーションをロードします。
このため、ZIP 圧縮前の状態であれば、通常のパッケージ バンドルとして AutoCAD で自動ロードをテストすることが出来ます。このテストで、パッケージ バンドルの PackageContents.xml ファイル の内容が正しいか否かをチェックすることが出来ます。残念ながら、AutoCAD に同梱されている AcCoreConsole.exe 自体はパッケージ バンドルを認識しないため、AcCoreConsole.exe で自動ローダーのテストをおこなうことは出来ません。
AcCoreConsole.exe へのロードテスト
AcCoreConsole.exe で自動ローダーのテストは出来ませんが、App パッケージ バンドルで指定したアドイン アプリケーション ファイルを手動でロード テストすることは出来ます。ここで利用するのは、NETLOAD コマンド(.NET API の .dll ファイル)、APPLOAD コマンド(ObjectARX の .crx ファイル、AutoLISP の .lsp ファイル)です。最近の AutoCAD に同梱される AcCoreConsole.exe では、システム変数 FILEDIA が 0(ゼロ)に設定されて、ファイル ダイアログが表示されないようになっています。アドイン ファイルをロード指定する際には、フルパスを入力、指定してください。
もし、手動でのロードが出来ない場合には、次の点をご確認ください。
- アドイン ファイルが AutoCAD の「信頼する場所」に指定されたいずれかのパスに配置されていること。
- アドインが .NET API を利用している場合、AcCoreMgd.dll と Acdbmgd.dll のみをアセンブリ参照していること。
- アドインがターゲットとしている AutoCAD バージョンに同梱されている AcCoreConsole.exe であること。
AcCoreConsole.exe でのアドイン実行テスト
カスタム アクティビティを利用する場合、実行単位はロードしたアドイン アプリケーションのカスタム コマンドやスクリプトになるはずです。もし、テストしている環境が Windows である場合、実行テストの際に Windows の管理者権限が必要になる場合があります。例えば、SAVE コマンドでインストール フォルダ上に生成された図面を保存する場合などです。
このケースでは、実行時に管理者権限がないと、SAVE コマンドはインストール フォルダに図面を保存することが出来ません。このような場面では、AcCoreConsole.exe を起動するコマンド プロンプトを「管理者として実行」するようにしてください。
カスタム コマンドの処理が中断してしまうようなら、エラーや警告を示すダイアログが表示するような処理になっていないか、再度、ご確認ください。
パラメータ取得時のテスト
Design Automation API を使って App パッケージ バンドル内の AutoCAD アドインを実行する際には、AutoCAD 上でユーザ対話入力によって得ていた入力値を、なんらかの方法で渡す必要が出てくる場合があります。画面上で確認することが出来ないので、渡せる種類も数値や文字に限定されてしまうことになりますが、代替として、Design Automation API は JSON ファイルでパラメータを渡す方法をサポートしています。
実際には WorkItem(ワークアイテム)の作成時にパラメータを指定することで、クラウドのアドイン作業領域に JSON ファイルが保存されます。パラメータを保存する JSON ファイル名は Actiibty(アクティビティ)登録時に決めておくことが出来るので、ローカル コンピュータの作業フォルダに、想定される JSON ファイルをダミーとして保存しておけば、AutoCAD や AcCoreConsole での実行時に JSON ファイルを読み込んでテストすることも可能です。
一定程度、ローカル コンピュータ上での処理テストが終わっていれば、既存アドインの Design Automation API for AutoCAD への移植と実装も楽なはずです。
なお、Design Autonation API for AutoCAD(AcCoreConsole.exe)で実行させる AppBundle では、アドイン実装内で現在の図面を切り替える実装は許可、サポートされていませんのでご注意ください。この処理には、OPEN コマンドや NEW コマンドの実行、あるいは、アプリケーション実行コンテキストが必要な既存図面オープン、新規図面作成の API 実装が含まれます。また、この制限には、Database.ReadDwgFile メソッド/AcDbDatabase::readDwgFile() の使用も同様にサポートされていません。Design Automation API for AutoCAD(AcCoreConsole.exe)では、AcCoreConsole.exe /i オプションのみがサポートされています。
By Toshiaki Isezaki
コメント