【入門編】【初心者向け】アセンブリツリーのコンポーネントに対してプログラムからロールバック操作を行い一時的に形状を隠す方法 – SolidWorks VBA解析バイブル

スポンサーリンク

SolidWorks VBA極意:アセンブリの「隠蔽(Suppress)」をマスターして、自動化の壁を突破せよ

こんにちは。SolidWorksの自動化の世界へようこそ。

「マクロの記録」ボタンを押して、手作業をなぞるだけの段階は卒業しましょう。現場で本当に求められるのは、「アセンブリの構造をプログラムが自在に操り、必要な部分だけを抽出し、処理を行う」という知的な自動化です。

今日は、その第一歩として「特定のコンポーネントを一時的に隠す(抑制/Suppress)」操作を解説します。なぜこれが必要か? アセンブリが重すぎてフリーズする問題や、構造解析前のクリーンアップなど、大規模アセンブリを扱う現場では必須のスキルだからです。

—

1. なぜ「抑制(Suppress)」なのか?

SolidWorksにおいて「抑制」とは、単に非表示にするのとは訳が違います。メモリからその部品の計算負荷を一時的に解放するという、パフォーマンスに直結する操作です。

自動化エンジニアにとって、この操作は「演算のスコープを限定する」ための重要な布石となります。

—

2. 実践コード:コンポーネントを抑制する魔法の鍵

以下のコードは、選択した部品を瞬時に抑制する最小構成のコードです。まずはこれをコピペして、自分の環境で動かしてみてください。

Sub SuppressSelectedComponent()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swSelMgr As SldWorks.SelectionMgr
Dim swComp As SldWorks.Component2

‘ SolidWorksに接続
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc

‘ アセンブリ以外なら終了
If swModel.GetType <> swDocASSEMBLY Then
MsgBox “アセンブリを開いてから実行してください”
Exit Sub
End If

‘ 選択されているコンポーネントを取得
Set swSelMgr = swModel.SelectionManager
Set swComp = swSelMgr.GetSelectedObjectsComponent4(1, -1)

If swComp Is Nothing Then
MsgBox “先にコンポーネントを選択してください”
Exit Sub
End If

‘ 【重要】ここが抑制のコアです
‘ 0: 抑制解除 (Unsuppress)
‘ 1: 抑制 (Suppress)
swComp.Select4 False, Nothing
swModel.EditSuppress2

‘ 画面を最新の状態に更新
swModel.EditRebuild3
End Sub

—

3. 初学者が必ず陥る「3つの落とし穴」

このコードを動かしていると、必ず壁にぶつかります。伝説のアーキテクトから、あらかじめ伝授しておきましょう。

① 「選択」の概念を理解していない

VBAでは「今、何が選ばれているか」が処理のすべてです。上記のコードでは `SelectionManager` を使用していますが、画面上でコンポーネントを正しく選択していないと、コードはエラー(または空振り)を起こします。常に `If swComp Is Nothing` でチェックする癖をつけましょう。

② コンテキストの不一致

アセンブリの「部品」と「アセンブリ内のインスタンス」は別物です。APIを扱う際は、常に「どの階層のコンポーネントを操作しているか」を意識してください。上記のように `Component2` オブジェクトを操作するのが、アセンブリ操作の正道です。

③ 再構築(Rebuild)のタイミング

抑制操作を行った後、SolidWorksの画面上のツリーがすぐに更新されないことがあります。`swModel.EditRebuild3` を適切に呼ぶことで、整合性を保つのがプロの作法です。

—

4. 次のステップ:自動化の深淵へ

この「抑制」をマスターすれば、次は以下のような応用が可能です。

  • 特定の名前を含む部品を一括で抑制する(`GetRootComponent` でツリーを辿る)
  • ある条件を満たす部品だけを残して、他をすべて抑制する(解析用モデルの自動生成)

プログラミングは「書く」ことよりも「構造を理解する」ことの方が重要です。まずはこのコードで、SolidWorksのツリーを自分の手足のように動かしてみてください。

「ここが動いた!」という感動があれば、あなたはもう立派な自動化エンジニアの卵です。分からないことがあれば、いつでもまた聞きに来てくださいね。

—
エンジニアへの助言:
APIリファレンスを恐れず、`swComp.` と打った後に表示されるインテリセンスの候補を眺めてみてください。そこには、あなたがまだ知らないSolidWorksの深淵への入り口が広がっています。

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