【入門編】【スイープ・ロフト】LoftFeatureData.SetGuideCurvesを用いたガイドカーブ拘束によるねじれのない高精度ロフト生成 – SolidWorks VBA解析バイブル

スポンサーリンク

【SolidWorks VBA】ねじれを許さない!LoftFeatureDataを極める「ガイドカーブ」制御術

こんにちは。SOLIDWORKSの深淵を覗き込み、APIの力を借りて設計の自動化を極めんとする皆さん。

「マクロの記録」で生成されたコードを見て、「なぜかロフトがねじれる」「ガイドカーブを指定したはずなのにエラーで止まる」……そんな壁にぶつかっていませんか?

今回は、ロフトの品質を決定づける「ガイドカーブ」の制御について、APIの内部構造から紐解いて解説します。これをマスターすれば、複雑な異形ボディも一発で、かつ狙い通りの滑らかさで生成できるようになります。

1. なぜロフトは「ねじれる」のか?

SolidWorksのロフト機能は、断面(Profile)同士を繋ぐとき、API内部で各断面の「頂点」や「始点」をマッピングします。この際、ガイドカーブが正しく認識されていないと、隣り合う断面の頂点同士が意図しないルートで結ばれ、表面がねじれてしまうのです。

この「ねじれ」を防ぐ鍵が、`LoftFeatureData` オブジェクトの `SetGuideCurves` メソッドです。

2. 【核心】LoftFeatureData を制御するロジック

ロフトを成功させるためには、以下の手順を厳密に守る必要があります。

1. 断面(Profile)の確定:`FeatureManager` で選択可能な状態にする。
2. ガイドカーブの選択:これも同様に、選択セットに含める。
3. LoftFeatureDataの取得:`FeatureManager.FeatureLoft2` を呼び出す前の「準備」を行う。
4. 拘束の適用:`SetGuideCurves` でガイドカーブを明示的にリンクする。

実践コード:ガイドカーブ拘束付きロフト生成

このコードは、あらかじめ作成された2つのスケッチ(断面)と、それを繋ぐガイドカーブが選択されている前提で動作します。

Sub CreateHighQualityLoft()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swFeatMgr As SldWorks.FeatureManager
Dim swLoftData As SldWorks.LoftFeatureData

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

‘ ロフトデータオブジェクトの初期化
‘ 内部的には「空のロフト定義」を作る作業です
Set swLoftData = swFeatMgr.CreateLoftFeatureData(True)

‘ 断面の選択(事前に選択セットに追加されている必要あり)
‘ ここがねじれ防止の第一歩。断面の始点(コネクタ)が揃っていることが前提です

‘ ガイドカーブの指定
‘ ここで重要なのは「どのガイドカーブをロフトに反映させるか」をAPIに教えること
Dim guideCurves(0) As Object ‘ 複数ある場合は配列を拡張してください
Set guideCurves(0) = GetSelectionObject(“Sketch3”) ‘ 例:ガイドカーブとなるスケッチを選択

‘ ガイドカーブをデータにセット
swLoftData.SetGuideCurves guideCurves

‘ ロフトのオプションを設定(滑らかな遷移を強制)
swLoftData.Closed = False
swLoftData.MaintainMatchingConnections = True ‘ ここが重要!ねじれ防止のフラグ

‘ フィーチャの生成
swFeatMgr.FeatureLoft2 swLoftData, Nothing, Nothing

Debug.Print “高精度ロフト生成完了”
End Sub

3. 陥りやすいエラーと回避策

① “Selection is invalid”(選択が無効です)

このエラーは、ほとんどの場合「断面とガイドカーブが物理的に接していない」か、「選択セットがクリアされている」ことが原因です。
解決策: APIを叩く前に、必ず `swModel.ClearSelection2 True` で選択を一度クリアし、コード内で `SelectByID2` を使って確実に断面とガイドを再選択させてください。

② ねじれが解消されない

ガイドカーブを指定してもねじれる場合、それは「断面スケッチの始点(Start Point)の位置」が揃っていないからです。
プロの知見: スケッチ内で「点」を配置し、全ての断面でその「点」がガイドカーブと一致するように拘束をかけてください。APIは、その「点」をガイドカーブとの接続点として認識します。

4. 最後に:伝説的エンジニアからのアドバイス

「マクロの記録」はあくまでチュートリアルです。本当に強力な自動化は、「どのオブジェクトが、どの順序で、どのプロパティを要求しているか」をAPIヘルプ(SolidWorks API Help)から読み解く力に宿ります。

今回紹介した `MaintainMatchingConnections = True` は、マクロの記録には現れない「現場の知恵」です。これを知っているだけで、生成される形状の安定感は劇的に変わります。

最初は難しく感じるかもしれませんが、まずは「断面の始点を合わせる」ことと「ガイドカーブをAPI経由で正しくセットする」という2点だけを意識してみてください。皆さんの設計業務が、今日からよりスマートで、より創造的なものになることを願っています。

何か詰まったら、いつでも聞いてください。また次のステップでお会いしましょう!

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