【入門編】【押し出しボス徹底攻略】CreateExtrusionFeature2を使ったブラインド・貫通・中間立体の生成分岐 – SolidWorks VBA解析バイブル

スポンサーリンク

SolidWorks VBAの真髄:`CreateExtrusionFeature2`で押し出しを完全に支配する

こんにちは。SolidWorksの深淵を歩む皆さん。
「マクロの記録」ボタンを押して生成された、冗長で意味不明なコードを見て絶望したことはありませんか?

SolidWorks APIにおいて、フィーチャ生成の要となるのが `FeatureManager.FeatureExtrusion2`(およびその進化系)です。今日は、皆さんが避けて通りがちな「押し出しボス」の深淵にメスを入れます。ここを理解すれば、あなたの自動化スキルは「作業員」から「アーキテクト」へと劇的に進化します。

1. なぜ「CreateExtrusionFeature2」なのか?

結論から言えば、制御の解像度が違います。
マクロの記録で生成されるコードは、その場限りの引数が羅列されているだけです。しかし、`CreateExtrusionFeature2` を使いこなせば、ブラインド(指定距離)から貫通、中間立体に至るまで、設計意図をコードで正確に定義できます。

押さえておくべき引数の「魂」

このメソッドには多くの引数がありますが、特に重要なのは以下のパラメータです。

  • `Type`: 終了条件。ブラインド、貫通、中間立体などを決定する「司令塔」。
  • `D1, D2`: 押し出し深さ。
  • `DraftEnable`: 勾配(テーパー)を付けるか否か。
  • `ThinType`: 薄板フィーチャの制御。

2. 実践:押し出しフィーチャを自在に操るコード

以下のコードは、単に押し出すだけではなく、「ブラインド」「貫通」「中間立体」を切り替えるためのテンプレートです。

Sub CreateMasterExtrusion()
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.ActiveDoc
Set swFeatMgr = swModel.FeatureManager

‘ 【重要】終了条件の定数
‘ 0: ブラインド, 1: 貫通, 2: 両方貫通, 3: 中間立体…
Dim endType As Long: endType = 0
Dim d1 As Double: d1 = 0.05 ‘ 50mm

‘ フィーチャ作成の実行
Set swFeat = swFeatMgr.FeatureExtrusion2( _
True, ‘ bFlipSide: 反転させるか
False, ‘ bDir2: 第2方向の有無
False, ‘ bEndCond2: 第2方向の終了条件
0, ‘ nType: 終了条件(0=ブラインド)
0, ‘ nDir2Type: 第2方向の終了条件
d1, ‘ d1: 第1深さ
0, ‘ d2: 第2深さ
False, ‘ bDraft: 勾配の有無
False, ‘ bDraftRev: 勾配の反転
0, ‘ dDraftAngle: 勾配角度
0, ‘ dDraftAngle2: 第2方向勾配
False, ‘ bThin: 薄板フィーチャ
False, ‘ bThinDir: 薄板の方向
False, ‘ bThinType: 薄板タイプ
0, ‘ dThinThickness1: 厚み1
0, ‘ dThinThickness2: 厚み2
False, ‘ bMerge: 結果をマージするか(重要!)
True, ‘ bUseFeatureScope: フィーチャスコープ
False, ‘ bUseAutoSelect: 自動選択
False, ‘ bReverseDir: 方向反転
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 _
)

If swFeat Is Nothing Then MsgBox “生成に失敗しました。スケッチは選択されていますか?”
End Sub

3. 初学者が必ずハマる「3つの落とし穴」

コードを書く際、以下のポイントを無視するとAPIは容赦なくエラーを返します。

① スケッチが選択されていない(または複数選択されている)

APIは「今、何が選択されているか」で動作が変わります。`FeatureExtrusion2` を呼ぶ前に、必ず `swModel.Extension.SelectByID2` を使ってスケッチを明示的に選択状態にしてください。

② マージ(Merge)のフラグ忘れ

`bMerge` を `False` にすると、SolidWorksは「マルチボディ」として処理しようとします。既存のボディと結合したい場合は、必ず `True` に設定してください。これだけで「なぜ合体しないんだ!」という悩みが消えます。

③ 単位の解釈ミス

SolidWorksのAPIは内部的に [メートル(m)] で計算します。`0.05` は 50mm です。`50` と入力して「とんでもなく巨大なフィーチャができた!」と驚くのは、誰もが一度は通る道です。

4. 先輩からのアドバイス:自動化の先へ

ここまで来れば、あなたはもうマクロの記録を卒業しています。
次に目指すべきは「エラーハンドリングの徹底」です。

フィーチャを作成する際、`If swFeat Is Nothing Then` とチェックを入れるだけで、プログラムが暴走してSolidWorksがクラッシュするリスクを大幅に減らせます。

SolidWorks VBAは、単なる自動化ツールではありません。あなたの「設計思考」をそのままデジタルに変換するための、強力なマインド・エクステンション(知能の拡張)です。

次は、スケッチの動的生成と組み合わせた「完全自動モデリング」に挑戦してみましょうか?
何か行き詰まったら、いつでも聞いてください。設計とプログラミングの境界線で、お待ちしています。

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