概要 - カスタム オブジェクトとプロキシ オブジェクト | AutoCAD 2023 | Autodesk Knowledge Network の内容について具体的に補足したいと思います。
以前、AutoCAD 雑学:AutoCAD コンポーネント でも触れていますが、AutoCAD API の 1 つである ObjectARX には、他の AutoCAD API にないカスタム オブジェクトの作成(定義)機能が用意されています。
カスタム オブジェクトとは、線分や円、ポリライン、寸法や画層など、AutoCAD が図面ファイル(.dwg/.dxf)に保存するのと同じように、独自の見た目や振る舞いを持たせたオブジェクトを指します。特定の業種で扱うオブジェクトを用意する手段として非常に有用であるため、オートデスクも AutoCAD Plus(AutoCAD including specialized toolsets)の業種別ツールセット(旧 AutoCAD Mechanical や Plant3D など)、AutoCAD Civil3D などで使用しています。もちろん、3rd party の開発者がカスタム オブジェクトを定義することも出来ます。
AutoCAD 上でカスタム オブジェクト扱う際には、拡張子 .dbx を持つコンポーネントがカスタム オブジェクトの外観や振る舞いを定義するオブジェクト イネーブラと、拡張子 .arx を持つコンポーネントがオブジェクト イネーブラを参照して作図・編集をおこなうコマンドを定義するアドイン アプリケーションが、共に AutoCAD にロードされて使用されることになります。
.dbx や .arx ファイル(コンポーネント)によっては、AutoCAD の実行中に APPLOAD コマンドでロード解除出来てしまうものがあります。カスタム オブジェクトには、もう 1 つの形態となるプロキシ オブジェクトが存在します。
カスタム オブジェクトとプロキシオブジェクトの関係を正しく理解するために、カスタム オブジェクトを含む図面の編集中に、.dbx や .arx ファイルがロード解除されてしまったら何が起こるのか、具体的に説明していきたいと思います。
コマンド コンポーネント(.arx ファイル)のロード解除
ここでは、LINE(線分)や CIRCLE(円)などのように分類出来るカスタム オブジェクトの種類を、MYENTITY(AcDbMyEntity クラス) として話を進めていきます。
カスタム オブジェクト MYENTITY を作図・編集するにはコマンドが必要です。つまり、作図や編集には .arx ファイルがロードされている必要があります。
ここで、MYENTITY を作図・編集するにはコマンドを実装する .arx ファイルをロード解除してみます。ロード解除後には同コマンドが使えなくなるので、MYENTITY オブジェクトを新規に作図したり、既存のオブジェクトを編集することが出来なくなります。
ただし、オブジェクト イネーブラ(.dbx ファイル)はロードされたままなので、AutoCAD は MYENTITY オブジェクトを正しく認識して、例えば、LIST コマンドや [プロパティ パレット] に MYENTITY オブジェクトの情報を正しく表示することが出来ます。
オブジェクト イネーブラ コンポーネント(.dbx ファイル)のロード解除
カスタム オブジェクト MENTITY の外観や振る舞いを定義するオブジェクト イネーブラ、.dbx ファイルをロード解除すると、どうなるでしょう?
.dbx ファイルをロード解除してしまうと、AutoCAD は MYENTITY オブジェクトを正しく認識することが出来なくなってしまいます。この状態のオブジェクトをプロキシ オブジェクトと呼んでいます。プロキシ オブジェクトは、AutoCAD にとって「内容不明なオブジェクト」です。
AutoCAD はプロキシ オブジェクトの内容を把握出来ないため、LIST コマンドや [プロパティ パレット] で MYENTITY オブジェクトの情報を表示することが出来ないことになります。(多くの他の編集コマンドも同様)
このような状態は AutoCAD を利用するエンドユーザにとっても好ましいものではないため、AutoCAD は状態をエンドユーザに通知します。このとき表示されるのが、[プロキシ情報] ダイアログです。
システム変数 PROXYNOTICE の値が 1 に設定されていると、カスタム オブジェクトがプロキシ オブジェクトになった際に表示します。オブジェクト イネーブラがない AutoCAD で、該当するカスタム オブジェクトを含む図面を開いた際にも表示されます。
オブジェクト イネーブラ コンポーネント(.dbx ファイル)の再ロード
プロキシ オブジェクトを含む図面を開いているときに、対応するオブジェクト イネーブラ(.dbx ファイル)を再度ロードしたらどうでしょう?
AutoCAD はプロキシ オブジェクトの内容をそのまま「フリーズさせて」保持しているので、正しい .dbx ファイルがロードされると、MYENTITY オブジェクトの状態を復活させます。プロキシ オブジェクトになったからと言って、MYENTITY オブジェクトの内部データ(座標や値)を破棄してしまうことはありなせん。
オブジェクト イネーブラは、ObjectARX を使って作成されたアドイン アプリケーションです。他のアドイン アプリケーション同様、使用する AutoCAD バージョンにあったものを利用する必要があります。
By Toshiaki Isezaki
コメント