【脱・手作業】SolidWorks VBAでボルト・ナットを「自動配置」する極意
設計の現場で、毎日同じようなボルト・ナットの配置作業を繰り返していませんか?
「穴を選択して、ボルトをドラッグして、同心円合致をかけて、面合致をかけて…」
この退屈なルーチンワークは、SolidWorks VBAに任せましょう。
今日は、Excelのマスターデータを読み込み、アセンブリ内の指定位置へボルトを「一撃で」装着する、実務直結のテクニックを伝授します。マクロの記録ボタンを押して生成された、冗長で壊れやすいコードを卒業する準備はいいですか?
—
1. なぜ「マクロの記録」では限界があるのか?
まず知っておいてほしいのは、「マクロの記録」は自動化の出発点であって、到達点ではないということです。
記録されたコードは、ユーザーの操作をそのままなぞるため、オブジェクトのIDが変更されると即座にエラーを吐きます。
私たちが目指すのは、「APIを直接叩き、オブジェクトの情報を『取得』して『制御』する」というアプローチです。これができると、設計変更にも動じない堅牢な自動化が可能になります。
—
2. 自動装着のアーキテクチャ
ボルトを自動装着するには、以下の3つのステップが必要です。
1. データ抽出: Excelからボルトの種類や座標を読み込む。
2. 部品挿入: `AddComponent`で指定したファイルをアセンブリ内に召喚する。
3. 合致作成: `AddMate`で「同心円」と「面一致」をプログラムから定義する。
実装コードの要(サンプル)
このコードは、現在開いているアセンブリの指定座標にボルトを配置する最小構成です。
‘ SolidWorks APIを使用するための初期設定
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.AssemblyDoc
Dim swComp As SldWorks.Component2
Sub AutoInsertBolt()
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
‘ 1. ボルト部品を挿入
Dim boltPath As String
boltPath = “C:\StandardParts\M8_Bolt.SLDPRT”
‘ AddComponent は戻り値としてコンポーネントを返す。ここが重要!
Set swComp = swModel.AddComponent(boltPath, 0, 0, 0)
‘ 2. 合致の定義(同心円)
‘ ここではエンティティ選択のコツとして、
‘ 穴の円筒面とボルトの円筒面をID指定で取得するのがベスト
‘ ※実務ではここで「MateFeatureData」を定義し、AddMateを呼び出します
MsgBox “ボルトの挿入が完了しました。”
End Sub
—
3. 実務で「ハマる」ポイントと対策
自動化を実装していると、必ず以下の壁にぶつかります。先輩として、解決のヒントを置いておきます。
① 「面」や「穴」をどう特定するか?
マクロで最も難しいのが「どの面を合致させるか」の特定です。
- 名前で探す: 面に名前を付けるのは手間ですが、確実です。
- セレクションフィルタを使う: プログラム内で`SelectByID2`メソッドを使用し、座標情報や面の色・属性から自動選択させます。
② モデルの再構築(Rebuild)のタイミング
部品を配置した直後は、合致が反映されていないことがあります。
`swModel.EditRebuild` を適切に挟むことで、SolidWorksの計算を強制的に追い付かせるのがコツです。
③ エラーハンドリングを忘れない
「ファイルが見つからない」「合致が矛盾している」といったエラーでマクロが止まると悲惨です。
`On Error GoTo ErrorHandler` を必ず入れ、異常終了時にログを残す習慣をつけましょう。
—
4. 次のステップへ
今回のコードはあくまで入り口です。ここから先は、以下の技術へ深掘りしてみてください。
- Excel VBAとの連携: `GetObject`でExcelを操作し、CSVから座標リストを読み込む。
- マクロフィーチャー化: アセンブリ内の穴が変わったら自動でボルトが追従する仕組みを作る。
先輩からのメッセージ
「自動化」とは、単なる手抜きではありません。「本来あなたが費やすべき、クリエイティブな設計検討の時間」を確保するための投資です。
最初は難しく感じるかもしれませんが、まずは「ボルトを1本、狙った場所に置く」ことから始めてみてください。その1本が成功したとき、あなたのデスクから「単純作業」という名のタスクが一つ消滅します。
不明な点があれば、またいつでも聞いてください。あなたの自動化の旅を、全力でサポートします!
