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

Макрос. Пакетное сохранение выбранных файлов в IGS формате.


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

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

 

 

Sub SaveSelectedToIGS()
    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    Set swSelMgr = swModel.SelectionManager
    Set swView = swSelMgr.GetSelectedObject6(1, -1)
    
    Dim MySolidBodys() As String
    
    DocIsAssembly = LCase(Right(swModel.GetTitle, 6)) = "sldasm"
    If DocIsAssembly Then X_tupe = "COMPONENT" Else X_tupe = "SOLIDBODY"
    
    For i = 1 To 100
        If swSelMgr.GetSelectedObject6(i, -1) Is Nothing Then Exit For
        If swSelMgr.GetSelectedObject6(i, -1).AddPropertyExtension <> -1 Then 'Исключаем папки если нечайно выделили
            ReDim Preserve MySolidBodys(i - 1)
            MySolidBodys(i - 1) = swSelMgr.GetSelectedObject6(i, -1).Name
        Else
            k = k + 1
        End If
    Next i
    If i - k = 1 Then MsgBox ("Выделите тела или детали, которые нужно сохранить в IGS"): End
    If DocIsAssembly Then 'Cкрыть все
        SelectAllComponents
        swModel.HideComponent2
    Else
        swModel.ClearSelection2 True
        swModel.FeatureManager.HideBodies
    End If
    
    For Each X In MySolidBodys
        boolstatus = swModel.Extension.SelectByID2(X, X_tupe, 0, 0, 0, False, 0, Nothing, 0) 'Выделить
        If DocIsAssembly Then 'Показать нужный элемент
            swModel.ShowComponent2
        Else
            swModel.FeatureManager.ShowBodies
        End If
        swModel.ClearSelection2 True 'Снять выделение
        MyPathName = Left(swModel.GetPathName, Len(swModel.GetPathName) - Len(swModel.GetTitle)) & Left(swModel.GetTitle, Len(swModel.GetTitle) - 7) & "_" & X & ".IGS"
        longstatus = swModel.SaveAs(MyPathName)
        If DocIsAssembly Then 'Cкрыть все
            SelectAllComponents
            swModel.HideComponent2
        Else
            swModel.ClearSelection2 True
            swModel.FeatureManager.HideBodies
        End If
    Next X
    If DocIsAssembly Then 'Показать все
        SelectAllComponents
        swModel.ShowComponent2
    Else
        swModel.ClearSelection2 True
        swModel.FeatureManager.ShowBodies
    End If
    swModel.ClearSelection2 True

    Foldername = Left(swModel.GetPathName, Len(swModel.GetPathName) - Len(swModel.GetTitle)) '"\\server\Instructions\"
    Shell "C:\WINDOWS\explorer.exe """ & Foldername & "", vbNormalFocus
End Sub

Sub SelectAllComponents()
    Dim swApp As SldWorks.SldWorks
    Dim swModel As SldWorks.ModelDoc2
    Dim swAssy As SldWorks.AssemblyDoc
    Dim swChildComp As SldWorks.Component2
    Dim vChildComp As Variant
    Dim boolstatus As Boolean
    Dim i As Integer
    
    Set swApp = CreateObject("SldWorks.Application")
    Set swModel = swApp.ActiveDoc
    Set swAssy = swModel
    
    vChildComp = swAssy.GetComponents(False)
    
    For i = 0 To UBound(vChildComp)
        Set swChildComp = vChildComp(i)
        boolstatus = swChildComp.Select3(True, Nothing)
    Next i
End Sub
 

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


UnPinned posts

Здравствуйте. Вам нужно загрузить менеджер конфигурации и ищ него уже получить либо текущую либо любую конфигурацию. 

Ссылка на сообщение
Поделиться на других сайтах
22.01.2024 в 09:52, sfedotovs сказал:

макрос сохраняет выбранные комплектующие детали или сборки в IGS формате.

Solidworks Task Scheduler пробовали?

 

 

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

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

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

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

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

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

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

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

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

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

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

  • Сообщения

    • gemini74
      Вы работаете в конторе, основной CAD - Компас, ну немного в SW. Конструктора делают модели в 3D. Для переноса в CAE нужно эту модель сборки упростить, убрать крепеж, сделать как можно меньше тел, убрать зазоры под сварку, убрать мелкие элементы. Потом еще Вы предлагаете сделать модель в оболочках. Это дополнительное время . А если эту модель еще для тепловых расчетов параллельно исследовать? Тоже в оболочках? Перевод в оболочку тоже не всегда корректно можно сделать. Она упрощается до простых форм . Или  строить в отдельном моделировщике расчетную модель, тоже время. В чем целесообразность оболочек? А для чего контроль сетки в SW, разные Якобианы? Оболочки более упрощенная , абстрактная модель , когда можно отбросить влияние формы , с минимумом поверхностей , больших и мелких в модели. Не так?
    • sapr71
      Если я правильно вас понял, то ось А это YZ, а ось С это XY.   Станок вот с таким столом, как на картинке.  
    • mr_Voden
      Буквально плоскостью) Вектором, вокруг которого поворачивается ось, если понятнее. Нормаль к плоскости постройте и станет ясно какая вам подходит. 
    • sapr71
      Ну да)) Все верно! Сейчас попробую Тогда и А другая Подскажите чем отличается YZ от ZX? Сейчас не выдает ошибку. Завтра проверю. Спасибо!
    • mr_Voden
      @sapr71Тогда у вашего станка реально экзотическая кинематика) Насчет А я конечно не знаю, а вот у С плоскость вращения может XY должна быть? 
    • sapr71
      Это не то. В осях вращения у меня все правильно.   Нужно что бы он вставал в ту же позицию только крутился в другую сторону))   Например: Вместо G68.2 X0. Y0. Z0. I-180. J90. K180. должен выдавать G68.2 X0. Y0. Z0. I180. J90. K90.   Если я правильно понял. Но это не точно)
    • Mixon513
      Станок китаец. VDLS800. как понял выводится выводится на дисплей через r65. https://disk.yandex.ru/d/kmdQBjU9jNKwjw
    • Jesse
      Имхо более правильно исходить из типа НДС: если оно объёмное (как в крюке , рельсе или подшипнике), то оболочками просто невозможно его симулировать. Ну а в остальных ситуациях целесообразность. 
    • mr_Voden
      @sapr71 Плоскости вращения поворотных осей верно настроены? У вас на скриншоте "вращение оси". Захотите изменить направление - выберете "обратный". Только скорее всего дело не в этом.
    • sapr71
      Здравствуйте!  Проблема с постпроцессором.  Фрезерный станок 5ти осевой на Fanuc 30i. Физические ограничения у станка по оси А от -120 до 30 градусов. Так вот когда я пытаюсь постпроцессировать программу выкидывает ошибку: WARNING: unable to determine valid rotary positions  Если убираю ограничения в постпроцессоре по оси А, ошибка уходит. Как сделать что бы постпроцессор закручивал стол в другую сторону?   Прикрепил файл с обработкой и постпроцессор. Версия NX12.   Файл с обработкой (tst.zip) Постпроцессор: ( FANUC_30I_5X.zip ) FANUC_30I_5X.zip tst.zip Вот такие ошибки вываливаются когда пытаюсь постпроцессировать программу  
×
×
  • Создать...