Jump to content
  • entries
    34
  • comments
    127
  • views
    26174

[Макросы SolidWorks] Пакетное сохранение конфигураций модели


aitras

12840 views

 Share

При создании 3D-моделей в SolidWorks часто удобно использовать такую вещь как конфигурации. Это разновидности детали или сборки внутри одного файла. Если рассматривать на примере переменного резистора, то конфигурациями удобно делать модели с различными валами:

2017-01-29_11-58-15.png

И если создавать конфигурации в SolidWorks можно при помощи таблиц, то вот сохранение всех конфигураций в раздельные STEP-файлы нужно делать вручную, что крайне неудобно. А если потом заметишь в модели ошибку и недочет, после исправления которого нужно все снова сохранять...

Но в SolidWorks же есть VBA! А значит можно написать макрос, который все это автоматизирует. После некоторого поиска и копания в VBA получился следующий код:

Option Explicit
    Sub main()
    Dim swApp As SldWorks.SldWorks
    Set swApp = Application.SldWorks
    Dim swModel As SldWorks.ModelDoc2
    Set swModel = swApp.ActiveDoc
    Dim swConfig As SldWorks.Configuration
    Set swConfig = swModel.GetActiveConfiguration
    Dim fname, current As String
    Dim step As Long
    Dim configs As Variant
    
    step = swApp.SetUserPreferenceIntegerValue(swStepAP, 214) 'Сохранять в формат STEP AP214
    fname = swModel.GetPathName
    fname = Mid(fname, 1, InStr(fname, ".") - 1) 'Записать путь к файлу с именем файла без расширения
    current = swModel.GetActiveConfiguration.name 'Имя текущей конфигурация
    configs = swModel.GetConfigurationNames 'В переменную записывается весь список конфигураций
     
    Dim i As Long
    For i = 0 To UBound(configs) 'Цикл по всем конфигурациям модели
        swModel.ShowConfiguration2 (configs(i))
        Dim name As String
        name = fname + configs(i) + ".STEP"   'Путь к файлу для новой конфигурации
        Call swModel.SaveAs3(name, 0, 0) 'Сохраняем как STEP открытый документ
    Next i 'К следующей конфигурации
    
    MsgBox ("Saved " + CStr(i) + " file(s)!"), vbInformation, "Done"
    swModel.ShowConfiguration2 (current) 'Возвращаем документ к исходной конфигурации
End Sub

Работает все крайне просто, по комментариям, думаю, будет понятно. Также файл макроса прикладываю отдельно. Останется только его запустить.

Простая версия: Скачать

UPD 14/03/17:

Макросу добавлен интерфейс, позволяющий:

1. Выбирать префикс к именам создаваемых файлов и имя подпапки, создаваемой для сохранения:

2017-03-14_18-58-28.png2017-03-14_18-58-49.png

2. Наблюдать процесс сохранения с отображением процентов и списка созданных файлов:

2017-03-14_18-49-54.png

3. Прерывать выполнение макроса:

2017-03-14_19-02-15.png

Скачать

 Share

11 Comments


Recommended Comments

Приветик.
Я вот за SolidWorks пытался сесть уже раз пять для освоения, но душа как то легла к Solid Edge :)

А сейчас похоже придется всетаки SW осваивать и плотно.
 

Не подскажешь - онлайн курсы/вебинары/книжки - куда тыкнуться сначала?
Желательно не разорваный по кускам материал, а програмное обучение. Но можно и кусками инфы накрайняк.

Edited by Ulis
Link to comment

Добрый день.

Я его осваивал как-то самостоятельно и постепенно с простых моделей. Если и смотрел какие-то видеоуроки для понимания каких-либо инструментов, то совершенно случайные на ютубе. Книг не читал, только встроенную справку. Поэтому подсказать что-то конкретное не смогу.

Link to comment

Добавил макросу интерфейс, который позволяет:

1. Выбирать префикс к именам создаваемых файлов и имя подпапки, создаваемой для сохранения.
2. Наблюдать процесс сохранения с отображением процентов и списка созданных файлов.
3. Прерывать выполнение макроса.

2017-03-14_18-49-54.png

Файл приложил выше.

Link to comment

Добрый день, работаю с листовым металлом. Ваш макрос очень бы пригодился, если бы пакетно сохранял конфигурации в формате dxf. Есть пару нюансов, которые не могу обойти. Перед сохранением нужно развернуть модель и при сохранении выскакивает еще одно окно в котором дополнительно нужно жать кнопку сохранить. Буду очень признателен если поможете.

PD.SLDPRT

Link to comment

в dxf - идеальный вариант, но можно и в формате IGES, просто этот формат ест программа на лазере), если получится - с меня пиво)!!

Edited by de.dmitry
Link to comment

Здравствуйте, а можно тоже самое только для файлов библиотеки сварных конструкций в формате *.SLDLFP ?

Edited by Rolles217
Link to comment

А можно ли сделать так, что бы при запуске макроса в первый раз, он спрашивал куда надо сохранить файл ?
а потом сохранял эти значения 

Link to comment

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Add a comment...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...