【入門編】【実務中級】アセンブリ内の特定の合致関係(Mate)を一時的に抑制(Suppress)し、機構のフリー状態を作り出す切り替えマクロ – SolidWorks VBA解析バイブル

スポンサーリンク

SolidWorks VBAの極意:機構を自在に操る「合致トグル」の実装術

こんにちは。現場で泥臭い自動化を積み重ね、SolidWorks APIの深淵を覗いてきたエンジニアです。

「マクロの記録」ボタンを押して、生成されたコードを眺めて「これでいいや」と満足していませんか? それはまだ、SolidWorksという巨大なシステムの入り口に立ったに過ぎません。

今回取り上げるのは、アセンブリの機構検討を劇的に加速させる「合致(Mate)の抑制/解除トグル」です。設計の現場では、特定の合致が邪魔をして、機構を動かして干渉を確認したいのに「動かない!」というジレンマがよくありますよね。

これを自動化し、ワンクリックで「固定状態」と「フリー状態」を行き来する、真に実務的なマクロを共に作り上げましょう。

—

1. なぜ「抑制」の操作が重要なのか?

SolidWorksのGUIで合致を一つずつ右クリックして「抑制」を押す……これはエンジニアがやるべき作業ではありません。

APIの世界では、合致は`Feature`オブジェクトとして管理されています。このFeatureのステータスを操作することで、SolidWorksは「計算負荷を無視してモデルを動かせる状態」を作り出します。これこそが、複雑なアセンブリを素早く検証するための「ハック」です。

—

2. 現場で使える「合致トグル」のコード

以下のコードは、アセンブリ内の特定の名前を持つ合致を検索し、有効であれば抑制し、抑制されていれば有効化する「トグル(切り替え)」処理です。

Option Explicit

Sub ToggleMateSuppression()
Dim swApp As SldWorks.SldWorks
Dim swAssy As SldWorks.AssemblyDoc
Dim swFeat As SldWorks.Feature
Dim mateName As String

‘ 対象となる合致の名前(FeatureManagerで名前を付けておくこと!)
mateName = “検証用合致”

Set swApp = Application.SldWorks
Set swAssy = swApp.ActiveDoc

‘ アセンブリが開かれているかチェック
If swAssy Is Nothing Then
MsgBox “アセンブリを開いてから実行してください。”
Exit Sub
End If

‘ FeatureManagerのツリーを巡回して目的の合致を探す
Set swFeat = swAssy.FirstFeature

Do While Not swFeat Is Nothing
‘ 合致フォルダ内の特定の名前を探す
If swFeat.Name = mateName Then
‘ 抑制状態を判定し、反転させる
If swFeat.IsSuppressed Then
swFeat.SetSuppression2 swFeatureUnsuppressed_Self
Debug.Print mateName & ” を有効化しました。”
Else
swFeat.SetSuppression2 swFeatureSuppressed_Self
Debug.Print mateName & ” を抑制しました。”
End If

‘ 変更をモデルに反映(再構築)
swAssy.EditRebuild3
Exit Sub
End If
Set swFeat = swFeat.GetNextFeature
Loop

MsgBox “指定した合致が見つかりませんでした。”
End Sub

—

3. コードの「急所」を理解する

このコードが「ただのコピペ」にならないよう、3つの重要ポイントを解説します。

  • `SetSuppression2` メソッドの威力:

`swFeatureSuppressed_Self` は対象自身を抑制します。`swFeatureUnsuppressed_Self` はその解除です。このメソッドこそが、SolidWorksの計算負荷を制御する心臓部です。

  • 名前管理の重要性:

コード内の `mateName` が正確である必要があります。手動で合致を作成した後、F2キーで分かりやすい名前(例:「Swing_Arm_Limit」など)を付けておくのが、プロの設計流儀です。

  • `EditRebuild3` の魔法:

抑制状態を変えただけでは、画面上の表示が更新されないことがあります。最後に必ず再構築(Rebuild)をかけることで、即座に動かせる状態へ同期させるのが「落ちないマクロ」の秘訣です。

—

4. 陥りやすいエラーと対処法

初心者が必ずぶつかる壁がいくつかあります。

1. 「Featureが見つからない」:
合致はアセンブリのツリー構造の深い位置にいることがあります。もし階層が深い場合は、`swFeat.GetNextFeature` の再帰処理が必要になります。今回は簡易版として第一階層を検索するようにしていますが、まずはここから始めてください。
2. 「オブジェクト変数またはWithブロック変数が設定されていません」:
これは `Set swAssy = swApp.ActiveDoc` でドキュメントが取得できていない(部品ファイルを開いている等)時に発生します。`If swAssy Is Nothing` という安全装置を必ず入れましょう。

—

次のステップへ

このマクロをツールバーに登録し、アイコンをクリックするだけで、機構の検証速度は劇的に向上します。「手作業」から「コマンド」へ。この意識改革こそが、あなたが単なるCADオペレーターから、設計自動化エンジニアへと進化する第一歩です。

次は、これをさらに発展させて「フォルダ内の全ての合致をまとめてトグルする」といった機能に挑戦してみませんか?

SolidWorks APIは、あなたの設計を加速させる最強の武器です。ぜひ、自分の手でコードを書き、その武器を研ぎ澄ましてください。応援しています!

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