【入門編】【実務中級者向け】図面保存時に「カスタムプロパティ」を自動埋め込み:ERP/PLM連携の布石となるメタデータ管理 – AutoCAD VBA解析バイブル

スポンサーリンク

AutoCAD VBAで「図面管理の自動化」を極める:SummaryInfoでメタデータを制する

こんにちは。AutoCADの自動化の世界へようこそ。
「マクロの記録」ボタンを押すだけの世界から一歩踏み出し、自らの手で図面を操る領域へ足を踏み入れた皆さんを歓迎します。

今回は、単なる図形操作を超えて、「図面にERPやPLM(製品ライフサイクル管理)と連携可能な属性情報を刻み込む」という、中級者への登竜門的なテーマを扱います。

図面に図面番号やプロジェクトコードを埋め込むことは、将来的な自動集計や検索システムの構築において極めて重要です。今回は、AutoCADの隠れた名脇役、`SummaryInfo`オブジェクトを攻略しましょう。

—

1. なぜ「SummaryInfo」なのか?

AutoCADの図面には、目に見える図形データ(線や円)とは別に、「ドキュメント情報」というメタデータ領域が存在します。
「ファイル」→「図面プロパティ」から見ることができる、あの場所です。

ここにデータを埋め込んでおけば、AutoCADを開かずに外部ツールから情報を抽出することも可能です。これが後のDX(デジタルトランスフォーメーション)の第一歩となります。

—

2. 実装コード:図面保存時に情報を自動更新する

まずは、現在開いている図面に「プロジェクトコード」や「設計者名」を自動セットするプロシージャです。

‘ 標準モジュールに記述してください
Option Explicit

Public Sub UpdateDrawingMetadata()
Dim acadDoc As AcadDocument
Dim info As AcadSummaryInfo

Set acadDoc = ThisDrawing

‘ SummaryInfoオブジェクトを取得
‘ これが図面の管理情報を司る司令塔です
Set info = acadDoc.SummaryInfo

‘ カスタムプロパティへの書き込み
‘ 既にキーが存在してもSetCustomByKeyで上書きされます
On Error Resume Next ‘ キーが存在しない場合のエラー回避
info.SetCustomByKey “ProjectCode”, “PRJ-2023-A01”
info.SetCustomByKey “Designer”, “System_Architect”
On Error GoTo 0

‘ 保存を実行
acadDoc.Save

MsgBox “図面情報の更新と保存が完了しました。”
End Sub

3. コードの心臓部を解剖する

  • `AcadSummaryInfo`: これこそが図面の「名札」です。ここを操作することで、図面そのものに属性を持たせることができます。
  • `SetCustomByKey`: このメソッドが肝です。第一引数にキー名(ラベル)、第二引数に値を渡します。
  • `On Error Resume Next`の意図: 初学者が最もハマるのが「キーが存在しない場合のエラー」です。`SetCustomByKey`はキーが存在しないとエラーを吐くことがあるため、一度セットした後は更新モードに切り替わるように設計するのがプロの流儀です。

—

4. 実務で「必ず」ぶつかる壁と対策

①「保存」のタイミングをどう制御するか?

上記のコードは手動実行用ですが、実務では「保存ボタンを押した瞬間に自動で書き込ませたい」と思うはずです。
そのためには、`ThisDrawing`モジュールの `Document_BeginSave` イベントを利用します。

‘ ThisDrawingモジュールに記述
Private Sub AcadDocument_BeginSave(ByVal FileName As String)
‘ 保存開始の瞬間にメタデータを更新する
Call UpdateDrawingMetadata
End Sub

※注意:イベント内で`Save`を呼ぶと無限ループに陥るため、実際にはフラグ管理が必要です。

②「バージョン互換」の罠

DXF/DWGは保存するだけでバージョンが上がる可能性があります。`SaveAs`メソッドを使う場合、必ずバージョン定数を指定する癖をつけてください。

‘ AutoCAD 2013形式で保存する例
acadDoc.SaveAs “C:\Path\To\File.dwg”, ac2013_dwg

—

5. 先輩エンジニアからのアドバイス

AutoCAD VBAをマスターする秘訣は、「オブジェクトの寿命(ライフサイクル)」を意識することです。
`AcadSummaryInfo`は、ドキュメントオブジェクトが閉じれば消滅します。ですから、オブジェクトを変数に入れる際は、必ずそのスコープ(有効範囲)が適切かどうかを確認してください。

今回紹介した「メタデータ管理」ができるようになれば、あなたの図面はただの「絵」から、「データを持つ資産」へと進化します。

次は、このメタデータを外部CSVに書き出すツールを作ってみませんか?
設計室の未来は、あなたの書く一行のコードから変わっていきます。応援していますよ!

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