【入門編】【エクスポート自動化】ModelDoc2.Extension.SaveAsサイレント保存を活用した、STEP・Parasolid・STLのマルチフォーマット一括出力 – SolidWorks VBA解析バイブル

スポンサーリンク

SolidWorks VBA極意:マルチフォーマット一括出力で「保存作業」を自動化せよ

こんにちは。SolidWorksの深淵を覗き込み、APIの海を渡り歩いてきたエンジニアです。

皆さんは、設計業務の最後に「STEPで保存して、次にParasolid、あ、STLも必要だった…」と、何度も名前を付けて保存を繰り返していませんか?その時間、極めて非効率です。

今日は、SolidWorks APIの神髄である`ModelDoc2.Extension.SaveAs`を使いこなし、ワンクリックで複数フォーマットを生成する「究極のサイレント保存」を伝授します。マクロの記録から卒業し、真の自動化エンジニアへの第一歩を踏み出しましょう。

1. なぜ「SaveAs」を極める必要があるのか

多くの初学者は「名前を付けて保存」をGUI(マウス操作)で行いますが、APIの世界では「Extension(拡張機能)」という概念が鍵を握ります。

`ModelDoc2.Extension.SaveAs`メソッドを使えば、SolidWorksの画面をフリーズさせることなく、裏側で静かに(サイレントに)ファイルを書き出すことが可能です。これこそが、業務効率を劇的に変える「自動化の魂」です。

押さえておくべき3つの壁

1. パスの構築: OSが理解できるフルパスを文字列で正しく生成できるか。
2. オプション指定: 保存時の条件(例:STLの精度やSTEPのプロトコル)をどう制御するか。
3. エラーハンドリング: ファイルが既に開いている、保存先がない、といった事態にどう備えるか。

2. 実践:マルチフォーマット一括出力スクリプト

以下のコードは、現在アクティブなパーツファイルを指定したフォルダに、拡張子を変えて一括出力するテンプレートです。現場でそのまま使えます。

‘ SolidWorksマルチフォーマット一括出力スクリプト
Sub ExportMultiFormat()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swExt As SldWorks.ModelDocExtension
Dim savePath As String
Dim folderPath As String
Dim baseName As String

Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc

‘ ドキュメントが開かれているか確認
If swModel Is Nothing Then MsgBox “ファイルを開いてください”: Exit Sub

‘ 出力フォルダ設定(ここではデスクトップの”Export”フォルダを想定)
folderPath = Environ(“USERPROFILE”) & “\Desktop\Export\”
If Dir(folderPath, vbDirectory) = “” Then MkDir folderPath

‘ ファイル名取得
baseName = Left(swModel.GetTitle, InStrRev(swModel.GetTitle, “.”) – 1)
Set swExt = swModel.Extension

‘ — ここから一括出力処理 —
‘ 1. STEP形式
swExt.SaveAs folderPath & baseName & “.step”, swSaveAsVersion_Automatic, _
swSaveAsOptions_Silent, Nothing, 0, 0

‘ 2. Parasolid形式
swExt.SaveAs folderPath & baseName & “.x_t”, swSaveAsVersion_Automatic, _
swSaveAsOptions_Silent, Nothing, 0, 0

‘ 3. STL形式
swExt.SaveAs folderPath & baseName & “.stl”, swSaveAsVersion_Automatic, _
swSaveAsOptions_Silent, Nothing, 0, 0

MsgBox “全フォーマットの出力が完了しました!”, vbInformation
End Sub

3. コードの読み解き:ここを理解すれば怖くない

  • `swSaveAsOptions_Silent`: このフラグが「サイレント保存」の正体です。これがないと、保存のたびにダイアログが表示され、自動化が止まってしまいます。
  • `swSaveAsVersion_Automatic`: ファイル形式のバージョンを自動判別します。特定のプロトコル(AP214など)が必要な場合は、ここをAPIリファレンスに従って調整します。
  • `Environ(“USERPROFILE”)`: PCの環境に依存しないパス指定の定石です。`C:\Users\Name\…`と直書きしてはいけません。コードのポータビリティ(持ち運びやすさ)を意識しましょう。

4. 初学者が陥りやすい罠と対策

① パスに日本語が含まれている

VBAのパス文字列は非常にデリケートです。フォルダが存在しない場合、`SaveAs`はエラーを吐きます。必ず`Dir`関数でフォルダの存在を確認し、なければ`MkDir`で作るという「防衛的なコーディング」を心がけてください。

② モデルが「保存」されていない

APIはディスク上のファイルを参照します。未保存の状態で実行するとパスが取得できずエラーになります。自動化の前に、「保存されていない場合は一度保存を促す」処理を追加するのがプロの流儀です。

最後に:自動化は「あなたの時間」を取り戻すための投資

このスクリプトを使いこなせれば、1日あたり数分、年間で数時間の「単純作業」から解放されます。浮いた時間で、あなたはもっとクリエイティブな設計検討ができるはずです。

SolidWorks APIの世界は奥が深いです。まずはこのコードを動かし、次に「特定の面だけをエクスポートしたい」「図面も一緒にPDFで出したい」といった欲求が出てきたら、それがあなたの成長の証です。

次は、どの機能の自動化に挑戦しましょうか?また次の記事でお会いしましょう。あなたの設計ライフが、より快適なものになることを願っています。

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