【実務・中級編】【初心者必見】ExtrudeFeature2の「ドラフト(勾配)」パラメータを活用した抜き勾配付きボス形状の自動生成 – SolidWorks VBA解析バイブル

スポンサーリンク

射出成形の現場で「後付け修正」は罪である:ExtrudeFeature2で抜き勾配を自動化せする極意

SolidWorksの自動化において、初心者が陥る最大の罠は「フィーチャを順番に積み上げること」だ。
「まず押し出し、その後に勾配フィーチャを追加する」。一見正しそうに見えるが、これは設計変更の嵐が起きた時、真っ先に破綻する脆い構造だ。

真の自動化エンジニアは、「生成の瞬間に完結させる」。今回は、`ExtrudeFeature2`メソッドを使い、押し出しと同時に抜き勾配(ドラフト)を適用する、堅牢で保守性の高いコードを授ける。

なぜ「勾配フィーチャ」を後付けしてはいけないのか?

実務で抜き勾配が必要な製品を扱う際、後から「勾配フィーチャ」を追加すると、以下のリスクが生じる。

1. トポロジーの喪失: フィーチャツリーが肥大化し、親フィーチャの面名やエッジが変更された際にエラーが連鎖する。
2. パフォーマンスの低下: 勾配計算は再構築(リビルド)において重い処理だ。フィーチャを分けることで、SolidWorksが内部的に行う履歴計算の回数が増える。
3. 可読性の欠如: 設計意図が散逸する。抜き勾配は「形状の構成要素」であり、追加の加工ではない。

これらを回避し、コードを劇的に軽量化するのが「`CreateFeatureFromBody`」ではなく、`ExtrudeFeature2`のパラメータを直接叩くアプローチだ。

実践:抜き勾配付き押し出し自動生成コード

このコードは、新規パーツを作成し、スケッチから直接「抜き勾配付きボス」を生成するプロダクションレベルのテンプレートである。

Option Explicit

‘ 伝説的なエンジニアは、エラーハンドリングを怠らない
Sub CreateTaperedBoss()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swFeatMgr As SldWorks.FeatureManager
Dim swFeat As SldWorks.Feature

Set swApp = Application.SldWorks
Set swModel = swApp.NewDocument(“Part”, 0, 0, 0)
Set swFeatMgr = swModel.FeatureManager

‘ スケッチを作成(実務では外部からの座標入力等を想定)
swModel.SketchManager.InsertSketch True
swModel.CreateCircleByRadius 0, 0, 0, 0, 0.02, 0 ‘ 直径40mmの円
swModel.SketchManager.InsertSketch False

‘ 【核心】抜き勾配付き押し出しのパラメータ設定
‘ ExtrudeFeature2引数解説:
‘ Depth: 押し出し深さ
‘ Dir: 1(正方向)
‘ FlipDir: False
‘ TaperAngle: 勾配角度(ラジアン変換が必要)
‘ D1: 100mm, D2: 0, D3: 0, D4: 0, D5: 0
‘ DraftAngle: 0.05236 (約3度)
‘ DraftEnabled: True (ここが重要!)
‘ DraftOutward: False (内側に絞るか外側に広げるか)

Dim depth As Double: depth = 0.05 ‘ 50mm
Dim draftAngle As Double: draftAngle = 3 (3.14159265358979 / 180) ‘ 度をラジアンへ

swModel.SelectByID2 “Sketch1”, “SKETCH”, 0, 0, 0, False, 0, Nothing, 0

Set swFeat = swFeatMgr.FeatureExtrusion2( _
True, False, False, 0, 0, _
depth, 0.02, False, False, False, False, _
0, 0, False, False, False, False, _
True, True, True, _ ‘ DraftEnabledをTrueに
draftAngle, False) ‘ 勾配角を適用

If swFeat Is Nothing Then
MsgBox “押し出し失敗:スケッチの状態を確認せよ”, vbCritical
End If
End Sub

プロダクション環境における「3つの鉄則」

コードを動かすだけなら誰でもできる。しかし、自動化ツールを「資産」にするためには以下の視点が欠かせない。

1. ラジアン変換の落とし穴

SolidWorks APIは常に「ラジアン」を要求する。`3 (PI / 180)` を定数化せず、都度計算してコード内に放置するのは保守性の敵だ。`Const PI As Double = 3.14159265358979` をモジュール冒頭で定義せよ。

2. 選択状態のクリア(Selection Management)

API自動化のバグの9割は「意図しない選択状態」から生まれる。`swModel.ClearSelection2 True` を徹底せよ。これを怠ると、前回の処理で選択されたエッジや面を誤って加工対象として拾い、致命的なエラーを引き起こす。

3. データベース連携を見据えた設計

もし、このツールがCSVやExcelからパラメータを読み込むなら、「バリデーション(妥当性検証)」を必ず挟め。勾配角が極端な数値(例:89度など)になった場合、ジオメトリ計算が破綻する。押し出し前に、その角度が物理的に生成可能かをIF文でチェックするロジックを噛ませるのが、シニアエンジニアの矜持だ。

最後に:自動化は「設計」である

`ExtrudeFeature2`を使いこなすということは、SolidWorksの内部エンジンである「Parasolid」の挙動を理解するということだ。

初心者から一歩抜きん出るためには、単にコードを書くのではなく、「なぜこのAPIを選択したのか」「このフィーチャ定義が後の設計変更でどう振る舞うか」を常に考え抜いてほしい。

君が書くそのマクロが、誰かの設計時間を数時間短縮する。その責任と誇りを持って、コードを書いてくれ。健闘を祈る。

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