Найти в Дзене

Макрос Сохранение в PDF / 3D PDF

Добрый день!
Сегодня рассмотрим макрос, который сохраняет в PDF. Его особенность в том что в зависимости от типа чертежа он сохраняет по-разному, Чертежи в привычный 2D PDF, а вот детали и сборки в 3D PDF. Сразу хочу оговориться,
что я не явлюсь программистом и еще многих процессов не понимаю, поэтому в терминологии могу путаться. Ниже привожу код с подробными комментариями, если его вставить в редактор по идеи должно заработать. Объявляем переменные, обращаем внимание на типы данных!
Dim FileName As String
Dim swExportPDFData As SldWorks.ExportPdfData
Dim swModel As SldWorks.ModelDoc2
Dim swApp As SldWorks.SldWorks
Dim Msg, Style, Title, Help, Ctxt, Response, MyString Sub main() 'Начало макроса Set swApp = Application.SldWorks 'Получаем экземпляр приложения, это строка будет всегда при взаимодействии с SolidWorks
Set swModel = swApp.ActiveDoc ' В переменную swModel загружаем(устанавливаем, ссылаемся точно не знаю как) объект ActiveDoc, замечу у этого объекта тип должен быть Sld

Добрый день!
Сегодня рассмотрим макрос, который сохраняет в PDF. Его особенность в том что в зависимости от типа чертежа он сохраняет по-разному, Чертежи в привычный 2D PDF, а вот детали и сборки в 3D PDF. Сразу хочу оговориться,
что я не явлюсь программистом и еще многих процессов не понимаю, поэтому в терминологии могу путаться. Ниже привожу код с подробными комментариями, если его вставить в редактор по идеи должно заработать.

Объявляем переменные, обращаем внимание на типы данных!
Dim FileName As String
Dim swExportPDFData As SldWorks.ExportPdfData
Dim swModel As SldWorks.ModelDoc2
Dim swApp As SldWorks.SldWorks
Dim Msg, Style, Title, Help, Ctxt, Response, MyString

Sub main() 'Начало макроса

Set swApp = Application.SldWorks 'Получаем экземпляр приложения, это строка будет всегда при взаимодействии с SolidWorks

Set swModel = swApp.ActiveDoc ' В переменную swModel загружаем(устанавливаем, ссылаемся точно не знаю как) объект ActiveDoc, замечу у этого объекта тип должен быть SldWorks.ModelDoc2

'Сохраняем текущий документ в том формате в котором он есть, на мой взгляд, это не обязательно, этот кусок из источника где я его подглядел.

swModel.Save3 0, 0, 0

'Получает текущее имя и путь файла

FileName = swModel.GetPathName 'Метод GetPathName, применён в данном случае к Активному документу, он возвращает Путь и имя файла (Пример:"E:\Temp\Солид эксперменты\...\Шаблон роликовый JK.SLDPRT")

'Устанавливает текущие параметры экспорта PDF
Set swExportPDFData = swApp.GetExportFileData(1) 'Про метод GetExportFileData можно подробнее почитать тут ссылка

'Подготавливаем текст и стиль запроса для вывода сообщения, при необходимости рекомендую почитать про работу с MsgBox, в сети информации много найти проблем не составит.

Msg = "Открыть PDF ?"
Style = vbYesNo Or vbInformation Or vbDefaultButton2 ' Define buttons.

'Проверки, чтобы убедиться, что текущий файл является чертежом.
If swModel.GetType = swDocDRAWING Then

'Ниже строкой, используя операторы VBA Left и Len мы обрезаем справа 6 символов (в которых как раз находится расширение файла) и добавляем новое расширение - PDF, результат кладём в переменную FileName.

FileName = Left(FileName, Len(FileName) - 6) & "pdf"

В переменную Response возвращается значение, какая кнопка была нажата при выводе сообщения (открывать PDF после сохранения или нет)

Response = MsgBox(Msg, Style, Title, Help, Ctxt)
If Response = vbYes Then '
Проверяем была ли нажата кнопка YES
MyString = "Yes" '
Yes, было нажато записываем в переменную

swExportPDFData.ViewPdfAfterSaving = True 'Команда добавляет просмотр после сохранения (если True)
Else ' Если нажали No.
MyString = "No" ' записываем в переменную No.
End If
'
Команда сохранения PDF с учётом настроек swExportPDFData
swModel.Extension.SaveAs FileName, 0, 0, swExportPDFData, 0, 0

Else 'В случае если документ не является Чертежом
FileName = Left(FileName, Len(FileName) - 7) & " 3D.pdf"

'Сохраняем как 3D pdf

'Устанавливая значение истина (True) методу ExportAs3D, мы говорим, что хотим сохранить в формате 3D PDF.

swExportPDFData.ExportAs3D = True
Response = MsgBox(Msg, Style, Title, Help, Ctxt)

If Response = vbYes Then ' Проверяем
MyString = "Yes" ' Нажали на Yes.

swExportPDFData.ViewPdfAfterSaving = True 'Добавляет просмотр после сохранения (если True)

Else ' Если нажали No.
MyString = "No"
End If

'Команда сохранения PDF с учётом настроек swExportPDFData
swModel.Extension.SaveAs FileName, 0, 0, swExportPDFData, 0, 0

MsgBox "Сохранили 3D" 'Выводим сообщение

End 'Завершаем макрос

End If

MsgBox "Сохранили 2D" 'Выводим сообщение

End Sub

Данный макрос показываем, как пользоваться методом swExportPDFData, который позволяет указать открывать документ после сохранения или нет и в каком формате сохранять PDF или 3D PDF.

Надеюсь всё понятно, если нет пишите, попытаюсь разъяснить.