SolidWorks VBAの極意:板金自動化で「手作業の地獄」から脱出する
こんにちは。SolidWorksの自動化の世界へようこそ。
「マクロの記録」ボタンを押して、生成された無機質なコードの羅列に絶望したことはありませんか?実は、あれはプログラムの「残骸」に過ぎません。
今回は、板金設計の現場で最も工数を食う「板厚・曲げ・展開図出力」の自動化に焦点を当てます。この領域を制すれば、あなたの業務効率は劇的に変わります。さあ、伝説のアーキテクトが教える「生きたコード」の世界を覗いてみましょう。
—
1. SheetMetalFeatureData2 という「設計の司令塔」
板金設計を自動化する際、避けて通れないのが `ISheetMetalFeatureData2` インターフェースです。これは、単なる「曲げ」の設定ではなく、SolidWorks内部で板金フィーチャを支配する中枢オブジェクトです。
ここで初心者がやりがちなミスは、「フィーチャを選択せずに変更しようとする」ことです。SolidWorksのAPIは「何を選択し、どのインターフェースを叩くか」という手続きを非常に厳格に求めます。
陥りやすいエラー:オブジェクトの再定義忘れ
多くのユーザーが、フィーチャを編集モード(`EditDefinition`)にした直後、古いオブジェクト情報のまま操作を続けてエラーを吐かせます。必ず 「編集モードに入る → データを取得 → パラメータ書き換え → 編集モードを抜ける」 というライフサイクルを徹底してください。
—
2. 板金パラメータ自動制御スクリプト
それでは、実践的なコードを見てみましょう。このスクリプトは、板厚とKファクターを指定し、最後にDXFを出力するまでの流れを網羅しています。
Option Explicit
Sub AutomateSheetMetalExport()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swFeat As SldWorks.Feature
Dim swSheetMetal As SldWorks.SheetMetalFeatureData2
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
‘ 1. 「板金」フィーチャを探す(命名規則が重要)
Set swFeat = swModel.FeatureByName(“板金1”)
If swFeat Is Nothing Then MsgBox “板金フィーチャが見つかりません”: Exit Sub
‘ 2. フィーチャを編集モードへ
swFeat.Select2 False, 0
Set swSheetMetal = swFeat.GetDefinition
‘ 3. パラメータの書き換え(ここが心臓部)
swSheetMetal.Thickness = 0.002 ‘ 板厚2mmに設定
swSheetMetal.BendRadius = 0.003 ‘ 曲げ半径3mmに設定
swSheetMetal.KFactor = 0.44 ‘ Kファクター設定
‘ 4. 設定を適用(ここを忘れると反映されません)
swFeat.ModifyDefinition swSheetMetal, swModel, Nothing
‘ 5. DXFエクスポート(フラットパターンへ)
‘ ※実際のパスは環境に合わせて書き換えてください
Dim exportPath As String
exportPath = “C:\Temp\ExportedPart.dxf”
swModel.ExportFlatPatternView exportPath, 1 ‘ 1はDXF形式を指す
MsgBox “板金データの更新とDXF出力が完了しました!”
End Sub
—
3. なぜ「手作業」から脱却できるのか?
このコードのポイントは、「手動操作の再現」ではなく「データ構造への直接アクセス」を行っている点です。
- ModifyDefinitionの重要性:
`ModifyDefinition` は、SolidWorksに「設定値を反映してモデルを再計算しろ」と命じるコマンドです。これを怠ると、画面上の数値は変わっても、3Dモデルのジオメトリが更新されないという「幻の修正」が起こります。
- フラットパターンの扱い:
`ExportFlatPatternView` メソッドは非常に強力です。わざわざ展開図をアクティブにしなくても、バックグラウンドでジオメトリを読み解き、DXFを吐き出します。
—
4. 現場で生き残るための「鉄の掟」
1. エラーハンドリングを怠らない: `If swFeat Is Nothing` のように、常に「対象が存在しない可能性」を考慮してください。
2. 単位系に注意: APIは内部的に「メートル法(メートル・キログラム・秒)」で動きます。2mmなら `0.002` と記述するのが鉄則です。ミリ単位で `2` と書くと、とんでもない厚みの板金が出来上がります。
3. モデル再構築(Rebuild): 値を変更した後は、`swModel.ForceRebuild3` を実行する癖をつけてください。APIを通した変更は、時にSolidWorksの描画更新を追い越してしまうことがあるからです。
—
最後に:自動化は「設計者の余裕」を作るためにある
自動化は、単に楽をするための手段ではありません。あなたがこれまで手作業の繰り返しに費やしていた脳のメモリ(思考の余裕)を、「よりクリエイティブな設計検討」に回すためにあります。
まずは、上記のコードを自分の環境で動かしてみてください。「動いた!」という感覚こそが、エンジニアとしての確かな第一歩です。ここをクリアすれば、あなたはもうマクロの記録ボタンを押すだけの初心者ではありません。
次に何を作りたいですか?また困ったことがあれば、いつでも聞きに来てください。あなたの挑戦を、心から応援しています。
