【入門編】【板金設計の自動化】SheetMetalFeatureData2.GetThicknessとBendAllowanceを用いた板金パラメータの一括検証マクロ – SolidWorks VBA解析バイブル

スポンサーリンク

SolidWorks板金自動化の極意:規格外パーツを排除する「品質保証マクロ」の作り方

こんにちは。SolidWorksの自動化の世界へようこそ。
日々、手作業で板金の厚みやKファクターをチェックしていませんか?「うっかりミス」は誰にでも起こりますが、それを防ぐのがエンジニアの矜持であり、自動化の醍醐味です。

今日は、「板金パラメータの一括検証マクロ」という実践的なテーマで、SolidWorks APIの核心に触れていきましょう。「マクロの記録」から一歩踏み出し、SolidWorksの内部構造を操るための第一歩です。

1. なぜ「SheetMetalFeatureData2」なのか?

SolidWorksの板金機能は、ただの「厚みのある板」ではありません。`SheetMetal`という特別なフィーチャが、曲げ許容差や厚みを管理する「頭脳」の役割を果たしています。

私たちが操作するのは `ISheetMetalFeatureData2` というオブジェクトです。これにアクセスすることで、フィーチャを「編集モード」にしなくても、内部のパラメータを読み取り、検証することが可能になります。

2. 実践:板金パラメータ検証マクロ

このコードは、現在開いているパーツドキュメントの板金フィーチャを走査し、社内標準(例:厚み 1.6mm、Kファクター 0.5)から外れている場合に警告を出します。

Option Explicit

‘ メイン処理:板金フィーチャの検証
Sub ValidateSheetMetalParams()
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

‘ パーツが開かれていない場合のガード節
If swModel Is Nothing Or swModel.GetType <> swDocPART Then
MsgBox “パーツファイルを開いてください。”
Exit Sub
End If

‘ フィーチャツリーを上から順に走査
Set swFeat = swModel.FirstFeature
Do While Not swFeat Is Nothing
‘ フィーチャタイプが「SheetMetal」であるか確認
If swFeat.GetTypeName2 = “SheetMetal” Then

‘ データを取得
Set swSheetMetal = swFeat.GetDefinition

‘ 厚み(メートル単位)とKファクターの検証
‘ ※1.6mm = 0.0016m
If swSheetMetal.Thickness <> 0.0016 Then
Debug.Print “警告: 厚みが規格外です – ” & swFeat.Name
End If

If swSheetMetal.BendAllowanceValue <> 0.5 Then
Debug.Print “警告: Kファクターが規格外です – ” & swFeat.Name
End If

End If
Set swFeat = swFeat.GetNextFeature
Loop

MsgBox “検証完了。イミディエイトウィンドウを確認してください。”
End Sub

3. ここで陥りやすい「3つの落とし穴」

コードを書き進める際、多くのエンジニアがここで躓きます。ぜひ覚えておいてください。

① 単位の罠

APIが扱う数値は、常に「メートル法(m)」です。1.6mmを指定したいとき、`1.6`と書くと1.6メートルとして処理されます。必ず `0.0016` に換算する習慣をつけましょう。

② フィーチャタイプを見誤る

`swFeat.GetTypeName2` は非常に強力です。フィーチャツリーを辿る際、この名前が正しいかを必ずデバッグウィンドウで確認してください。板金フィーチャは、実は「SheetMetal」という名前で登録されています。

③ 取得したオブジェクトの解放

VBAにおいて、`Set`で代入したオブジェクトはメモリを消費します。大規模なアセンブリを走査する場合、ループの最後で `Set swSheetMetal = Nothing` と記述することで、メモリリークを防ぎ、安定性を高めることができます。これは「できるエンジニア」の嗜みです。

4. 次のステップ:自動修正への挑戦

今回紹介したコードは「検知」までですが、これを応用すれば「自動修正」も可能です。
`swSheetMetal.Thickness = 0.0016` と書き換え、`swFeat.ModifyDefinition` を呼び出すだけで、プログラムが自動的に板金厚を標準値に修正してくれます。

先輩からのアドバイス

まずは、手元のパーツでこのマクロを動かしてみてください。
「プログラムが自分の代わりに図面をチェックしてくれる」という感覚を一度味わえば、もう手作業には戻れなくなるはずです。

SolidWorks VBAは、単なる作業の効率化ツールではありません。「ヒューマンエラーを仕組みで殺す」ための最強の武器です。ぜひ、あなたの設計現場を、よりミスのない、洗練された環境へとアップデートしてください。

何か分からないことがあれば、いつでも聞いてくださいね。応援しています。

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