【入門編】【外部データ連携】FileSystemObject(FSO)とJSONファイルを活用した柔軟なパラメータ駆動型パーツ自動生成基盤 – SolidWorks VBA解析バイブル

スポンサーリンク

SolidWorks自動化の極意:JSONとFSOで実現する「次世代パラメータ駆動設計」

こんにちは。SolidWorksの自動化の世界へようこそ。
これまで「マクロの記録」ボタンを押して生成される、冗長で修正困難なコードと格闘していませんでしたか?

今日は、そんな泥沼から抜け出し、「外部データ(JSON)を読み込み、SolidWorksのパーツを自在に生成する」という、プロフェッショナルな自動化アーキテクチャの第一歩を伝授します。

Excelは便利ですが、巨大化しやすく、バージョン管理も困難です。現代の設計自動化では、軽量なJSONファイルを設計仕様書とするのが賢者の選択。さあ、一歩先の世界へ足を踏み入れましょう。

なぜ「JSON + FSO」なのか?

SolidWorks VBAにおいて、外部データを扱う際の黄金律は「いかに軽量かつ柔軟に情報を渡すか」です。

  • JSON形式: 構造化データとして極めてシンプル。階層構造を持てるため、複雑なパーツ構成も記述可能です。
  • FSO (FileSystemObject): Windows標準の強力なツール。VBAからファイルシステムを操作するための「手足」となります。

これらを組み合わせれば、「設計値を変えてJSONを保存し、マクロを実行するだけで、異なるサイズのパーツが即座に完成する」という夢のような環境が手に入ります。

1. 準備:JSONファイルを定義する

まず、作業フォルダに `config.json` というファイルを作成してください。これがあなたの「設計図」になります。

{
“Length”: 100.0,
“Width”: 50.0,
“Thickness”: 10.0,
“Material”: “AISI 304”
}

2. SolidWorks VBA実装:設計自動化の心臓部

それでは、コードを見ていきましょう。VBAでJSONを扱うための「Microsoft Scripting Runtime」ライブラリを参照設定に追加してください(VBEの[ツール] > [参照設定]から)。

Option Explicit

‘ 伝説のエンジニアが教える、堅牢なパーツ生成テンプレート
Public Sub BuildPartFromJSON()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim fso As Object
Dim jsonFile As Object
Dim jsonText As String

‘ 1. SolidWorks接続
Set swApp = Application.SldWorks

‘ 2. FSOでJSONを読み込む
Set fso = CreateObject(“Scripting.FileSystemObject”)
Set jsonFile = fso.OpenTextFile(“C:\Design\config.json”, 1) ‘ 1=ForReading
jsonText = jsonFile.ReadAll
jsonFile.Close

‘ ※本番環境ではここで「JSONパース用ライブラリ」を使用して値を抽出します
‘ 今回はシンプルに、考え方を理解するために擬似的に値を代入します
Dim length As Double: length = 0.1 ‘ JSONから取得した値(m単位)

‘ 3. 新規パーツ作成
Set swModel = swApp.NewDocument(“C:\ProgramData\SolidWorks\…\Part.prtdot”, 0, 0, 0)

‘ 4. フィーチャ操作(スケッチ作成・押し出し)
‘ ここをクリアすれば、あなたはもう脱・初心者です!
CreateBaseFeature swModel, length

MsgBox “パーツ生成完了!”, vbInformation
End Sub

Private Sub CreateBaseFeature(model As ModelDoc2, length As Double)
‘ 実際にはここでスケッチを定義し、押し出しフィーチャを生成します
‘ モデルのスケールや単位系に細心の注意を払うのがプロの嗜みです
End Sub

3. 陥りやすい罠と解決策(ここが重要!)

初学者が必ず突き当たる「壁」を、先回りして解説します。

① 単位系(Units)の罠

SolidWorksのAPIは、内部的には「メートル法(m)」で動いています。JSONで `100mm` と書いても、プログラム内では `0.1` と扱う必要があります。これを忘れると、巨大なパーツや極小のパーツが生成され、「あれ?」となる原因になります。

② モデルの再構築(Rebuild)

フィーチャを追加した後は、必ず `swModel.EditRebuild3` を呼び出してください。これを怠ると、画面上の表示と内部のデータが乖離し、予期せぬエラーの温床となります。

③ エラーハンドリング

`fso.FileExists` を使って、JSONファイルが本当に存在するかチェックする癖をつけましょう。プログラムが突然落ちるのを防ぐのは、あなたの「優しさ」です。

先輩からのアドバイス

「マクロの記録」はあくまでも出発点です。しかし、記録されたコードをそのまま貼り付けるだけでは、柔軟な自動化は達成できません。

今回紹介した「JSONを読み込み、関数化(モジュール化)して処理する」という手法は、「保守性が高く、他人に引き継げるコード」を書くための第一歩です。

まずは `config.json` の値を書き換えて、SolidWorks内の寸法が追従して変化する様子を楽しんでみてください。その小さな成功体験が、あなたのエンジニアとしてのスキルを一段引き上げるはずです。

何か分からないことがあれば、いつでも聞いてくださいね。あなたの自動化の旅を、心から応援しています!

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