【実務・中級編】【初心者向け】アセンブリツリー内でコンポーネントの表示名をプログラムから変更して図面との整合性を保つ方法 – SolidWorks VBA解析バイブル

スポンサーリンク

アセンブリの「表示名」を支配せよ:SolidWorks APIで実現するツリー構造の最適化

設計現場において、「ファイル名」と「図面上の部品表(BOM)の名称」の乖離に頭を悩ませたことはないだろうか?

PDM(製品データ管理)のルールでファイル名には厳格な命名規則がある。しかし、設計の文脈上、アセンブリツリー上では「サブアセンブリAの右側」「調整用ユニット」といった、人間が直感的に理解できる名称を表示したい。

ファイル名を変更すれば参照関係(リファレンス)が崩れ、PDMの整合性も壊れる。正解は「コンポーネントの表示名をプログラムから操作する」ことだ。

今回は、SolidWorks APIを駆使して、ファイル名という物理的な紐付けを壊さずに、ツリー上の論理的な名前を動的に書き換える「極限の知見」を授ける。

—

1. なぜ「Component.Name2」に触れてはいけないのか

初心者が陥る最大の罠が、`Component.Name2` プロパティを直接いじろうとすることだ。これはアセンブリ内での一意な識別子であり、SolidWorksが内部的に管理する神聖な値だ。これに手を出せば、アセンブリの整合性は即座に崩壊する。

我々が操作すべきは、「コンポーネントの表示名(User-defined name)」である。
これは `IComponent2::Name2` ではなく、アセンブリ内のコンポーネントオブジェクトに対して「ユーザーが手動で名前を変更する」操作をAPIで代行させる手法をとる。

—

2. 堅牢な設計のための実装コード

以下のコードは、選択したコンポーネントの表示名を、指定した文字列に変更するプロシージャだ。

実装のポイント

  • エラーハンドリング: コンポーネントが選択されていない場合や、読み取り専用の場合を考慮する。
  • 整合性の維持: ファイルパスや内部IDには一切触れず、表示名のみをターゲットにする。

‘ —————————————————————————
‘ @brief アセンブリ内のコンポーネントの表示名を変更する関数
‘ @param swComp [IComponent2] 対象のコンポーネント
‘ @param newName [String] 変更したい名称
‘ —————————————————————————
Public Sub RenameComponentInTree(ByVal swComp As SldWorks.Component2, ByVal newName As String)
Dim swAssy As SldWorks.AssemblyDoc
Dim swModel As SldWorks.ModelDoc2

Set swModel = swComp.GetModelDoc2 ‘ 親アセンブリのコンテキストを取得
If swModel.GetType <> swDocASSEMBLY Then Exit Sub

Set swAssy = swModel

‘ 重要:コンポーネントを選択状態にしてから名前変更を行う
‘ これにより、SolidWorksのGUI操作をシミュレートする形で安全に名前を更新する
Dim bRet As Boolean
bRet = swComp.Select4(False, Nothing, False)

If bRet Then
‘ コンポーネントのツリー表示名を変更
‘ 戻り値を確認し、失敗時はログに記録する堅牢な作りを推奨
bRet = swAssy.CompConfigProperties6(0, 0, 0, 0, newName, True, “”, False, False)

If Not bRet Then
Debug.Print “エラー: コンポーネント名称の変更に失敗しました – ” & swComp.Name2
End If
End If
End Sub

—

3. 業務効率化のための「プロの設計指針」

単に名前を変えるツールを作るだけでは、一流の自動化エンジニアとは言えない。以下の3点を必ず遵守せよ。

① データベース(Excel/CSV)との連携

コンポーネント名の一覧をExcelで管理し、それを読み込んで一括リネームするバッチ処理を組むべきだ。

  • キー: `Component.GetPathName`(フルパス)をキーにして、Excel上の名称と突き合わせる。
  • 利点: 複数のアセンブリで共通の命名規則を強制できる。

② 履歴のトラッキング

APIで名前を変えると、誰がいつ変えたか分からなくなる。必ずログ出力機能(テキストファイルへの書き出し等)を付与し、設計の変更履歴と追跡できるようにすること。

③ 「図面」との整合性

ここで変更した表示名は、図面の「部品表(BOM)」に反映される場合がある。BOMのコンフィギュレーション設定で「コンポーネントの表示名を使用する」設定になっているか、事前に確認しておく必要がある。ここがズレると、現場の混乱を招く。

—

結論:自動化は「設計の意志」をコードに落とし込むこと

SolidWorks APIは強力だが、その分、設計者の意図を理解せずにコードを書けば、巨大な技術負債を生む。

「表示名」を変えるという小さな機能一つとっても、ファイル名との関係性、ツリー階層の可読性、そしてBOMへの影響までを見通す視点を持つこと。それが、明日からあなたの現場を劇的に変える「エンジニアの矜持」だ。

さあ、退屈な手作業から解放され、より本質的な設計業務に時間を割こうではないか。何か具体的な実装で詰まれば、またいつでも聞いてくれ。

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