SolidWorks自動化の真髄:Excel仕様書からパーツを一括生成する「完全自動ビルド」の設計図
こんにちは。日々、膨大なCAD作業を自動化の力で瞬殺しているエンジニアです。
「マクロの記録」ボタンを押して、生成されたコードを眺めて満足していませんか?それだけでは、単なる「作業の自動再生」に過ぎません。真の自動化とは、「データから設計意図を読み取り、CADを自在に操る」ことです。
今日は、Excelで管理された数百種類のパーツ仕様を、SolidWorksで一括生成する「パラメトリック自動ビルド」の核心をお話しします。これを理解すれば、あなたの業務効率は次元が変わります。
—
1. なぜ「外部データ連携」なのか?
CADファイルの中に数値をハードコーディングしてはいけません。仕様変更があったらどうしますか?100個のファイルを一つずつ開いて修正しますか?
「データ(Excel/DB)」と「ロジック(VBA)」と「描画(SolidWorks)」を分離する。 これが堅牢な自動化の鉄則です。Excelをマスターデータにすることで、非エンジニアの設計者でも仕様を管理できるようになります。
—
2. 開発の全体像:ADODBでデータを吸い上げる
SolidWorks VBAからExcelを操作する場合、`Excel Object Library`を参照設定する手もありますが、あえておすすめしたいのが「ADODB」です。SQLのようにデータを抽出できるため、膨大な仕様リストから特定の行だけを抜き出すといった処理が劇的に速くなります。
準備するもの
1. 仕様書(Excel): A列に品番、B列に幅、C列に高さ…と並んだリスト。
2. テンプレート(SolidWorks): あらかじめスケッチと拘束が設定されたパーツファイル。
—
3. 実践コード:パラメトリック一括生成の心臓部
以下のコードは、Excelからデータを読み込み、モデルの寸法値を更新して別名保存するプロセスの骨子です。
Option Explicit
‘ SolidWorks APIの定数使用を宣言
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swDim As SldWorks.Dimension
Sub BatchPartGenerator()
‘ 1. SolidWorks起動と接続
Set swApp = Application.SldWorks
‘ 2. Excelデータの読み込み用接続(ADODBの例)
Dim conn As Object: Set conn = CreateObject(“ADODB.Connection”)
Dim rs As Object: Set rs = CreateObject(“ADODB.Recordset”)
‘ ※実際の環境に合わせて接続文字列を調整してください
conn.Open “Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Specs\PartsList.xlsx;Extended Properties=’Excel 12.0 Xml;HDR=YES;'”
rs.Open “SELECT FROM [Sheet1$]”, conn
‘ 3. レコードセットをループしてパーツ生成
Do Until rs.EOF
‘ テンプレートを開く
Set swModel = swApp.OpenDoc6(“C:\Templates\BasePart.SLDPRT”, swDocPART, swOpenDocOptions_Silent, “”, 0, 0)
‘ 寸法の更新(ここがパラメトリックの要!)
Set swDim = swModel.Parameter(“D1@Sketch1”) ‘ D1@Sketch1は実際の寸法名に合わせる
swDim.SystemValue = rs(“Width”).Value 0.001 ‘ メートル単位への変換を忘れずに!
‘ モデルの再構築
swModel.ForceRebuild3 False
‘ 別名保存
swModel.SaveAs2 “C:\Output\” & rs(“PartNumber”).Value & “.SLDPRT”, 0, False, False
swModel.CloseDoc
rs.MoveNext
Loop
‘ 4. 後処理
rs.Close: conn.Close
MsgBox “全パーツの生成が完了しました。”
End Sub
—
4. 初学者が陥りやすい「3つの罠」
このコードを動かす際、多くの人が以下の壁にぶつかります。
① 単位系の罠
SolidWorksのAPIは内部的に「メートル法(m)」で動いています。Excelに「100mm」と書いてあっても、コード上では「0.1」と変換しないと、巨大なパーツができてしまいます。単位変換はコード内で厳格に管理しましょう。
② 再構築(Rebuild)のタイミング
寸法を変えた直後に保存しても、モデルが正しく計算されていないことがあります。`swModel.ForceRebuild3 False` を必ず挟み、モデルが安定してから保存する癖をつけてください。
③ 参照設定の管理
`SldWorks 20xx Type Library` への参照設定を忘れるとコンパイルエラーになります。ツールメニューの「参照設定」から、インストールされているライブラリにチェックが入っているか確認しましょう。
—
5. 次のステップへ:伝説のアーキテクトからの助言
ここまでの処理ができるようになったら、次は「エラーハンドリング」です。
もしExcelのデータが空だったら?もし同名ファイルが既にフォルダにあったら?
実務で信頼されるマクロは、「壊れないマクロ」です。`On Error GoTo` を活用し、ログファイルに「どのパーツが失敗したか」を書き出せるようになれば、あなたはもう初学者ではありません。
自動化は「楽をするため」にあるのではなく、「本来の創造的な設計業務に集中するため」にあります。このバッチ処理で時間を創出し、ぜひ素晴らしい設計を生み出してください。
何か詰まったら、いつでも戻ってきてください。ここには答えがあります。応援しています。
