【SolidWorks自動化の極致】3D PDF自動生成で「図面レス」の未来を切り拓く
こんにちは。SolidWorksの自動化の世界へようこそ。
「マクロの記録」ボタンを押して生成された、冗長で不安定なコードに溜息をついたことはありませんか?
今日お話しするのは、単なる自動化ではありません。SolidWorksのAPIを正しく操り、パーツモデルからリッチな「3D PDF」を生成し、社内サーバーへダイレクトに放流するという、現場のペーパーレス化を加速させるための「アーキテクトの視点」です。
初心者の方も安心してください。一つずつ、本質を噛み砕いて解説します。
—
1. なぜ「3D PDF」なのか?
現場での「図面探しの旅」を終わらせるのが、このツールです。
3D PDFは、Adobe Readerさえあれば誰でもモデルを回転させ、断面を確認できる最強のコミュニケーションツールです。これをVBAで自動化できれば、設計変更のたびに手作業でエクスポートする苦行から解放されます。
—
2. 実装の心臓部:`ExportPdfData` を操る
SolidWorksでPDFを出力する際、避けて通れないのが `ExportPdfData` オブジェクトです。これはPDF出力の「設定ファイル」のようなものです。
基本的な実装フロー
1. `ISldWorks` オブジェクトから現在のドキュメントを掴む。
2. `ExportPdfData` インスタンスを生成する。
3. 3D PDFとしてのプロパティ(ビューやデータ設定)を書き込む。
4. `SaveAs` メソッドで魔法をかける。
実践コード:3D PDF自動生成スクリプト
Sub Export3DPDF_Automated()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swExportPdfData As SldWorks.ExportPdfData
Dim strPath As String
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
‘ 1. モデルが開かれているか確認
If swModel Is Nothing Then MsgBox “モデルを開いてください”: Exit Sub
‘ 2. 保存パスの設定(サーバーパスを想定)
strPath = “C:\Server\Export\” & Left(swModel.GetTitle, InStr(swModel.GetTitle, “.”) – 1) & “.pdf”
‘ 3. PDFエクスポート設定オブジェクトの生成
Set swExportPdfData = swApp.GetExportFileData(swExportDataFileType_e.swExportPdfData)
‘ 4. 3D PDF設定の肝
‘ ここをTrueにすることで、リッチな3Dデータが埋め込まれます
swExportPdfData.ExportAs3D = True
‘ 5. 保存実行
‘ 第2引数に設定オブジェクトを渡すのがポイント!
If swModel.Extension.SaveAs(strPath, swSaveAsVersion_e.swSaveAsCurrentVersion, _
swSaveAsOptions_e.swSaveAsOptions_Silent, _
swExportPdfData, Nothing, Nothing) Then
MsgBox “配信完了: ” & strPath
Else
MsgBox “エラーが発生しました。パスの権限を確認してください。”
End If
End Sub
—
3. 現場のプロが教える「陥りやすい罠」と対策
初心者がここで躓くポイントは、実はコードの書き方ではなく「環境」にあります。
- 罠1:ファイルパスの権限問題
- サーバーへ直接保存する場合、VBAを実行しているユーザーに「書き込み権限」があるか確認してください。エラーコードが返ってこない場合は、パスが正しく生成されているか `Debug.Print` で確認する癖をつけましょう。
- 罠2:ドキュメントタイプの判定不足
- このマクロはパーツファイル専用です。アセンブリで実行すると、構成部品の複雑さから処理が重くなるか、タイムアウトします。冒頭で `swModel.GetType` を使って、パーツ(`swDocPART`)であることをチェックするガード句を入れるのが鉄則です。
- 罠3:メモリリーク(オブジェクトの解放)
- 大きなモデルを扱う場合、`Set swExportPdfData = Nothing` を最後に入れる習慣をつけてください。VBAはメモリ管理が甘いため、連続実行するとSolidWorksが不安定になります。
—
4. 次のステップ:さらなる自動化へ
このコードが動いたら、次は以下に挑戦してみてください。
1. プロパティの自動読込: `GetCustomInfoValue` を使い、ファイル名だけでなく「設計者名」や「日付」を自動でPDFの注釈に書き込む。
2. フォルダ監視: フォルダに新しいパーツが追加されたら自動でPDF化する(これはVB.NETでの常駐アプリが必要になりますが、VBAの応用で到達可能です)。
最後に:先輩からのアドバイス
「マクロの記録」はあくまでスタート地点です。そこから、`ISldWorks` APIの公式ヘルプ(API Help)を眺めるようになれば、あなたはもう初心者ではありません。
SolidWorksの自動化において最も大切なのは、「コンピュータにやらせるべき単調な作業」と「人間が考えるべき設計作業」を完全に切り分けることです。今日書いたPDF出力のコードは、その強力な武器になるはずです。
もしエラーにぶつかったら、それは「より深い知識を得るチャンス」です。応援しています。また次の技術でお会いしましょう。
