SolidWorks VBAを掌握せよ:フォルダ内の部品を一瞬でアセンブリへ召喚する極意
設計現場の皆さん、こんにちは。毎日、何十もの部品を一つずつ「挿入」ボタンで呼び出し、手作業で合致させる……そんな「手仕事」に疲れていませんか?
SolidWorksの自動化は、単なる「効率化」ではありません。それは「設計者としての知的な時間を奪い返すための武装」です。
今回は、初心者の方が必ずぶつかる壁、「部品の自動配置」を突破しましょう。`InsertComponent4`メソッドを軸に、フォルダ内の部品を一括でアセンブリに召喚する、実戦的なコードを伝授します。
—
1. なぜ「手作業」から脱却すべきなのか
マクロの記録機能で生成されるコードは、いわば「その場しのぎのメモ」です。しかし、私たちが目指すのは、「どんなファイル構成でも柔軟に処理できる堅牢なコード」です。
部品の呼び出しには `InsertComponent4` を使いますが、これには「どのファイルを、どの座標に、どう置くか」という情報をプログラムに教え込む必要があります。
—
2. フォルダ内の部品を一括配置するコード
まずは、このコードを見てください。指定したフォルダ内のすべての部品ファイル(.sldprt)を拾い上げ、アセンブリへ配置します。
Sub AutoAssemblyImport()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swAssy As SldWorks.AssemblyDoc
Dim fso As Object, folder As Object, file As Object
Dim folderPath As String
‘ SolidWorksオブジェクトの接続
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
‘ アセンブリが開かれているか確認
If swModel Is Nothing Or swModel.GetType <> swDocASSEMBLY Then
MsgBox “アセンブリファイルを開いてから実行してください。”
Exit Sub
End If
Set swAssy = swModel
‘ フォルダパスを指定(※適宜変更してください)
folderPath = “C:\MyDesigns\PartsLibrary\”
Set fso = CreateObject(“Scripting.FileSystemObject”)
Set folder = fso.GetFolder(folderPath)
‘ 部品を一つずつ巡回して挿入
For Each file In folder.Files
If LCase(fso.GetExtensionName(file.Path)) = “sldprt” Then
‘ InsertComponent4: ファイルパス, 座標(x,y,z)を指定して配置
‘ 戻り値としてコンポーネントオブジェクトが返る
swAssy.AddComponent4 file.Path, “”, 0, 0, 0
End If
Next file
swModel.ViewZoomtofit2 ‘ 全体を表示
MsgBox “部品の配置が完了しました。”
End Sub
—
3. このコードを理解するための「3つのポイント」
① `AddComponent4` の真実
実は `InsertComponent4` は、呼び出すだけでアセンブリのツリーに名前を追加するだけでなく、実体(ファイル)とのリンクを確立します。
第2〜第5引数で配置座標を指定できますが、最初は `0, 0, 0` で原点に配置するのが一番の近道です。
② ファイルシステムオブジェクト(FSO)の活用
`Scripting.FileSystemObject` を使うことで、Windows上のフォルダを自由に操作できるようになります。これを知っているだけで、マクロの可能性は一気に広がります。
③ なぜ「アセンブリ環境」か?
部品単体では合致(Mate)は存在しません。アセンブリこそがSolidWorksの「関係性の世界」です。部品を挿入したら、次は「合致」を自動化するステップが待っています。
—
4. 初心者が陥りやすい「エラーの罠」
- 「ファイルが見つからない」エラー: コード内の `folderPath` は、バックスラッシュ(\)で終わるように注意してください。「C:\Test」ではなく「C:\Test\」です。
- 「型が違います」エラー: アセンブリ以外でこのマクロを動かそうとすると発生します。`swModel.GetType` でチェックを入れるのは、プロのエンジニアの基本作法です。
- セキュリティ設定: マクロが動かない場合、[ツール] > [マクロ] > [セキュリティ] から、VBAプロジェクトへのアクセスを許可する必要があります。
—
5. 次のステップへ:合致(Mate)の自動化
部品を置くだけでは、まだ「組み立て」とは言えません。今後は、配置した部品の特定の面(Planar Face)を検出し、`AddMate5` メソッドで自動的に「一致」させる技術が必要です。
これは少しレベルが上がりますが、今回紹介した「部品を呼び出す」という根幹さえマスターすれば、あとは「どの面を繋ぐか」を指定するだけです。
「プログラムは魔法ではない。ただの命令書です。」
あなたが書いたこの数行のコードが、明日からのあなたの設計時間を確実に数十分、数時間と短縮してくれるはずです。
さあ、恐れずに実行ボタンを押してみてください。画面の中に、あなたの指示通りに部品が次々と現れる瞬間は、何度経験しても鳥肌が立つほど快感ですよ。
何か詰まったら、いつでも聞いてください。応援しています。
