【入門編】【押し出しボス徹底攻略】FeatureManager.FeatureExtrusion3の「オフセット(Offset From Surface)」パラメータを活用した実務的な端面処理 – SolidWorks VBA解析バイブル

スポンサーリンク

SolidWorks VBAの神髄:`FeatureExtrusion3`で「オフセット押し出し」を完全制圧する

こんにちは。SolidWorks自動化の深淵へようこそ。

「マクロの記録」ボタンを押して生成されたコードを見て、絶望したことはありませんか? 冗長で、エラーに弱く、何より「なぜ動くのか」が分からない。今日は、そんな泥沼から抜け出し、「参照面からのオフセット押し出し」をプログラムの意志で正確に制御する方法を伝授します。

これは単なるAPIの呼び出しではありません。SolidWorksのジオメトリ演算の核心に触れる、非常に強力な技術です。

1. なぜ「オフセット押し出し」なのか?

単純な「ブラインド(数値指定)」押し出しでは、モデルの形状が変わった瞬間に設計意図が崩壊します。しかし、「オフセット(Offset From Surface)」を使えば、「特定の面から常に〇mm浮いた位置で止める」という、堅牢な(Robustな)モデルを構築できます。

これをAPIで叩くのが、`FeatureManager.FeatureExtrusion3` です。

2. 実装の極意:コードの構造を理解する

まずは、このメソッドのシグネチャ(引数の並び)を見て腰を抜かさないでください。非常に多くの引数を取りますが、重要なのは「どの引数が何に対応しているか」を見極める力です。

実践コード:オフセット押し出しのテンプレート

Sub CreateOffsetExtrusion()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swFeatMgr As SldWorks.FeatureManager

Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swFeatMgr = swModel.FeatureManager

‘ — 重要:押し出しのパラメータ設定 —
‘ 引数の意味を理解すれば、もう怖くありません
Dim bRet As Boolean
bRet = swFeatMgr.FeatureExtrusion3( _
True, ‘ 1. bFlipSideOfSketch: スケッチの外側を押し出すか?
False, ‘ 2. bDir: 方向を反転させるか?
False, ‘ 3. bDiePunch: 抜き勾配の有無
6, ‘ 4. Type: 6は「オフセット」を指す重要定数
0, ‘ 5. dThickFwd: 押し出し距離(オフセット時は無視されることが多いが0推奨)
0, ‘ 6. dThickBack: 反対方向
0, ‘ 7. dDraftAngle: 抜き勾配角度
False, ‘ 8. bDraftFwd: 抜き勾配の方向
False, ‘ 9. bDraftBack: 反対方向
False, ‘ 10. bStartOffset: スケッチ平面からオフセット開始するか
0, ‘ 11. dStartOffset: 開始オフセット値
False, ‘ 12. bReverseOffset: 反対方向へオフセット
False, ‘ 13. bReverseDir: 方向反転
False, ‘ 14. bOptimize: ジオメトリ最適化
False, ‘ 15. bPropagate: 輪郭伝播
0.005, ‘ 16. dEndOffset: 【重要】参照面からのオフセット距離(5mm)
True, ‘ 17. bReverseDir2: 2方向目の反転
False ‘ 18. bMatchSketch: スケッチとの整合性
)

‘ 成功確認
If bRet Then MsgBox “オフセット押し出しに成功しました!”
End Sub

3. 初学者が必ずハマる「罠」と対策

罠その1:参照面の選択忘れ

`FeatureExtrusion3`は、「どの面を基準にするか」を自動では判断してくれません。コードを実行する前に、必ず対象となる面をあらかじめ `SelectByID2` メソッドなどで選択状態にしておく必要があります。これができていないと、APIは「参照がありません」とエラーを吐くか、期待しない動作をします。

罠その2:引数の「6」の魔法

APIの引数にいきなり数字を入れるのは行儀が悪いですが、`FeatureExtrusion3`のタイプ指定(第4引数)は、VBAのライブラリ上で `swEndCondOffsetFromSurface` という定数(値は6)で定義されています。コードの可読性を上げるために、定数を使う癖をつけましょう。

4. プロの視点:なぜ「オフセット」が最強なのか

実務において、ブラインド押し出しは「静止した形状」しか生み出しません。しかし、オフセットを活用すると、以下のような自動化が可能になります。

  • 金型設計: 固定側と可動側のクリアランスを自動計算して押し出す。
  • 筐体設計: 内壁を基準面から一定の隙間(リブの高さなど)を持たせて生成する。

「モデルの変化に追従するロジック」こそが、優れた自動化エンジニアの証です。

最後に:一歩先のエンジニアへ

今日紹介した `FeatureExtrusion3` をマスターすれば、SolidWorks上の「押し出し」操作の9割はプログラムで制御可能です。

最初は難解に見える引数の羅列も、一つずつ「これは何のためにあるのか?」を分解すれば、ただのデータセットに過ぎません。恐れずにコードを書き換え、ブレークポイントを置いて一行ずつ実行してみてください。

あなたが書いたコードが、SolidWorksの中で「設計の意志」となって動き出す瞬間、きっとエンジニアとしての新しい扉が開かれるはずです。応援しています!

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