【入門編】【上級】AcadDocument.Database.SummaryInfoのカスタムプロパティを利用した、図面内への「設計承認フロー」情報の埋め込み – AutoCAD VBA解析バイブル

スポンサーリンク

AutoCAD図面に「意志」を宿す。SummaryInfoで実現する承認フローの自動化

こんにちは。AutoCADの自動化の世界へようこそ。
「マクロの記録」ボタンを押して、生成されたコードの羅列に満足していませんか?もしそうなら、今日があなたの脱皮の日です。

今回は、AutoCADのプロフェッショナルたちが密かに行っている、「図面ファイル自体にメタデータ(付加情報)を埋め込む」という技術を伝授します。図面のプロパティに「承認者」や「ステータス」を隠し持たせることで、図面管理の自動化は劇的に進化します。

1. なぜ「SummaryInfo」を使うのか?

通常、図面内の情報は「線」や「文字」として描かれますが、これらは人間が見るためのものです。一方で、システムが管理するための「承認フラグ」や「プロジェクトID」を、図面内のどこかに文字として配置するのは、誤消去や誤修正のリスクが高く、非常にナンセンスです。

`AcadSummaryInfo` は、図面ファイルそのものが持つ「戸籍」のような場所です。これを使えば、図面の見た目を一切変えることなく、背後で厳格な管理を行うことができます。

2. 実践:カスタムプロパティを書き込むコード

まずは、図面にカスタムプロパティをセットするコードを見てみましょう。`AcadDocument.SummaryInfo` オブジェクトにアクセスするのがポイントです。

Sub SetApprovalInfo()
Dim acadDoc As AcadDocument
Dim sumInfo As AcadSummaryInfo

‘ 現在のアクティブな図面を取得
Set acadDoc = ThisDrawing

‘ SummaryInfoオブジェクトを取得
Set sumInfo = acadDoc.SummaryInfo

‘ カスタムプロパティに「承認ステータス」を追加(既に存在する場合はエラー回避が必要)
‘ ここが最大のポイント:カスタムプロパティはキーと値のペアで管理されます
On Error Resume Next ‘ すでにプロパティが存在する場合のエラーを無視
sumInfo.AddCustomInfo “ApprovalStatus”, “Pending”
sumInfo.AddCustomInfo “ApprovedBy”, “Taro_CAD_Expert”
On Error GoTo 0

‘ 値の更新
sumInfo.SetCustomByKey “ApprovalStatus”, “Approved”
sumInfo.SetCustomByKey “ApprovedBy”, “Chief_Architect”

MsgBox “図面に承認情報を埋め込みました。”
End Sub

【ここがコードの肝】

  • `AddCustomInfo`: 新規プロパティの作成です。一度作成するとファイルに永続化されます。
  • `SetCustomByKey`: 既存のプロパティを更新します。
  • エラーハンドリング: `AddCustomInfo` は既にキーが存在すると実行時エラーを吐きます。`On Error Resume Next` を挟むのが、現場で生き残るための「お作法」です。

3. 陥りやすい罠と解決策

初心者がこのコードを書いて、必ずハマるポイントがあります。

① 「プロパティがない!」というエラー

`GetCustomByKey` を使う際、指定したキーが存在しないとAutoCADは容赦なくエラーを出します。必ず、プロパティの総数を取得する `NumCustomInfo` をループで回し、キーが存在するか確認してから読み取るのがベストプラクティスです。

② 保存を忘れるな

VBAでプロパティを書き込んでも、AutoCAD自体は「図面が変更された」と認識しない場合があります。最後に `acadDoc.Save` を呼び出すか、ユーザーに保存を促すダイアログを出す設計にしましょう。

4. 次のステージへ:外部管理ツールとの連携

この技術の真価は、「外部ツールからの読み取り」にあります。

例えば、PythonやC#で組んだ軽量な管理ツールを作れば、AutoCADをいちいち起動しなくても、フォルダ内の全DWGファイルの `SummaryInfo` をスキャンして、「承認済み」の図面だけをリストアップするような管理ダッシュボードが作れます。

これを実現すると、あなたの図面管理は「手作業の確認」から「自動化されたインテリジェントなフロー」へと劇的に変わります。

最後に:エンジニアとしての一歩

AutoCAD VBAは、単なる「作業の自動化ツール」ではありません。図面というデータを、プログラムが理解できる「構造化された資産」に変換するための強力なツールです。

今回紹介した `SummaryInfo` は、そのための最初の扉です。
「図面に情報を隠す」という発想ができた時点で、あなたはもう「マクロを記録する人」から「CADシステムの設計者」へと進化しています。

次は、どのプロパティを埋め込みますか? 開発の現場で困ったことがあれば、またいつでも聞きに来てください。あなたのコードが、現場の時間を何百時間と節約することを信じています。


それでは、良い自動化ライフを!

タイトルとURLをコピーしました