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

スポンサーリンク

AutoCAD VBAを掌握する:図面メタデータ管理による「ERP/PLM連携の布石」

AutoCAD VBAで業務を自動化する際、多くのエンジニアが「図面の中身(線や文字)」ばかりに目を奪われる。だが、真の自動化エンジニアが注視するのは、図面というバイナリファイルの「背骨」、すなわちメタデータだ。

今回は、図面保存時に「カスタムプロパティ」を自動埋め込みするテクニックを伝授する。これは単なる情報の付与ではない。将来的に図面をERP(基幹システム)やPLM(製品ライフサイクル管理)と連携させるための、極めて重要な「構造化データ」の構築だ。

なぜ「手動」のプロパティ入力は絶滅すべきなのか

図面番号やプロジェクトコードをプロパティに手入力している現場があれば、それは直ちに廃止すべきだ。理由はシンプル。人間は必ずミスをするからだ。

プロパティにゴミ情報が混じれば、後工程の自動集計スクリプトやPLM連携ツールは一撃で沈黙する。「堅牢な設計」とは、システムが勝手に正しいメタデータを埋め込む仕組みを指す。

SummaryInfoオブジェクトの核心

AutoCADの図面情報には`SummaryInfo`というオブジェクトが存在する。ここにアクセスすることで、`dwg`ファイルの中に秘匿されたメタデータを操作できる。

ここで注意点がある。`SummaryInfo`は図面を開くたびにメモリ上にロードされるが、保存のタイミングで明示的に書き込まなければ、その情報は揮発する。 また、カスタムプロパティは「キー(Key)」と「値(Value)」のペアで管理されるが、キーが存在しない場合は新規作成(AddCustomInfo)し、既存の場合は更新(SetCustomByKey)するという分岐ロジックが不可欠だ。

実践:プロダクションレベルの自動埋め込みコード

このコードは、保存イベントをトリガーに、強制的にメタデータを同期する設計思想に基づいている。

‘ AutoCADのThisDrawingモジュールに記述することを想定
Option Explicit

‘ 保存イベントを検知し、メタデータを自動更新する
Private Sub AcadDocument_BeginSave(ByVal FileName As String)
On Error GoTo ErrorHandler

Dim oSumInfo As AcadSummaryInfo
Set oSumInfo = ThisDrawing.SummaryInfo

‘ 必要なカスタムプロパティの定義
Call UpdateCustomProperty(oSumInfo, “ProjectCode”, “PRJ-2024-X01”)
Call UpdateCustomProperty(oSumInfo, “DesignerID”, Environ(“USERNAME”))
Call UpdateCustomProperty(oSumInfo, “LastSyncDate”, Format(Now, “yyyy-mm-dd hh:nn:ss”))

Exit Sub

ErrorHandler:
MsgBox “メタデータの書き込みに失敗しました: ” & Err.Description, vbCritical
End Sub

‘ 堅牢なプロパティ更新関数
‘ 存在チェックを行い、AddかSetかを自動判定する
Private Sub UpdateCustomProperty(oSumInfo As AcadSummaryInfo, key As String, value As String)
Dim i As Integer
Dim found As Boolean
found = False

‘ 既存のカスタムプロパティを探索
For i = 0 To oSumInfo.NumCustomInfo – 1
Dim k As String, v As String
oSumInfo.GetCustomByIndex i, k, v
If k = key Then
oSumInfo.SetCustomByKey key, value
found = True
Exit For
End If
Next i

‘ 見つからなければ新規追加
If Not found Then
oSumInfo.AddCustomInfo key, value
End If
End Sub

開発リーダーからの「極限の知見」:3つの注意点

1. イベントの連鎖(Recursive Loop)を避ける
`BeginSave`イベント内で、さらに図面の保存を要求するような命令を書いてはならない。無限ループに陥り、AutoCADがフリーズする。あくまで「現在保存しようとしているオブジェクトの情報を書き換える」に留めること。
2. キー名の正規化(Normalization)
ERP側と連携させるなら、キー名は社内で厳格に命名規則を決めること。`”ProjectCode”`なのか`”prj_cd”`なのか。この揺れが後にデータベース構築時の地獄を招く。
3. パフォーマンスへの影響
`SummaryInfo`のループ処理は非常に軽量だが、何百ものプロパティを埋め込もうとするのは愚策だ。図面プロパティは「検索と管理のための最小限のインデックス」であるべきで、データベースの代わりではない。

結びに:エンジニアとしての矜持

図面ファイルを単なる「絵」として扱うな。それは、製品の設計意図と、会社のリソースを結びつける「データベースのレコード」である。

今回のコードを実装することで、図面を開くだけで最新のシステムメタデータが維持されるようになる。これは、手作業の排除という小さな一歩に見えて、将来的なDX(デジタルトランスフォーメーション)の基盤を構築する大きな一歩だ。

技術は、常に「使う人間」のミスを前提として設計せよ。それが、真に現場を救うエンジニアの仕事だ。

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