【入門編】【サーフェスモデリング】FilledSurfaceやBoundSurfaceをVBAから駆使して複雑な三次元曲面を創る – SolidWorks VBA解析バイブル

スポンサーリンク

境界サーフェスを制する者はSolidWorksを制す ― VBAで描く「曲面の極致」

こんにちは。SolidWorks APIの深淵へようこそ。
「マクロの記録」ボタンを押して生成された、冗長で非効率なコードに別れを告げる準備はできましたか?

今回は、多くのユーザーがGUI操作で四苦八苦する「複雑な曲面生成」を、VBAを用いてコードベースで完全制御する方法を伝授します。ソリッドモデルでは表現できない有機的な形状を、`FeatureManager`を介して構築し、最後には堅牢なソリッドへと昇華させる。その一連のアーキテクチャを紐解きましょう。

1. なぜ「APIによるサーフェス生成」なのか?

GUIでの操作は直感的ですが、「形状変更への追従性」においては限界があります。APIを使えば、数式のパラメータを書き換えるだけで、何千通りもの曲面バリエーションを瞬時に生成可能です。

特に「境界サーフェス(Boundary Surface)」や「フィルサーフェス(Filled Surface)」は、計算負荷が高く、手動操作ではしばしば「形状の破綻」を招きます。これをVBAで記述する際の肝は、「連続性(G1/G2)の定義」を明確に引数に落とし込むことです。

2. 境界サーフェス生成のアーキテクチャ

境界サーフェスを創るには、以下のステップが不可欠です。

1. プロファイルの取得: 境界となるエッジやスケッチを選択する。
2. 選択セットの構築: `Select2` メソッドを駆使し、APIに「どの線と面を繋ぐか」を教える。
3. 定義のパラメータ化: `FeatureManager.InsertBoundarySurface` を実行する。

実践コード:境界サーフェスの生成

‘ 複雑な曲面を構築するためのテンプレート
Sub CreateBoundarySurface()
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

‘ 1. 選択のクリア(基本中の基本:前回の選択状態を必ずリセットする)
swModel.ClearSelection2 True

‘ 2. 境界サーフェスのパラメータ設定
‘ ここでは既にスケッチ等が選択されている前提
‘ 引数: 方向1, 方向2, 接線条件(0=なし, 1=接線, 2=曲率)
Dim swFeat As SldWorks.Feature
Set swFeat = swFeatMgr.InsertBoundarySurface( _
True, False, _
1, 0, _ ‘ 方向1の接線条件
1, 0, _ ‘ 方向2の接線条件
False, False, False)

If swFeat Is Nothing Then
MsgBox “曲面の生成に失敗しました。選択セットを確認してください。”
End If
End Sub

3. 「サーフェスからソリッドへ」の最終関門

どれほど美しい曲面を生成しても、それが閉じられていなければ「ただの薄い布」です。これを厚みのあるソリッドに変えるのが `CreateSolidFromSurfaces` の役割です。

陥りやすい罠:隙間(ギャップ)問題

多くの初心者がここで挫折します。「なぜソリッドにならないのか?」その答えの9割は、曲面間に微細な隙間があるからです。

  • 解決策: サーフェスを生成する際、必ず「縫い合わせ(Knit Surface)」の工程を挟んでください。許容誤差(Tolerance)を適切に設定することが、成功の鍵です。

‘ 生成したサーフェスを縫い合わせてソリッド化する関数
Sub KnitAndSolidify()
Dim swModel As SldWorks.ModelDoc2
Set swModel = Application.SldWorks.ActiveDoc

‘ サーフェスのエッジを選択して縫い合わせる
‘ 許容誤差は 1e-6 (1ミクロン) 程度が安全圏
swModel.FeatureManager.InsertSewSurface swModel.SelectionManager.GetSelectedObject6(1, -1), _
Nothing, Nothing, 1, 0.000001, True

‘ ソリッド化の判定
‘ この後、必要に応じて「厚み付け(Thicken)」を行うのが定石です
End Sub

4. プロの視点:コードを「止まらない」ものにするために

読者の皆さんが現場でコードを書く際、以下の3点を意識してください。

1. `ClearSelection2` を過剰なほど呼ぶ: APIは「直前の選択状態」を引きずります。予期せぬエラーの8割はここから生まれます。
2. `SelectionManager` の解釈: 選択されたオブジェクトが「エッジ」なのか「スケッチ」なのか、常に型をチェックする癖をつけましょう。
3. エラーハンドリング: `If swFeat Is Nothing Then` を入れないコードは、未定義の動作を許容する「時限爆弾」です。

最後に:世界を設計する力を

SolidWorks VBAは、単なる自動化ツールではありません。あなたの頭の中にある「まだ見ぬ形状」を、数式と論理の力で具現化するための、魔法の杖です。

まずは、単純なロフトサーフェスから始めてみてください。それができれば、境界サーフェスも、フィルサーフェスも、すべて同じ文法で制御できることに気づくはずです。

もしコードが動かなくても、落ち込まないでください。それは、APIがあなたに「もう少しだけ、形状の境界条件を整理して教えてくれ」と語りかけている証拠ですから。

また次の技術でお会いしましょう。あなたの設計が、コードと共に羽ばたくことを願っています。

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