【実務・中級編】【数式・グローバル変数】EquationMgr.AddEquationでパーツ全体の寸法連動ネットワークをコードから構築する – SolidWorks VBA解析バイブル

スポンサーリンク

SolidWorks APIの真髄:EquationMgrで「動的な設計ネットワーク」をコードから構築せよ

SolidWorksで最も生産性を落とす要因は何か。それは「手動での数値入力」と「設計変更のたびに繰り返す数式マネージャの編集」だ。

GUIでポチポチと数式を入力しているようでは、プロのエンジニアとは呼べない。SolidWorksの真のパワーは、APIを通じて「数式マネージャ(EquationMgr)」をコードから直接制御し、パーツの数学的基盤をプログラム側で完全に掌握することにある。

本稿では、`EquationMgr.AddEquation`を使い、強固で保守性の高い「設計ネットワーク」を構築するための極意を伝授する。

1. なぜ「手動設定」ではいけないのか?

設計の現場では、仕様変更は「突発的に」かつ「広範囲に」発生する。数式マネージャをGUIでいじっていると、以下のような悪夢が待っている。

  • 人為的ミス: 参照名を打ち間違え、連動が切れる。
  • トレーサビリティの欠如: どのパラメータがどのフィーチャを駆動しているのか、設計意図がブラックボックス化する。
  • 再利用性の低さ: 似たようなパーツを作るたびに、同じ数式を再入力する不毛な作業。

APIによる制御は、これらを「コードによる設計の定義」へと昇華させる。一度書いたコードは、何千回でも、何万回でも、正確無比に再現可能な資産となる。

2. 実装の要諦:EquationMgrのライフサイクル

`IModelDoc2.GetEquationMgr`を通じて取得する`IEquationMgr`インターフェースは、SolidWorksのパーツ構造の「神経系」を司る。

ここで重要なのは、「参照名の正確な記述」「エラーハンドリング」だ。

実践的プロダクションコード

このコードは、指定した名前のグローバル変数と、フィーチャの寸法を数式で結びつけるためのテンプレートだ。

Option Explicit

‘ 伝説的な設計のためのEquationMgr操作関数
Public Sub SetParametricDesign(swModel As SldWorks.ModelDoc2, _
strGlobalVar As String, _
strValue As String, _
strDimensionName As String)

Dim swEqMgr As SldWorks.EquationMgr
Dim nIndex As Long
Dim nResult As Long

Set swEqMgr = swModel.GetEquationMgr

‘ 1. 数式の構築
‘ 数式は “Name = Value” の形式で渡す必要がある
Dim strFormula As String
strFormula = “””” & strDimensionName & “”” = ” & strGlobalVar & ” ” & strValue

‘ 2. 既存の数式を走査し、重複を避ける(堅牢性の担保)
nIndex = swEqMgr.GetCount
Dim i As Integer
For i = 0 To nIndex – 1
‘ 既に同一寸法の数式が存在する場合は更新する戦略をとる
If InStr(swEqMgr.Equation(i), strDimensionName) > 0 Then
swEqMgr.Delete i
Exit For
End If
Next i

‘ 3. 数式の追加
nResult = swEqMgr.Add(nIndex, strFormula)

‘ 4. 再構築(必ず更新をかける)
swModel.EditRebuild3

If nResult = -1 Then
Err.Raise vbError, “EquationMgr”, “数式の追加に失敗しました。寸法名またはグローバル変数が正しいか確認してください。”
End If
End Sub

3. 現場で生き残るための「3つの鉄則」

① 寸法名は「手打ち」にするな

`“D1@Boss-Extrude1”`のような文字列を直書きするのは地雷だ。フィーチャ名や寸法名が変更された瞬間にリンクが破綻する。設計の要所となる寸法には、SolidWorks側で必ず「名前付き寸法(例: `Length@MainBox`)」を割り当ててからAPIを叩くこと。これにより、API側は「意味のある名前」で制御できるようになる。

② 数式マネージャの「順序」は神聖不可侵

`EquationMgr`のインデックスは、下から上へ計算される依存関係を持つことがある。複雑な連動を組む場合は、`Add`メソッドの引数であるインデックスを適切に管理せよ。計算順序を誤ると、SolidWorksは「循環参照」の警告を吐き、設計が停止する。

③ データベース連携の際は「バリデーション」を徹底せよ

Excelや外部DBから数値を流し込む際、必ず「単位系」を確認すること。API経由の入力はすべてメートル法(m)がベースになることが多い。数値を受け取ったら、必ず単位変換関数を通し、不正な値(0以下など)が設計を破壊しないよう、ビジネスロジック層でバリデーションをかけるのがエンジニアの矜持だ。

結論:自動化は「設計の言葉」を変える

`EquationMgr`を使いこなすことは、単なるルーチンワークの効率化ではない。「設計意図そのものをコードで定義する」という、次世代のエンジニアリングスタイルへの転換だ。

このコードを叩き台に、あなたのパーツは「静的な形状」から「論理的に整合のとれた動的なモデル」へと進化する。トラブルを恐れず、APIをねじ伏せろ。SolidWorksは、あなたの設計意図を忠実に実行する最強のツールに変わるはずだ。

さあ、次はどのパーツをコードで支配する?

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