Перейти к публикации

Сохранить все конфигурации детали как отдельные файлы.


Рекомендованные сообщения

Имеется деталь, имеющая 195 исполнений. Детали будут вырезать на ЧПУ (а перед этим нужно будет сделать оптимальную раскладку всех деталей на листах материала). Соответственно возник вопрос - как сохранить полу- или автоматом все конфигурации в отдельные файлы?

Ссылка на сообщение
Поделиться на других сайтах


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

Или на ЧПУ нужно прямо из модели??

Так то ж можно сделать сборку и вставлять скока нужно этих конфигураций (естессно с выбором оной в Свойствах)...

Ссылка на сообщение
Поделиться на других сайтах

Что тут скажешь. USE SOLIDWORKS API.

Под другому автомата не будет, да и полуавтомата тоже.

А ваще подобные вещи без всяких солидов в дешёвых программах для раскроя по - моему делаются.

Ссылка на сообщение
Поделиться на других сайтах

SERoz

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

™¤-=MASTER=-¤™

Дешевые программы раскроя - это для прямолинейных элементов. У меня же криволинейные.

Ссылка на сообщение
Поделиться на других сайтах

kkk

видел на <noindex>офф.форум SW</noindex>SW макрос решающий вашу задачу. К сожалению не сохранился у меня этот макрос.

Ссылка на сообщение
Поделиться на других сайтах

Maze

Спасибо, поищу.

----

Поискал. Нашел. Работает.... :clap_1:

Макрос просто пересохраняет копии под именем конфигурации, одновременно делая ее активной.

Скачал тут: <noindex>http://www.3dcontentcentral.com/macros/mac...spx?id=293131#0</noindex>

Save_configs_as_parts.ZIP

Ссылка на сообщение
Поделиться на других сайтах

Maze

Спасибо, поищу.

----

Поискал. Нашел. Работает.... :clap_1:

Макрос просто пересохраняет копии под именем конфигурации, одновременно делая ее активной.

Скачал тут: <noindex>http://www.3dcontentcentral.com/macros/mac...spx?id=293131#0</noindex>

А кто делает

оптимальную раскладку деталей на листе

?

"хых, не такая это простая работа - ходить в гости" (Винни-Пух, ©)

Ссылка на сообщение
Поделиться на других сайтах

А кто делает

Судя по всему технолог, либо человек, заведующий ЧПУ. Я в данном месте человек новый, еще не в курсе всех тонкостей. :)

Ссылка на сообщение
Поделиться на других сайтах
  • 3 года спустя...

Вот решил заняться некромантией blush2.gif - заинтересовала возможность сохранения конфигов модели в отдельные файлы...

Скачал и запустил этот макрос (на СВ2012м), но чего и как он там делает так и не понял - пару сек. чего-то поморгало и всё dntknw.gif

 

Если кто пробовал или хотя бы понимает как работает этот макрос...

Может чего не понимаю, но куда и как он сохраняет конфиги???

Может он вообще не работает в СВ2012м???

А может есть другие наработки по сохранению конфигов???

Ссылка на сообщение
Поделиться на других сайтах
как работает этот макрос...
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, ext, current As String
    fname = swModel.GetPathName 'Узнаём путь к активному файлу
    ext = Mid(fname, InStr(fname, ".")) 'записывает расширение файла в переменную
    fname = Mid(fname, 1, InStr(fname, ".") - 1) 'в переменную записываем путь к файлу с именем файла
    current = swModel.GetActiveConfiguration.name 'в переменную записывается текущая конфигурация
    Dim configs As Variant
    configs = swModel.GetConfigurationNames 'в переменную записывается весь список переменных
    Dim i As Long
    For i = 0 To UBound(configs) 'тут цикл по всем конфигурациям открытой модели детали
        If Not swModel.ShowConfiguration2(configs(i)) Then 'если программа не может открыть конфигурацию, то ошибка
            Debug.Print ("Could not switch to config " + configs(i))
        Else 'если конфигурация открывается нормально
            Dim name As String
            name = fname + "-" + configs(i) + ext 'записываем путь к новому файлу с учётом имени конфигурации
            Dim err As Long
            Dim warning As Long
            Call swModel.SaveAs4(name, swSaveAsCurrentVersion, _
                swSaveAsOptions_Copy + swSaveAsOptions_Silent + swSaveAsOptions_AvoidRebuildOnSave, _
                err, warning) 'в этих строках сохраняем как копию открытый документ под новым именем
            Dim newdoc As SldWorks.ModelDoc2
            Set newdoc = swApp.OpenDoc(name, swDocPART) ' тут открываем только что сохранённую новую модель детали (для сборок вероятно должно быть swDocASM)
            If Not (newdoc Is Nothing) Then ' Если документ новый документ открылся, то в цикле ниже удаляем все конфигурации кроме одной соответствующей текущей конфигурации в основном файле 
                Dim j As Long
                For j = 0 To UBound(configs) 'цикл по всем конфигурациям нового файла
                    If (i <> j) Then newdoc.DeleteConfiguration (configs(j)) 'когда i=j конфигурация не удаляется и остаётся лишь эта конфигурация, соответствующая текущей обрабатываемой конфигурации в основном документе
                Next j 'отрабатываем цикл удаления конфигураций до их завершения и идём дальше
                newdoc.Save 'сохраняем изменения
                swApp.CloseDoc (name) 'закрываем новый документ после удаления лишних конфигураций
            End If
        End If
    Next i 'отрабатываем цикл изменяя конфигурации основного документа до их завершения и идём дальше
    swModel.ShowConfiguration2 (current) 'Возвращаем основной документ к начальной конфигурации
End Sub 'в результате работы программы рядом с основным файлом получаем ещё файлы с таким же названием как у исходного и дополнительной приписки имени конфигурации




Похоже автор после удаления конфигураций забыл написать строку сохраняющую файл после этих изменений, а у вас возможно отключены сообщения о сохранение изменённых файлов с выбором Не сохранять (Иструменты-Параметры...-Настройки пользователя-Дополнительно), а у автора возможно такое сообщение было сохранено с выбором сохранять. Вероятно там должна быть ещё одна строка перед закрытием файла (вписал в код выше): newdoc.Save.

Ссылка на сообщение
Поделиться на других сайтах

@@Kelny, Спасибо за пояснения :worthy:

Теперь понял, что этот макрос лишь добавляет к имени файла имя конфиги - не более (то же самое - "Сохранить как..." или "Копировать проект") not_i.gif

Что самое прикольное, запустил дома на 2014м - всё работает (файлы создает)...

Ссылка на сообщение
Поделиться на других сайтах
Теперь понял, что этот макрос лишь добавляет к имени файла имя конфиги - не более
Не только, но ещё и удаляет лишние конфигурации, если после этого сохранить изменённый файл, что не было в исходном файле (дописал об этом в предыдущем сообщении).
Ссылка на сообщение
Поделиться на других сайтах

У меня почему-то, в сохраненных файлах, все конфиги остались - только добавились имена конфигураций к имени исходного файла :g:

Может это так в 2014м работает (изменился АПИ и вот получилось так)??

Ссылка на сообщение
Поделиться на других сайтах
У меня почему-то, в сохраненных файлах, все конфиги остались - только добавились имена конфигураций к имени исходного файла

Повторюсь, выше изложил (дописал после кода с описанием) в чём может быть проблема. Возможно причиной тому, что все конфигурации остаются это то что после внесения изменений (удаления конфигураций) файл просто закрывается без сохранения, попробуйте дописать строку newdoc.Save перед закрытием файла swApp.CloseDoc (name) (выше в коде с описанием добавил эту строку)

Ссылка на сообщение
Поделиться на других сайтах

Пардон-с - не дочитал...

Теперь всё сохраняет с удалением "лишних" конфигов :worthy: - правда опять же молча (без вопросов и сообщений)...

Получилось довольно удобно (ранее это же делал ручкамы)...

 

Завтра попробую на 2012й версии солида...

 

friends.gif

Ссылка на сообщение
Поделиться на других сайтах
правда опять же молча (без вопросов и сообщений)...
 Хотите покликать мышкой по кнопкам всплыающих сообщений добавьте что нибудь вроде: 

 

 

If MsgBox("Текст содержащий вопрос", vbYesNo, "Название сообщения") = vbYes Then
  Selection = "Нажата ДА"
Else
  Selection = "Нажата Нет"
End If
Ссылка на сообщение
Поделиться на других сайтах
Хотите покликать мышкой по кнопкам всплыающих сообщений добавьте что нибудь вроде:
Ну, ДА и НЕТ не особо нужно, просто думал, что будет вопрос типа "куда сохранить"...

Ну опять же не особо нужно...

 

После тренировки в 2012м, обозначилось, что этот макрос не шипко любит длинный путь к файлу...

Когда перенес файл поближе к корню диска - всё поехало...

 

Вообщем, Kelny - спасибо за помощь, всё получилось...

hi.gif

Ссылка на сообщение
Поделиться на других сайтах
  • 4 месяца спустя...

подниму тему, а можно сделать так, чтобы отдельные файлы сохранялись в форматах stl, step, pdf3D ?

Ссылка на сообщение
Поделиться на других сайтах
  • 1 год спустя...

@Сержи Да. Я делал себе сохранение в STEP. Немного изменив код, можно сохранять и в другие форматы

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

 

Изменено пользователем aitras
Ссылка на сообщение
Поделиться на других сайтах
9 часов назад, aitras сказал:

Call swModel.SaveAs3(name, 0, 0) 'Сохраняем как STEP открытый документ

это не нужно. Метод возвращает int, и судя по тому, что это устаревшая функция, лучше этот тип переменной использовать. В случае успеха = 0, провала = 1.

Ну или вообще всю левую часть опустить.

Изменено пользователем streamdown
Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.




×
×
  • Создать...