こんにちは。SolidWorksの世界へようこそ。
「マクロの記録」ボタンを押して、生成された無意味に長いコードに絶望したことはありませんか?あるいは、コンフィギュレーションを切り替えた瞬間にエラーが出て、SolidWorksがフリーズして頭を抱えたことは?
今日は、そんなあなたを「マクロの記録を卒業したエンジニア」へと引き上げる、コンフィギュレーション自動操縦の極意を伝授します。これさえ押さえれば、バリエーション展開の作業から解放され、あなたはもっとクリエイティブな設計に集中できるようになります。
—
1. コンフィギュレーション操作の本質:なぜ「切替」でコケるのか?
SolidWorksのAPIにおいて、コンフィギュレーション操作は「ドキュメント(モデル)の深層にアクセスする」作業です。
多くの初心者が陥る罠は、「切り替えたつもり」で、裏側のオブジェクトが更新されるのを待たずに次の操作をしてしまうことです。APIは非常に高速ですが、SolidWorksのジオメトリ再構築(リビルド)は物理的な時間を要します。
鉄則:操作の前後には必ずリビルドを挟む
コンフィギュレーションを変更した直後は、必ず `ForceRebuild3` を呼び出してください。これを怠ると、前回の設定の寸法を掴んだまま計算が走り、エラーや意図しない形状が生成されます。
—
2. 実践:コンフィギュレーションの追加と寸法制御
それでは、実際に「既存のコンフィギュレーションをコピーし、特定の寸法を変更する」スクリプトを見ていきましょう。
Sub ManageConfigurationAndDimensions()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swConfig As SldWorks.Configuration
Dim swDim As SldWorks.Dimension
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
‘ 1. コンフィギュレーションの新規作成
‘ 新しい設定を追加し、成功したか確認する
Dim configName As String
configName = “Variation_001”
Set swConfig = swModel.AddConfiguration3(configName, “”, “”, swConfigOption_SuppressByDefault)
If swConfig Is Nothing Then
MsgBox “設定の作成に失敗しました。既に同名が存在する可能性があります。”
Exit Sub
End If
‘ 2. 作成したコンフィギュレーションへ切り替え
swModel.ShowConfiguration2 configName
‘ 3. 寸法の書き換え(ここが重要!)
‘ “D1@Sketch1” は寸法名です。必ずスケッチ内で確認してください
Set swDim = swModel.Parameter(“D1@Sketch1”)
‘ 値を書き込む(単位はメートル法が基本なので注意)
swDim.SystemValue = 0.05 ‘ 50mmに変更
‘ 4. 最後に必ずモデルを更新する
swModel.EditRebuild3
MsgBox “コンフィギュレーション ” & configName & ” を作成し、寸法を変更しました。”
End Sub
—
3. このコードが持つ「プロの知見」
① `AddConfiguration3` の引数
第4引数 `swConfigOption_SuppressByDefault` は非常に重要です。これを指定することで、新しい設定を作った際に、既存のフィーチャが意図せずサプレスされる事故を防ぎます。
② `SystemValue` と `Value` の違い
`swDim.Value` は、現在の表示単位(mmなど)に依存します。一方、`swDim.SystemValue` はSolidWorksの内部単位系(メートル)で値を扱います。自動化ツールを作る際は、常に `SystemValue` を使うのがプロの流儀です。 単位変換による丸め誤差や誤作動を確実に排除できます。
③ 寸法名の特定方法
コード中の `”D1@Sketch1″` は、マクロの記録ではなく、SolidWorks画面上の「寸法プロパティ」で確認してください。手動で名前を定義しておくと、モデルが複雑になってもコードが壊れにくくなります。
—
4. 陥りやすいエラーと回避策
- 「名前が見つかりません」エラー:
`swModel.Parameter` は、指定したコンフィギュレーション内にその寸法が存在しないと失敗します。`If Not swDim Is Nothing Then` で存在チェックを入れるのが、堅牢なコードへの第一歩です。
- 「リビルドが追いつかない」:
極めて複雑なアセンブリやパーツの場合、`EditRebuild3` の後に `DoEvents` を挟むことで、SolidWorksの描画更新を待つ余裕を与えることができます。
—
まとめ:ここをクリアすれば、あなたはもう脱・初心者
今回のコードで、以下の3ステップがマスターできたはずです。
1. コンフィギュレーションの安全な作成
2. 目的のモデルへの確実なフォーカス
3. 内部単位系(SystemValue)による正確な寸法制御
SolidWorks VBAは、単なる「自動化ツール」ではありません。あなたの設計思想をコードとして保存し、何度でも再現可能な状態にする「設計資産」です。
次は、これをさらに発展させて、Excelリストから一括で100個のバリエーションを生成するツールに挑戦してみましょう。そこまで到達すれば、あなたはもう職場の誰も手出しできない「自動化エンジニア」の仲間入りです。
何か分からないことがあれば、いつでもまた聞きに来てくださいね。あなたの挑戦を応援しています。
