【入門編】【コンフィギュレーション連携】Configurations.Add3を用いたバリエーション展開とエクセル表からの自動一括生成 – SolidWorks VBA解析バイブル

スポンサーリンク

SolidWorks VBAを掌握せよ:Configurations.Add3で挑む「型式バリエーションの完全自動生成」

こんにちは。SolidWorksの自動化の世界へようこそ。
「マクロの記録」ボタンを押して生成された、あの冗長で扱いにくいコードに疲弊していませんか?

今日から皆さんは、単なる「操作の記録係」ではありません。「設計資産をコードで操るアーキテクト」です。今回は、製品開発の現場で最も即効性があり、かつ設計品質を底上げする「コンフィギュレーションの一括生成」に焦点を当てます。

なぜ「Configurations.Add3」なのか?

SolidWorksの自動化において、最もやってはいけないのが「毎回ファイルを別名保存してバリエーションを作る」という非効率な手法です。ファイル数が増えれば管理不能になり、設計変更時の修正地獄が待っています。

コンフィギュレーション(Configuration)を使えば、1つのファイル内で無数のバリエーションを管理できます。そして、その生成をAPIで行うための最強の武器が `Configurations.Add3` メソッドです。

1. 準備:エクセルを「設計の心臓部」にする

まずは、エクセルに以下のようなテーブルを用意しましょう。

  • A列:型式名(コンフィギュレーション名)
  • B列:長さ (D1@スケッチ1)
  • C列:幅 (D2@スケッチ1)

エクセルをデータベースとして使うことで、エンジニアはCADを開かずとも、表を編集するだけで設計変更が可能になります。これが「自動化の真髄」です。

2. 実践:コンフィギュレーション自動生成スクリプト

以下のコードは、エクセル上のデータを読み取り、SolidWorks側でコンフィギュレーションを作成・更新するエンジンです。

Option Explicit

‘ メインプロシージャ:エクセルからSolidWorksへバリエーションを流し込む
Sub GenerateConfigurationsFromExcel()
Dim swApp As Object
Dim swModel As SldWorks.ModelDoc2
Dim swConfig As SldWorks.Configuration
Dim i As Long

‘ SolidWorksへの接続(既に起動している前提)
Set swApp = GetObject(, “SldWorks.Application”)
Set swModel = swApp.ActiveDoc

If swModel Is Nothing Then
MsgBox “パーツファイルを開いてください。”
Exit Sub
End If

‘ エクセルの2行目から最終行までループ
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
Dim configName As String
Dim val1 As String, val2 As String

configName = Cells(i, 1).Value
val1 = Cells(i, 2).Value
val2 = Cells(i, 3).Value

‘ 1. コンフィギュレーションの新規作成
‘ Add3(名前, コメント, 代替名, オプション)
Set swConfig = swModel.ConfigurationManager.Add3(configName, “”, “”, 0)

‘ 2. アクティブ化(これを行わないと寸法変更が効かない)
swModel.ShowConfiguration2 configName

‘ 3. 寸法値の更新(数式名指定で安全に更新)
swModel.Parameter(“D1@スケッチ1”).SystemValue = val1 / 1000 ‘ メートル単位系に注意
swModel.Parameter(“D2@スケッチ1”).SystemValue = val2 / 1000

‘ 4. 再構築(Rebuild)
swModel.EditRebuild3
Next i

MsgBox “全バリエーションの生成が完了しました!”
End Sub

3. ここを抑えれば「脱・初心者」!3つの重要ポイント

このコードを書く際、多くの人が躓くポイントが3つあります。ここを理解すれば、あなたの自動化スキルは一気にプロの領域へ達します。

① 単位系(Units)の罠

SolidWorksのAPIは、内部的に常に「メートル(m)」で処理されます。エクセルに「100mm」と書いてあっても、そのまま代入すると0.1mとして処理されます。必ず `/ 1000` を忘れないでください。

② モデルの再構築(Rebuild)

寸法を変えただけでは、SolidWorksは「見た目」を更新しません。`swModel.EditRebuild3` を呼び出すことで、初めてジオメトリが確定します。これを忘れると、コンフィギュレーションが切り替わるたびにモデルが崩れる原因になります。

③ エラーハンドリングの重要性

既に同名のコンフィギュレーションが存在する場合、`Add3` はエラーを返します。本来は `If Not swModel.GetConfigurationByName(configName) Is Nothing Then` のように、存在チェックを入れるのが「現場で生き残るコード」の作法です。

さあ、次のステップへ

このスクリプトは、単なる「寸法の流し込み」以上の可能性を秘めています。
例えば、ここに `swModel.ActiveConfiguration.CustomPropertyManager` を組み合わせれば、エクセルの情報から「図面枠のプロパティ情報」まで自動で埋め込むことが可能です。

マクロは、あなたが「繰り返し行う退屈な作業」を肩代わりするために存在します。
まずはこのコードをコピーして、ご自身のパーツで試してみてください。動いた時の感動こそが、エンジニアとしての確かな一歩です。

何か分からないことがあれば、いつでも聞いてください。設計と自動化の迷宮から、いつでも正解を導き出しますよ。

それでは、素晴らしい自動化ライフを!

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