• Объявления

    • admin

      Анонсы постов вашего блога в группах паяльника   04.09.2016

      Самые интересные посты будут анонсироваться в группах VK и FaceBook. Охват одного поста составляет несколько тысяч человек. Пример анонса записи про книгу Sprint Layout: в группе VK, в группе Facebook.  Поэтому если вы считаете, что ваш пост будет интересен аудитории, то не стесняйтесь - пишите, сделаем пост!

ОколоCADовое

  • записей
    25
  • комментария
    54
  • просмотров
    3 276

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

aitras

1 077 просмотров

При создании 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

Скачать

  • Одобряю 2


7 комментариев


Рекомендуемые комментарии

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

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

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

Изменено пользователем Ulis

Поделиться комментарием


Ссылка на комментарий

Добрый день.

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

Поделиться комментарием


Ссылка на комментарий

ОК. Это нормально. Таким же способом изучал Solid Edge ))
 

Поделиться комментарием


Ссылка на комментарий

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

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

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

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

Поделиться комментарием


Ссылка на комментарий

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

PD.SLDPRT

Поделиться комментарием


Ссылка на комментарий

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

Изменено пользователем de.dmitry

Поделиться комментарием


Ссылка на комментарий

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Комментарии блога

    • Помню, делал я как-то проводку в одном магазине. Заказчик попросил, чтоб был "полный фарш": много автоматов, пофазные реле напряжения, куча УЗО и главное - хорошая заземляющая магистраль. Я сделал все, как он просил, а на следующий день сварщик должен был сварить контур заземления и соединить его с выведенным мною заземляющим проводником. Но сварщик очень не вовремя ушел в запой и контур отложился на потом, а потом вообще забылся. Пока занимались документальной волокитой с энергопередающей организацией, решили (без моего ведома) подключить магазин длиннющим кабелем по временной схеме, запустили кучу техники и холодильной аппаратуры и целый день радовались жизни. Ночью у одного из приборов пробила фаза на корпус и, соответственно на всю "мощную" заземляющую магистраль. И тут началась настоящая цветомузыка - приборы друг за другом начали выходить из строя, а один таки загорелся. Магазин быстро отключили, потушили, созвали представителей обслуживающих фирм и меня, естественно, и начались разборки. Представители недоумевали, как такое могло случится, что практически все сгорело и ни один автомат, ни одно УЗО не выбили, а реле напряжения с функцией "память" не показали ни одного аварийного режима. Заказчик в процессе разборок, конечно, вспомнил про заземление и намеками попросил меня не палить контору. После я ему объяснил, что для работы УЗО не было позабытой "опорной точки", а автоматы молчали из-за временной схемы подключения, которая была настолько гнилой, что тока КЗ не хватило чтоб быстро выбить даже самый слабый из них.
    • Верно подмечено. Может оно и к лучшему. Кроме шуток: один разок от заземления сожгли "ямаху", а в ней была вся фонэра. Вот это был облом! Ещё сожгли усилитель DISCO-240C. ещё что-то, уже не помню. Всему виной оказалась неисправная цветомузыка. в ней не было гальванической развязки от сети. если-бы не это злощасное заземление - так бы всё и работало. Ну убило бы кого нибудь.это не беда. Главное аппаратура целая Вот что бывает когда "ламеры" лезут не в своё дело. Проверять блоки питания не умеют. тыкают в ризетку и всё! Молодцы!!! Но нет худа без добра. зато нам калымы прилетают. Так если что, это не я заземлял! Без меня нашлись специалисты, а мне потом довелось это всё ремонтировать.
    • Так может надо аппаратуру чинить? По мне, так пусть лучше горит аппаратура, чем исполнитель на концерте корчится в конвульсиях. (Хотя, смотря какой исполнитель).
    • работал когда то на одном заводе, так там в мастерской по ремонту электронной техники какой то идиот поставил металлические столы и ... естественно их заземлили  я как это "почувствовал", свой сразу же отключил, сказав, что в мазохисты не записывался. после меня и другие начали отключать заземление, а до этого мучились на "электрическом стуле" 
    • Как уже Вам ответили на этот вопрос: делать нечего не надо. Я тоже согласен. Статья интересная и познавательная. Тут смысл, не у кого длиннее, а в живом общении и совместном решении того или иного вопроса. Продолжайте публиковать свои схемы. Товарищи. вот вы говорите: современные стандарты...  провод заземления... У меня вопрос: каким образом заземление может защитить от поражения током? В смысле, в данной схеме? Что одной рукой нужно держаться за "землю" а второй тыкать стабилитрон? Это здесь ни при чём! Другое дело УЗО, вот это уже что-то. И по поводу заземления хочу сказать. оно и представляет самую большую опасность!!! Фаза привязана к заземлению, это всё-равно что нулевой провод. Особенно опасно заземлять бытовую/эстрадную аппаратуру с линейным блоком питания. Говорю не по инструкции. а из личной практики. Заземления в некоторых случаях становится медвежьей услугой.Хочешь как лучше. а в результате тупо жгёшь аппаратуру.Да и к тому-же это представляет опасность для жизни, не забывайте о разности потенциалов между фазой и землёй!!!
  • Записи блога