SolidWorks VBAを掌握する:ConfigurationManagerで「構成部品」を自在に操る極意
こんにちは。現場で「マクロの記録」に頼り切った開発から、真の自動化エンジニアへと脱皮したいあなたへ。
SolidWorks APIの世界へようこそ。今日は、多くのユーザーが一度は壁にぶつかる「コンフィギュレーション(構成)」の制御について、その本質を解き明かしていきます。これができれば、何百というバリエーションを持つ部品の図面作成やデータ書き出しを、コーヒーを飲んでいる間に終わらせることも夢ではありません。
—
1. なぜ「ConfigurationManager」を知る必要があるのか?
SolidWorksのAPIは、大きく分けて SldWorks(親玉) と ModelDoc2(ドキュメントの本体) という二つの階層で制御されます。
しかし、モデルの中に存在する「コンフィギュレーション(構成)」という概念は、さらに一段深い階層である `ConfigurationManager` によって管理されています。ここを理解していないと、マクロを走らせても「なぜか常にデフォルトの構成しか処理されない」という罠に陥ります。
構成制御の基本フロー
1. `ModelDoc2` から `ConfigurationManager` を呼び出す。
2. 対象とする構成名(Name)を指定してアクティブにする。
3. 重要: 構成を切り替えたら、再構築(Rebuild)を忘れずに行う。
—
2. 【実戦コード】構成をバッチ切り替えして処理する
以下のコードは、部品ファイルに含まれるすべてのコンフィギュレーションを順番に切り替え、その構成名をイミディエイトウィンドウに表示するテンプレートです。
Sub BatchConfigurationProcessor()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swConfMgr As SldWorks.ConfigurationManager
Dim swConf As SldWorks.Configuration
Dim vConfNames As Variant
Dim i As Integer
Dim bRet As Boolean
‘ 1. アプリケーションとアクティブなドキュメントの取得
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
If swModel Is Nothing Then Exit Sub
‘ 2. ConfigurationManagerの取得
Set swConfMgr = swModel.ConfigurationManager
‘ 3. すべての構成名を取得
vConfNames = swModel.GetConfigurationNames
‘ 4. 各構成をループして切り替え
For i = LBound(vConfNames) To UBound(vConfNames)
Debug.Print “処理中: ” & vConfNames(i)
‘ 構成をアクティブにする
bRet = swModel.ShowConfiguration2(vConfNames(i))
‘ 5. 最重要:モデルの再構築(これを忘れると前回の状態が残る!)
swModel.ForceRebuild3 False
‘ — ここに個別の処理を記述 —
‘ 例: 質量特性の取得、図面のPDF書き出しなど
‘ —————————-
Next i
MsgBox “全構成の処理が完了しました。”
End Sub
—
3. 現場のエンジニアが陥りやすい「3つの罠」
初学者が必ずと言っていいほど躓くポイントを、先回りして伝授します。
① 「再構築(Rebuild)」の怠慢
`ShowConfiguration2` で構成を切り替えただけでは、SolidWorksの内部状態(ジオメトリや質量)が最新の状態に更新されないことがあります。必ず `ForceRebuild3` を呼び出すのが、プロの鉄則です。
② モデルの保存状態と同期していない
APIで構成を切り替えて保存すると、最後にアクティブだった構成が「保存時のデフォルト」として記録されます。マクロ終了時に一番使い勝手の良い構成に戻す処理を入れると、ユーザーからの評価がグッと上がります。
③ インターフェースの整合性
`ModelDoc2` のメソッドと `Configuration` オブジェクトのプロパティを混同しないようにしてください。構成の名前変更などは `Configuration` オブジェクト側で行いますが、表示切り替えは `ModelDoc2` 側の機能です。
—
4. 次のステップへ
ここまでマスターすれば、あなたはもう「マクロの記録」に頼る初心者ではありません。
次は、「特定の構成だけをフィルタリングして処理する(例えば『_Mfg』という接尾辞がある構成だけを処理する)」といったロジックを組み込んでみてください。これができれば、設計自動化の強力な武器になります。
SolidWorks VBAは、単なる事務作業の効率化ツールではありません。あなたの思考をダイレクトに3Dモデルへ反映させる、設計者にとって最強の「拡張機能」です。
何か分からないことがあれば、いつでも聞いてください。焦らず、一歩ずつ。あなたの自動化エンジニアとしての旅路を心から応援しています。
