Windows では、拡張子 .exe のファイルを実行形式ファイル、あるいは、実行ファイルを呼びますが、AutoCAD の本体となる実行形式をご存じでしょうか。AutoCAD を実行する際には、デスクトップのショートカットをダブルクリックして起動をしていると思います。ここで実際に実行されるのは、AutoCAD のインストール フォルダにある acad.exe で、AutoCAD の特徴となる作図領域やユーザ インタフェースを持っています。
AutoCAD 2013 以降、AutoCAD のインストール フォルダには、accoreconsole.exe という別の AutoCAD 実行形式がインストールされています。もちろん、個別に実行することが出来ますが、この実行形式にはユーザインタ インタフェースがありません。この accoreconsole.exe は、いわゆる コンソールバージョンの AutoCAD です。デスクトップやスタートメニューにはショートカットは登録されないので、直接、Windows エクスプローラで AutoCAD のインストール フォルダから accoreconsole.exe を見つけないといけません。ただし、ユーザ インタフェースを持たないので、ダブルクリックして起動しても何も起こりません。
accoreconsole.exe の起動を確認する最も分かりやすい方法は、Windows の コマンド プロンプト からの操作です。スタートボタンなどからアクセラリ >> コマンド プロンプト を選択して、CD コマンドで AutoCAD のインストール フォルダに移動します。
accoreconsole.exe には、AutoCAD(acad.exe)のショートカットで使用するようなコマンドライン スイッチが用意されています。acad.exe 用のコマンドライン スイッチについては、こちら から詳細を参照することができます。さて、accoreconsole.exe は、次の 4 つのコマンドライン スイッチを利用することができます。
/i
図面ファイルへのパスを指定します。accoreconsole.exe 起動時に指定すると、図面をメモリ上に展開して各種コマンドの操作対象とすることができます。
/s
AutoCAD のスクリプト ファイル(*.scr)へのパスを指定します。スクリプト に記述されたコマンドに沿って、自動実行をさせることができます。
/l
Launguage Pack がインストールされていれば、起動した accoreconsole.exe が表示する言語を指定することができます。
/isolate
AutoCAD(acad.exe)とシステム変数を分離します。これによって、通常起動した AutoCAD からの影響を受けないようにすることができます。
それでは、 コマンドプロンプトから accoerconsole.exe を起動してみましょう。accoreconsole.exe の後には必要に応じてコマンドライン スイッチを指定することができます。起動前と起動後のプロンプト表示に注意してみてください。
accoreconsole.exe の起動前には、コマンド プロンプトを示すプロンプト文字が、現在のパスを示しています(C:¥Program Files¥Autodesk¥AutoCAD 2014¥)。また、起動後には、AutoCAD のコマンド プロンプトである「コマンド:」が表示されています。この例では、ファイルダイアログ ボックスの表示を抑止するシステム変数 FILEDIA を 0 に設定(確認)した後で、LINE コマンドを使って線分を作図しています。また、SAVEAS コマンドを使って Drawing1.dwg の名前で図面を保存していることもわかります。その後、QUIT コマンドを使って accoreconsole.exe を終了しています。終了後には、再びコマンド プロンプト文字が Windows が持つ表示の表示内容に変化していることも見て取れます。
つまり、画面に図面はグラフィカル ユーザ インタフェースが表示されないだけで、起動している中身は AutoCAD になります。この方法を利用すれば、あらかじめ AutoCAD 上で作成したスクリプトを accoreconsole.exe に実行させて、自動印刷や作図を少ない実行時メモリで処理することが可能になるわけです。ユーザ インタフェースの表示には、多大なメモリを使用することになるので、特に 32 ビット版 Windows 上で自動処理をされている場合には、有効な方法と言えます。
唯一、注意が必要なので、accoreconsole.exe の実行中には、一切のグラフィカル ユーザ インタフェースの使用が許されない点です。先の例では、システム変数 FILEDIA の値を 0 にして、SAVEAS コマンドで [図面に名前を付けて保存] ダイアログ卜すの表示を抑止しています。accoreconsole.exe の実行時には、この手のダイアログも含めて一切を表示できないので注意が必要です、当然、図面を見ながら操作することもできないので、図面上のオブジェクトを選択するようなことも不可能です。
次に、なぜ、このような実行形式が用意されたのか、少し歴史をひも解いてみましょう。
コンソール モードの AutoCAD 登場の背景
AutoCAD は、今年登場した AutoCAD 2014 で 31 年を迎えています。登場当初は、当時のソフトウェアと同様に、DOS と呼ばれる OS で動くシンプルなソフトウェアでした。その後、Windows が登場して、しばらくの間、Windows だけをプラットフォームとして採用してきました。
実は、AutoCAD R12 の時代には、Macintosh 版、UNIX 版など、Windows 以外のプラットフォームも採用していた時代もあったのですが、結果として Windows が主流となり、サポートを停止した経緯もあったのです。
設計現場で Windows が日本で主流となったのは、Windows 3.1 を経て、Windows 95 が登場した時期だと思います。その頃の AutoCAD は、既にプラットフォームを Windows に絞って開発されていました。AutoCAD をプログラムとして見た場合、Windows にサポートされる Microsoft テクノロジに沿ったもので Windows 専用のコンポーネントやテクノロジ構成されていた時代です。カスタマイズの環境では、VBA や VBA のメカニズムとなっている COM が、Windows 固有のテクノロジです。ObjectARX の開発と、その実行環境が初めて導入されたのも、この頃、正確には AutoCAD R13 でした。
1999 年に AutoCAD 2000 がリリースされて、AutoCAD 内部のアークテクチャにも変化が訪れます。ObjectARX は、AutoCAD 本体の開発コードから一部を抜き出した C++ クラスライブラリですが、その普及とともに、図面に作図したカスタム オブジェクトの問題が認識され出しました。
ObjectARX の最大の特徴であるカスタム オブジェクトは、オブジェクトを定義した ObjectARX アプリケーションがロードされていない環境では、プロキシ オブジェクト化してしまい、カスタム オブジェクトとしての振る舞いができません。図面作成が外注されて図面が一人歩きを始めると、アプリケーションを所有している会社内では正しくカスタム オブジェクトを認識できても、そうでない会社では図面の意図を読み取れない、といった現象が発生しだしました
これを防止するには、カスタム オブジェクトの定義アプリケーションを常にロードさせる必要がありますが、有償販売されているアプリケーションの場合、すべての設計環境にアプリケーションを販売しなければいけなくなります。しかし、予算が有り余るといっや状況でない限り、それは難しい話なのは言うまでもありません。
そこで考え出されたのが、コマンドを含むユーザインタフェースとデータベース機能の分離を、UI/DB 分離として提唱したオブジェクト イネーブラーです。有償販売のアプリケーションには、カスタム オブジェクトを新規に作図、または、編集する機能を持つ ObjectARX アプリケーションを拡張子 .arx で提供してもらうようにして、カスタム オブジェクトを定義した ObjectARX アプリケーションには、拡張子 .dbx で無償ダウンロードすることを開発者に提案したのです。.dbx ファイルを持つアプリケーションは、オブジェクト イネーブラーの呼び名の他に、ObjectDBX アプリケーションとも呼ばれました。ちなみに、オートデスクが開発・販売した AutoCAD ベース製品にもカスタム オブジェクトが疲れわれていますが、それらのオブジェクト イネーブラーも http://www.autodesk.com/oe からダウンロードすることが出来ます。
しばらく、Windows に特化して開発を進めてきたのですが、2000 年代後半になってコンピュータの世界に変革が訪れます。 Apple iPhone に代表されるモバイルとクラウドです。iPhone の登場でにわかに活気づいたのが、同じ Apple 社の OS である Mac OS です。そこで、オートデスクは AutoCAD for Mac に開発に着手したのです。
もちろん、AutoCAD R12 時代のように、Windows 版と Mac 版 の AutoCAD をゼロから作成するのは労力とコストがかかります。そこで、AutoCAD のコアにあたる部分を共通化するプロジェクトが発足しました。そこで考え出されたのが、コンソール アプリケーションの存在です。コンソール アプリケーションは、.arx、.dbx と特別するために、新しい拡張子 .crx を与えられています。ただ、いずれも中身は ObjectARX アプリケーションです。そして、AutoCAD 2013 から、.crx が Windows 版、Mac 版に依存しない共通機能を持つよう、アーキテクチャが変更されたのです。逆に言えば、.crx アプリケーションは、プラットフォームに依存しないよう、グラフィカル ユーザ インタフェースを持たないよう提唱しています。
カスタマイズでコンソール モードの AutoCADを利用する
このように、accoreconsole.exe は非常に軽量な AutoCAD です。ユーザ インタフェースが表示できないので、対話的な作業に制限がありますが、利点もあります。スクリプト以外にも、.crx アプリケーションを開発して accoreconsole.exe にロードさせることで、カスタム コマンドを実行させることが出来るのです。.crx アプリケーションは、ObjectARX アプリケーションの1つとして名づけられたものですが、ユーザ インタフェースを表示をしない他の種類の .NET API アプリケーションもロードして実行させることが可能です。軽量な環境で、自動製図プログラムや変換プログラム、あるいは、連続印刷などの処理を実行できます。
非常に便利なコンソール モードの AutoCAD(accoreconsole.exe)ですが、AutoCAD のインストール フォルダからこのファイルだけを抜き出しても利用はできません。AutoCAD の一部として、インストール フォルダにある様々なコンポーネントとともに実行されるようになっているためです。また、当然、ライセンスは AutoCAD に付帯する、というか AutoCAD そのものなので、コンポーネントの分離は禁止された行為となります。
また、共有サーバーで AutoCAD をプログラム制御したい、といったご要望を多く聞きますが、現段階では 開発者向けに用意されたサーバー ライセンスは存在しません。このような用途で、スタンドアロン ライセンス、ネットワーク ライセンス、セッション用ネットワーク ライセンス等に含まれる、acad.exe、accoreconsole.exe を利用する行為は、使用許諾違反となります。
By Toshiaki Isezaki
コメント
コメントフィードを購読すればディスカッションを追いかけることができます。