複数のフォーマットにまとめてエクスポートする SolidWorksのマクロ
SolidWorksでモデリングした各部品を中間フォーマットに変換しようとするときは、 指定保存
から拡張子をプルダウンで選んで変換するフォーマットを選びます。しかし対応している形式がとても多いのでプルダウンメニューから探すのがわりと面倒くさいんです。
というわけでマクロを組みます
Excelのマクロでおなじみ、VBAです。UI も Excel のと同じですね。
Excelのマクロは解説している書籍やサイトがたくさんありますが、SolidWorksのマクロを解説している資料は少ないので、まずは操作を記録させてどういうコードが生成されているか観察するところから始めました。
モデルをエクスポートする際、ファイル名を(日付を含めるとか)変更することがほとんどなので、マクロを実行するとファイル名を入力するテキストボックスを開きます。するとエクスポート用のフォルダを作ってそのなかに IGES
、STEP
、STL
、そして パラソリッド
に変換して保存するようにしました。
Option Explicit Dim swApp As Object Dim Part As Object Dim boolstatus As Boolean Dim longstatus As Long, longwarnings As Long Sub main() '変換したファイルを保存するフォルダを設定 Const SAVEFOLDER = "_exported" Dim filename As String Dim message As String Dim format As String Dim warnmsg As String Set swApp = Application.SldWorks Set Part = swApp.ActiveDoc filename = "" warnmsg = "" '保存するファイル名を入力 'While filename = "" filename = InputBox("ファイル名(" + SAVEFOLDER + " フォルダに出力)") 'Wend If (filename = "") Then Exit Sub ChDir (swApp.GetCurrentWorkingDirectory()) If Dir(SAVEFOLDER, vbDirectory) = SAVEFOLDER Then '何もしない Else MkDir (SAVEFOLDER) End If Part.SaveAs (SAVEFOLDER + "\" + filename + ".IGS") Part.SaveAs (SAVEFOLDER + "\" + filename + ".STEP") Part.SaveAs (SAVEFOLDER + "\" + filename + ".x_t") Part.SaveAs (SAVEFOLDER + "\" + filename + ".STL") End Sub
ところが
IGES
STEP
パラソリッド
は出力されるのですが、STL
が出力されません。
Part.SaveAs (SAVEFOLDER + "\" + filename + ".STL")
のところを
Part.SaveAs ("C:\tmp\hoge.STL")
と直接パスとファイル名を指定すれば出力されました。しかしこれでは汎用性がなくて使えません。
結論
書き方や設定を変えてみたりいろいろ試してみたのですが、STL
を最初にエクスポートすると全部出力されました。
Part.SaveAs (SAVEFOLDER + "\" + filename + ".STL") Part.SaveAs (SAVEFOLDER + "\" + filename + ".IGS") Part.SaveAs (SAVEFOLDER + "\" + filename + ".STEP") Part.SaveAs (SAVEFOLDER + "\" + filename + ".x_t")
エクスポートする順番が影響するって何でしょうね。
Windows7 + SolidWorks2015 SP3 のマシンでも、Windows10 + SolidWorks2017 SP3 のマシンでも、どちらも再現したので個別の環境による問題ではなさそうです。
次の目標
アセンブリ内の部品を全部まとめてエクスポート、できたらちょっと楽になるかな?
ネジとか要らない部品まで変換されちゃいますね。
おまけ
STL のビューワは L-Phinus が軽くて使いやすいです。
https://l-phinus.jp/index.html