【入門編】【フィーチャ操作】ReferencePlaneでオフセット基準面を動的に追加し、その面上にサブスケッチを展開する手順 – SolidWorks VBA解析バイブル

スポンサーリンク

SolidWorks自動化の真髄:動的基準面生成とスケッチ展開の完全攻略

こんにちは。自動化の深淵へようこそ。
マクロの記録ボタンを押して、生成された無駄なコードの海に溺れるのは今日で終わりにしましょう。

今回は、SolidWorks APIを使いこなす上で避けては通れない、そして避けてはならない「動的な作業面の生成とスケッチ展開」という技術について解説します。これができるようになれば、多段構造の部品作成が自動化され、あなたのモデリング作業は「手作業」から「設計意図の流し込み」へと進化します。

1. なぜ「動的生成」が必要なのか?

多くの初心者は、最初からモデルに存在する固定の基準面(正面・右側面・上面)だけでスケッチを描こうとします。しかし、実務の複雑な部品は、特定の面から距離を置いた場所でスケッチを展開しなければならないことがほとんどです。

「オフセット基準面を手動で作る」のではなく、「プログラムが設計意図に応じて必要な場所に面を生成する」。これが自動化の第一歩です。

2. 実装のロジック:3つのステップ

動的に面を作り、そこにスケッチを描くには、以下の手順を厳守してください。

1. 参照元の特定: どの面を基準にするか(基準面または既存の平面)。
2. 基準面の挿入: `FeatureManager` を通じてオフセット値を指定し、`RefPlane` を作成。
3. スケッチの展開: 作成した平面を選択し、スケッチモードをアクティブにする。

3. 実践コード:オフセット面生成からスケッチ開始まで

以下のコードは、既存の「上面」から50mmオフセットした位置に新しい作業面を作り、そこにスケッチを開始する最小構成です。

Sub CreateOffsetPlaneAndSketch()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swFeatMgr As SldWorks.FeatureManager
Dim swRefPlane As SldWorks.Feature

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

‘ 1. 参照面を選択状態にする(「上面」を基準にする場合)
swModel.Extension.SelectByID2 “上面”, “PLANE”, 0, 0, 0, False, 0, Nothing, 0

‘ 2. オフセット面を挿入 (50mmオフセット)
‘ swFeatureManager.InsertRefPlane パラメータ:
‘ 第1引数: タイプ(8=オフセット), 第2引数: 距離(メートル単位で指定するため0.05)
Set swRefPlane = swFeatMgr.InsertRefPlane(8, 0.05, 0, 0, 0, 0)

‘ 3. 作成した平面を選択してスケッチを開始
swModel.ClearSelection2 True
swModel.Extension.SelectByID2 swRefPlane.Name, “PLANE”, 0, 0, 0, False, 0, Nothing, 0
swModel.InsertSketch2 True ‘ スケッチモードへ移行

MsgBox “作業面を作成し、スケッチモードに入りました。”
End Sub

4. 現場で役立つ「ハマりポイント」と対策

ここからは、伝説のエンジニアとして、あなたが将来ぶつかるであろう壁を先回りして教えます。

① 単位系の罠

SolidWorksのAPIは、「メートル法(m)」で距離を計算します。50mmを指定したいなら、コード上は `0.05` と書かなければなりません。これを忘れると、とてつもない巨大な(あるいは目に見えないほど小さな)平面が生成されます。

② 選択状態のクリア(`ClearSelection2`)

自動化プログラムで最も多いエラーは、「前の選択が残っていて、意図しない場所にフィーチャが追加される」ことです。新しい面を作る前、あるいはスケッチに入る前には、必ず `ClearSelection2 True` を呼び出し、まっさらな状態を作る癖をつけてください。

③ 面の名前が重複する問題

`swRefPlane.Name` を使って面を選択していますが、もし同じ名前の面が既に存在するとエラーになります。実務レベルでは、作成したフィーチャに対して `swRefPlane.Name = “MyWorkPlane_01″` のように、プログラム内で管理しやすい名前を明示的に付ける工夫が重要です。

5. 最後に:一歩先のエンジニアになるために

このコードが理解できれば、あとは `swModel.CreateLine2` や `swModel.CreateCircle2` といったスケッチ描画コマンドを組み合わせるだけで、どんな形状も自動で生成できるようになります。

「マクロの記録」はあくまで参考書です。本当に自由自在にSolidWorksを操るには、「どのオブジェクトがどの機能を持っているか(APIヘルプ)」を読み解く力が不可欠です。

次は、生成した平面に円を配置し、それを押し出す(`FeatureExtrusion2`)操作に挑戦してみてください。それができれば、あなたはもう初心者ではありません。

何か不明点があれば、いつでも聞いてください。あなたの自動化の旅を、全力でサポートします。

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