【入門編】【アセンブリ構築の自動化】AddMate5を使った部品同士の合致(Mating)プログラムの書き方 – SolidWorks VBA解析バイブル

スポンサーリンク

SolidWorks VBAを掌握せよ:AddMate5で実現する「自動合致」の極意

こんにちは。SolidWorksのAPIという深淵に足を踏み入れた皆さん、ようこそ。

「マクロの記録」ボタンを押して生成された、冗長で解読不能なコードに絶望したことはありませんか? あれはあくまで「操作の軌跡」であって、我々エンジニアが求める「自動化のロジック」ではありません。

今回は、アセンブリ構築の心臓部である「AddMate5」を使いこなし、部品同士を意のままに拘束するための極意を伝授します。これさえ理解すれば、手作業で何時間もかけていたアセンブリ作成が、わずか数秒の実行で完了するようになります。

1. なぜ「AddMate5」なのか?:APIの裏側を知る

SolidWorksの合致APIには歴史があり、かつては`AddMate`や`AddMate3`などが使われてきました。しかし、現代のSolidWorks APIにおいて、最も安定し、かつ柔軟なのが`AddMate5`です。

このメソッドの強力な点は、「合致のタイプ」「整列の方向」「オフセット距離」を一つの関数に凝縮できることにあります。

まずは、基本となるオブジェクトの階層構造を頭に叩き込んでください。

  • SldWorks: アプリケーションそのもの(親)
  • ModelDoc2: 開いているアセンブリファイル
  • AssemblyDoc: アセンブリ特有の操作(部品追加や合致など)

この構造を理解せずして、自動化は語れません。

2. 実践コード:部品をピタリと一致させる

以下に、アセンブリ内の2つの面を選択し、それらを「一致(Coincident)」させるための実用コードを記述します。

‘ 【重要】参照設定で “SolidWorks 20XX Type Library” を追加してください
Sub AutoMate_Example()
Dim swApp As SldWorks.SldWorks
Dim swAssy As SldWorks.AssemblyDoc
Dim swModel As SldWorks.ModelDoc2
Dim swMateFeature As SldWorks.Feature

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

‘ 1. 合致させたい面をプログラム的に選択する(実際はIDや面情報で取得)
‘ ここでは既に画面上で2つの面が選択されている前提とします

‘ 2. AddMate5の呼び出し
‘ 引数: タイプ, 整列, 反転, 距離, 許容値, …
Set swMateFeature = swAssy.AddMate5( _
swMateType_e.swMateCOINCIDENT, _
swMateAlign_e.swMateAlignALIGNED, _
False, 0#, 0#, 0#, 0#, 0#, 0#, 0#, 0#, False, False, 0, swMateError)

‘ 3. 再構築(Rebuild)は必須の儀式
swModel.EditRebuild3
End Sub

コードの重要ポイント

  • `swMateType_e`: ここで「一致」「同軸」「平行」などを指定します。ここを間違えると、アセンブリは崩壊します。
  • `swMateAlign_e`: どちら向きに合致させるか(揃えるか、逆向きにするか)を指定します。
  • `swModel.EditRebuild3`: APIで変更を加えた後は、必ず再構築を走らせてください。これを忘れると、画面上は何も変わっていないように見えます。

3. 現場で陥りやすい「3つの罠」

初学者が必ず突き当たる壁がこれです。覚えておいてください。

1. 選択の不確定性: APIは「現在選択されているもの」を操作します。コードが実行される瞬間に、意図しない面が選択されていないかを確認するロジック(`swModel.ClearSelection2 True`)を必ず先頭に入れましょう。
2. 部品名の変動: ファイル名だけで部品を特定してはいけません。大きなアセンブリでは、`Component2`オブジェクトを正しく取得し、その中の`Face`を取得する手順を踏むのがプロの作法です。
3. エラーハンドリングの欠如: 合致が失敗した際、`swMateError`引数に値が返ります。これをチェックせずに進むと、プログラムは沈黙したままバグを生み出し続けます。

4. 先輩エンジニアからのアドバイス

「マクロの記録」で生成されたコードは、いわば「素人の日記」です。我々が書くべきは「洗練された台本」です。

まずは、「どの面とどの面を合致させるか」をプログラムにどう教えるかというデータ構造を先に設計してください。Excelに部品名と面IDを書き出し、それを読み込んで自動合致させる…そこまで到達できれば、あなたはもう中級者の入り口に立っています。

自動化の本質は、「楽をすること」ではなく、「ミスをゼロにし、設計の試行錯誤を加速させること」にあります。

さあ、エディタを開いてください。まずは一つの合致を成功させることから始めましょう。応援しています!

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