AutoCAD でアドイン アプリを開発していると、オブジェクトが参照している図面データベース内の他のオブジェクトの情報を把握したい時があります。対象が非グラフィカル オブジェクトだと、情報を得るためにプログラムを作る必要が出てくる場合もあります。
そのような場面でツールとして利用出来るサンプルがあります。ObjectARX SDK に同梱されている ArxDbg サンプルです。ObjectARX SDK for AutoCAD 2024 の場合、<ObjectARX SDK インストール フォルダー>\samples\database\ARXDBG フォルダーにあります。
Visual Studio でプロジェクトを開いてビルドすると、ArxDbg.arx が生成されます。この .arx ファイルを APPLOAD コマンドなどでロードすると、マウス右クリックでコンテキストメニューが表示されます。
もともと、ArxDbg は ObjectARX が提供する API の利用方法を示す目的で用意されたものですが、前述の「検査」ツールとしても利用することが出来ます。
例えば、Database Info... では、通常、あまり意識することのない Named Object Dictionary 配下のディクショナリをチェックするすることが出来ます。
Entity Info... で寸法オブジェクトを選択すると、同オブジェクトのプロパティを AcDbEntity レベルで表示します。この状態で [DXF] ボタンをクリックすると、DXF ファイルに出力した際と同じように DXF グループコード毎にプロパティを表示します。AutoLISP でエンティティ リストを扱う場合にも、DXF グループコードと値の関係を把握出来るので便利です。
他にも、さまざまな機能があります。詳細は、<ObjectARX SDK インストール フォルダー>\samples\database\ARXDBG フォルダー内の ArxDbg.doc ドキュメントをご確認ください。
ArcDbg サンプルのような検査ツール サンプルには、AutoCAD .NET API を使ったエディションも存在します。MgdDbg サンプル(https://github.com/ADN-DevTech/MgdDbg)です。このサンプルは ObjectARX SDK には同梱されず、GitHub リポジトリで公開されています。
ローカルに git コマンドでクローン(git clone https://github.com/ADN-DevTech/MgdDbg.git)したソリューション MgdDbg.sln を Visual Studio で開いてビルドすると、MgdDbg.dll が生成されます。このアセンブリ ファイルを NETLOAD コマンドでロードすると、マウス右クリックでコンテキストメニューが表示されます。
一見、ArxDbg に比べてメニューの数が 少なく、機能不足な印象ですが、.NET らしいダイナミックな実装を見ることが出来ます。
例えば、Snoop Entities... でブロック参照(BlockReference)を選択すると、ブロック参照のプロパティを表示するダイアログ内の操作で、定義元のブロック定義(BlockTableRecord)のプロパティを表示、また、ブロック定義内の個々の要素(オブジェクト)のプロパティをシームレスに遷移して表示することが出来ます。ちょうど、Revit アドイン開発時に利用する Revit Lookup ツールに似た動きをします。
MgdDbg プロジェクトを GitHub リポジトリから ZIP ファイルとしてダウンロードしてビルドした場合には、ローカル環境でアセンブリの参照設定を解決しても、ビルド時に「ファイル XXXX を処理できませんでした。インターネットまたは制限付きゾーン内にあるか、ファイルに Web のマークがあるためです。これらのファイルを処理するには、Web のマークを削除してください。」エラーが発生してしまいます。
このエラーを解決するには、エラーの出ているファイルを個々にエクスプローラーで右クリックして、プロパティ ダイアログで「許可する」にチェックする必要があります。
By Toshiaki Isezaki
コメント
コメントフィードを購読すればディスカッションを追いかけることができます。