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

Заморозка элементов


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

Подскажите, пожалуйста, можно ли автоматизировать процесс заморозки для большого числа файлов?

Т.е. чтоб не открывать один за другим. SW 2016.

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


7 часов назад, Alex1986 сказал:

можно ли автоматизировать процесс заморозки для большого числа файлов?

Т.е. чтоб не открывать один за другим.

Вот такой макрос двигает полосу заморозки и сохраняет детали из окна сборки (можно и в окне детали элементы замораживать).

 В окне запроса ввести 1 - заморозить, 4 - разморозить (sw 2015 и выше должен работать):

Скрытый текст

Option Explicit
    Dim swApp                       As SldWorks.SldWorks
    Dim swModel                     As SldWorks.ModelDoc2
    Dim swAssy                      As SldWorks.AssemblyDoc
    Dim swConf                      As SldWorks.Configuration
    Dim swRootComp                  As SldWorks.Component2
    Dim prtFreeze                   As Integer
    Dim lRet                        As Long
    Dim boolstatus                  As Boolean
    Dim Errors                      As Long
    Dim Warnings                    As Long
    Dim msgFreeze                   As String
    
  Sub TraverseComponent(swComp As SldWorks.Component2, nLevel As Long)
    Dim swChildComp                 As SldWorks.Component2
    Dim swPart                      As SldWorks.ModelDoc2
    Dim swChildModel                As SldWorks.ModelDoc2
    Dim swAssy                      As SldWorks.AssemblyDoc
    Dim swCompConfig                As SldWorks.Configuration
    Dim vChildComp                  As Variant
    Dim sPadStr                     As String
    Dim i                           As Long
  
    For i = 0 To nLevel - 1
        sPadStr = sPadStr + "  "
    Next i
      
    Set swChildModel = swComp.GetModelDoc2
    Set swAssy = swModel
    swAssy.ResolveAllLightWeightComponents (True)
    Set swChildModel = Nothing
  
    vChildComp = swComp.GetChildren
    For i = 0 To UBound(vChildComp)
        Set swChildComp = vChildComp(i)
        Set swChildModel = swChildComp.GetModelDoc2
            If swChildModel.GetType = 2 Then
                TraverseComponent swChildComp, nLevel + 1
            Else
                Set swPart = swApp.ActivateDoc3(swChildComp.GetPathName, False, swDontRebuildActiveDoc, Errors)
                If swPart.IsOpenedReadOnly = False Then

                    lRet = swPart.FeatureManager.EditFreeze2(prtFreeze, "", True, True)
                    swPart.ShowNamedView2 "*Isometric", -1
                    swPart.ViewZoomtofit2

                End If
                swApp.CloseDoc swPart.GetTitle
            End If
    Next i
End Sub
Sub main()
    On Error Resume Next
    
    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc

    swApp.SetUserPreferenceToggle swUserEnableFreezeBar, True
    prtFreeze = InputBox(prtFreeze, "1 - Заморозить, 4 - Разморозить", "Выйти")
        
        If prtFreeze <> 1 And prtFreeze <> 4 Then
          Exit Sub
        End If
        
        If prtFreeze = "1" Then
            msgFreeze = "Геометрия деталей заморожена."
        ElseIf prtFreeze = "4" Then
            msgFreeze = "Геометрия деталей разморожена."
        End If
        
    Set swConf = swModel.GetActiveConfiguration
    Set swRootComp = swConf.GetRootComponent3(True)
    
        If swModel.GetType = swDocPART Then
            lRet = swModel.FeatureManager.EditFreeze2(prtFreeze, "", True, True)
        
        ElseIf swModel.GetType = swDocASSEMBLY Then
        
    TraverseComponent swRootComp, 1
    
    swModel.ShowNamedView2 "*Isometric", -1
    swModel.ViewZoomtofit2
    boolstatus = swModel.ForceRebuild3(False)
    boolstatus = swModel.Save3(swSaveAsOptions_Silent, Errors, Warnings)

            End If
MsgBox msgFreeze

End Sub

 

 

 

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

@Kir95 Не была опыта работы с макросами, скажите, пожалуйста, что с этим делать?

Ссылка на сообщение
Поделиться на других сайтах
24 минуты назад, Alex1986 сказал:

Не была опыта работы с макросами, скажите, пожалуйста, что с этим делать?

Инструменты -> Макросы -> Новый -> Откроется окно сохранения нового макроса (по умолчанию - папка для макросов, указанная в настройках программы). Сохраните с понятным названием, после этого откроется окно редактирования макроса, удалите в окне все записи и вставьте в него код из предыдущего поста, сохраните (Ctrl+S)  и нажмите на клаве F5, чтобы запустить макрос. Откроется окно запроса, ввести 1 - заморозить все детали в сборке, 4 - разморозить. Солид откроет по очереди все файлы деталей в сборке, полоса заморозки в деталях переместится вниз, солид сохранит и закроет каждый файл детали.

А если хотите в солиде

13 часа назад, Alex1986 сказал:

автоматизировать процесс

почитайте раздел справки:

http://help.solidworks.com/2016/russian/solidworks/sldworks/c_recording_playing_macros.htm

Ничего сложного :smile:, пробуйте.

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

@Kir95 Спасибо!

А как вместо знаков вопроса поставить обычные буквы?

 

ad725302f6e6.jpg

 

3a90fbadc295.jpg
 

 

10 часов назад, Kir95 сказал:

Ничего сложного :smile:, пробуйте.

Начать пробовать посоветуете с записи своих действий?

Ссылка на сообщение
Поделиться на других сайтах
22 минуты назад, Alex1986 сказал:

А как вместо знаков вопроса поставить обычные буквы?

Это проблема копирования-вставки на компе с кириллицей. Откройте макрос для редактирования (Инструменты -> Макросы -> Редактировать), перепишите в коде текст, где знаки вопроса.

5abb38b4e1277_.JPG.0fb06ecc382f124de9c77acebdddfedd.JPG

Ссылка на сообщение
Поделиться на других сайтах
6 часов назад, Alex1986 сказал:

Начать пробовать посоветуете с записи своих действий?

 

Это один из способов получения нужного кода.. Но записывается не все.. Поэтому другой способ - изучить справку по API SW.. Это если есть опыт программирования..

Если опыта нет, надо проштудировать книжку по нужному языку.. Я, например, за неделю осилил "VBA для чайников" вместе с набором примеров в редакторе.. Ещё за неделю для проверки своих возможностей попытался повторить на vba калькулятор WinXP.. Большинство функций сделал..

Ссылка на сообщение
Поделиться на других сайтах
59 минут назад, Alex1986 сказал:

Макрос замечательно работает на Win7 и не работает на Win10...

У меня Win10 и всё ок. Бывает, из-за библиотек каких-то, посмотрите в редакторе макроса Tools -> References, совпадают или нет с моими. Если нет каких-то, поставьте галки на недостающих:

Скрытый текст

5abbb9e84b678_-libraries.JPG.991ef11ffeaa7bf4dbd57da07de9a36b.JPG

Не работает, это ошибку выдаёт или просто не запускается?

Ссылка на сообщение
Поделиться на других сайтах
28 минут назад, Alex1986 сказал:

не запускается, только открывается

Ну во первых снимите галочки со всех Solidworks 2016 и замените на аналогичные для своей версии Solidworks 2015.

 

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

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

solidworks object library feature not supported

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

Ссылка на сообщение
Поделиться на других сайтах
3 часа назад, Kelny сказал:

снимите галочки со всех Solidworks 2016 и замените на аналогичные для своей версии Solidworks 2015.

 

А у меня 2016 версия...

 

профиль не скорректировал при переходе :)

Ссылка на сообщение
Поделиться на других сайтах
11 минуту назад, Alex1986 сказал:

А у меня 2016 версия...

 

профиль не скорректировал при переходе :)

Ну тогда наоборот, то что 2015 галки снять и заменить на 2016.

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

@Kelny На компьютере с Win7 точно такой же набор компонентов, только макросы работают...

 

48 минут назад, Kelny сказал:

то что 2015 галки снять и заменить на 2016

А где их взять?

Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, Alex1986 сказал:

А где их взять?

Так на вашей же картинке:

12fa59be3ee2.jpg

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

@Kelny Картинка одинаковая на компе с Win7 где все работает и на компе с Win10 где не работает.

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

@Alex1986 а какие-нибудь другие макросы работают на компе в вин10? Есть тема с траблом запуска любых макросов после обновления винды (Windows update KB3072630).

Хоть тема и давняя, но может быть именно вашим случаем. Нужно было отключать обновление, потом восстанавливать с диска солид и снова включать обновление.

https://forum.solidworks.com/thread/97769

 

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

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

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

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

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

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

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

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

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

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

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




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