June 30

Создание макроса Solidworks для сохранения детали в 3MF, STEP, STL

Для часто выполняемых задач, удобно использовать макросы.

В Solidworks используются макросы на VBA (Visual Basic for Applications), файлы с расширением .swp и .swb.

Инструменты для работы с макросами (запись, воспроизведение, создание и редактирование) можно найти в меню Tools или через поиск по запросу Macro.

Код макроса

Dim swApp As Object
Dim Part As Object
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long
Dim folderFullPath As String

Sub main()

Set swApp = Application.SldWorks

Set Part = swApp.ActiveDoc

' check is .SLDPRT is opened
If Part Is Nothing Then
    MsgBox "[ERROR] No active files found!"
    Exit Sub
End If

' check is active document is .SLDPRT file
If Part.GetType <> swDocPART Then
    MsgBox "[ERROR] Open .SLDPRT first!"
    Exit Sub
End If

FilePath = Part.GetPathName ' Get the full path of the part/assembly file
FileTitle = Part.GetTitle   ' Get the full part name
FileName = Strings.Left(FileTitle, Len(FileTitle) - 7)

PathSize = Strings.Len(FilePath)    ' Get the length of the full path
TitleSize = Strings.Len(FileTitle)  ' Get the length of the part name
FolderSize = Strings.Len(FilePath) - Strings.Len(FileTitle) ' Get the length of the folder

RootFolderName = Strings.Left(FilePath, FolderSize)     ' Truncate to folder name

MfFolderPath = RootFolderName & "3mf\"
StlFolderPath = RootFolderName & "stl\"
StepFolderPath = RootFolderName & "step\"

'checking existing of 3mf, step, stl folders
If Dir(MfFolderPath) = "" Then
MsgBox "[ERROR] Folders '3mf', 'step' and 'stl' not found!"
MfFolderPath = RootFolderName
StlFolderPath = RootFolderName
StepFolderPath = RootFolderName
End If

MfFilePath = MfFolderPath & FileName & ".3mf"
StlFilePath = StlFolderPath & FileName & ".stl"
StepFilePath = StepFolderPath & FileName & ".step"

longstatus = Part.SaveAs3(MfFilePath, 0, 2)
longstatus = Part.SaveAs3(StlFilePath, 0, 2)
longstatus = Part.SaveAs3(StepFilePath, 0, 2)

MsgBox ("3MF, STEP and STL saved!")

'close the document
swApp.CloseDoc FileTitle

End Sub

Отдельные моменты работы макроса:

  • Проверка на наличие файла детали:
If Part Is Nothing Then 
MsgBox «[ERROR] No active files found!» 
Exit Sub 
End If
  • Проверка, что открыт файл детали, а не сборки или чертежа:
If Part.GetType <> swDocPART Then 
MsgBox «[ERROR] Open .SLDPRT first!» 
Exit Sub 
End If
  • Путь к файлу без расширения .SLDPRT:
FileName = Strings.Left (FileTitle, Len (FileTitle) — 7)
  • Проверка на наличие папки 3mf (я храню файлы 3mf, step и stl в отдельных одноимённых папках). Если отдельная папка не найдена, то сохраняем в рядом с файлом детали .SLDPRT:
If Dir (MfFolderPath) = «» Then 
MsgBox «[ERROR] Folders '3mf', 'step', 'stl' not found!» 

MfFolderPath = RootFolderName 
StlFolderPath = RootFolderName 
StepFolderPath = RootFolderName 
End If
  • Сохраняем файлы:
longstatus = Part.SaveAs3(MfFilePath, 0, 2) 
longstatus = Part.SaveAs3(StlFilePath, 0, 2) 
longstatus = Part.SaveAs3(StepFilePath, 0, 2)
  • Закрываем файл детали .SLDPRT:
swApp.CloseDoc FileTitle

Полный код макроса доступен по ссылке https://pastebin.com/UyHKDQm7

I. Создание макроса

1) Открываем Solidworks и переходим → Tools → Macro → New…

Создание нового макроса

2) В открывшемся окне выбираем место хранения макроса и название, открывается пустой шаблон макроса

Окно редактирования макроса

3) В окно редактирования вставляем код из https://pastebin.com/UyHKDQm7 и сохраняем (Ctrl+S или иконка «Дискета»)

Код макроса

II. Добавление кнопки макроса на панель инструментов

1) Создаем пустой документ детали .SLDPRT

Новая деталь

2) В открывшемся окне детали переходим → Tools → Customize…

Меню

3) Далее переходим во вкладку → Shortcut Bars → Macro

Меню

4) Из поля Buttons перетягиваем крайнюю правую икону в удобное место на панели

5) Открывается меню редактирования кнопки макроса, заполняем поля

Настройка кнопки макроса

а) Macro: выбираем путь к макросу (введенный в пункте I.2 выше)

б) Icon: выбираем иконку (опционально)

в) Tooltip: вводим подпись кнопки

г) Подтверждаем ОК 

III. Проверяем работу макроса

1) Открываем или создаем деталь

Тестовая деталь

2) Нажимаем кнопку макроса. Всплывающее окно сообщает об успешном сохранении файлов

Всплывающее окно с подтверждением

3) Проверяем наличие файлов в папке

Файлы stl, step и 3mf созданы

Готово!

Видео вышеописанных действий: https://youtu.be/VSzb9d2xMxE