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

Макрос. Пакетное сохранение выбранных файлов в 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 пользователей

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




  • Сообщения

    • Guhl
      Они дураки, не знают про коррекции просто (сарказм) :) Когда @gudstartup произносит что-то типа "вы не понимаете" или "вы же понимаете" мне почему-то сразу вспоминается этот фрагмент   
    • Killerchik
      Господа, Вы все по-своему правы, как мне кажется. Виктор прав в том, что при описанном им отклонении будет невозможно сделать ось шпинделя перпендикулярной к поверхности детали, прижатой к столу, хоть убейся. Если это 3д фрезеровака - по барабану, а вот если надо расточить отверстие или обработать точную поверхность торцом фрезы (или шлифовального круга, шлифование на фрезерных ОЦ давно не что-то невероятное) - мы получаем неисправимое искажение.   Конечно, на хороших станках и физическую геометрию станины стараются делать хорошо. Но хорошо - это не отлично, а ещё её ведёт со временем, а ещё есть удары и т.п. Тут-то и приходит на помощь коррекция всех мастей. пиэс - работники Блом'а как выяснилось вручную подшлифовывают плоскости под рельсами брусками с наждачкой по результатам замеров))))) В видосе от Титанов это было.
    • gudstartup
      я вам все написал . вы же b компенсируете вот и вводите относительно наклона в заданной точке значения отклонений хоть по x и хоть по  y и ваша точка на оси сместится в пространстве. таблица компенсаций это позволяет. точки для оси b задаются от +90 0 -90 или как сами хотите 
    • Viktor2004
      Вот в моем примере надо задать смещение оси X в зависимости от Y. Но при B-90 это смещение должно быть в одну сторону, а при B+90 в другую сторону. А в промежутке между B-90---------B+90 значения смещения Х между этими крайними Значит компенсация X в зависимости от Y должна зависеть еще и от наклона оси В Ну и как будем компенсировать?
    • gudstartup
      вы понимаете что такое объемная компенсация? можно задать смещение точки вашего стола во всех плоскостях и станок это отработает переместив  на заданную величину оси х у или z  перемещая стол вы вообще не увидите больших отклонений. естественно все зависит от качества измерения и правильности ввода. лучше когда это делает специальная программа
    • Viktor2004
      хорошо. Представьте ситуацию 1. Ось В=0. двигаем индикатором по Х и Y все идеально ровно 2. Ось B=-90 ведем индикатором по Y вдоль стола. Отклонение в + (существенное) в сторону +X 3. Ось B=+90 ведем индикатором по Y вдоль стола. Отклонение в - (существенное) в сторону -X делаем вывод. стол не параллелен оси наклона Как будем компенсировать?
    • gudstartup
      если есть нормальный цикл для щупа и геометрия выравнена и соответствует кинематике то настройка = времени исполнения этого цикла. буржуи вообще этот цикл гоняют перед каждой высокоточной деталью и имеют прекрасную повторяемость точности. так надо уметь проводить измерения и иметь для этого соответствующие приборы.  вычисляется смещение оси в заданной точке и смещение осей влияющие на ее взаимную перпендикулярность. не видел там никаких формул. только недавно компенсировали ось А на пятиосевом хайдене и без формул обошлись.  согласен с тем что измерения пятиосевого продлятся дольше 
    • Viktor2004
      Я не смог. На Хенденхайне, где все компенсации очень наглядны и открыты. Трехосевой скомпенсировать можно, пятиосевой у меня не получилось. Потому что в значения компенсаций надо писать формулы, а оно позволяет писать туда только константы. А формулы оно туда писать не умеет
    • gudstartup
      тяжесть это отсутствие высокоскоростной обработки и трудоемкость. особенно если делать это с помощью индикатора и линейки станкостроители именно так и работают!
    • Guhl
      Там и прямой станок настроить непросто, а уж кривой, так хоть стреляйся 
×
×
  • Создать...