Makro do konfiguracji komponentu

Witam, szukam makra, które pozwoli mi skonfigurować wybrane pomieszczenie.

Jest to operacja, którą  wykonujemy  bardzo często i która zajmuje nam czas.

Mój zespół i moja część mają te same nazwy konfiguracji (01,02,03,04...).

Chciałbym, aby makro skonfigurowało mój komponent w taki sposób, aby jego konfiguracje odpowiadały konfiguracjom  zestawu.

Dziękuję bardzo.

Witam

Zwykle poniższy kod powinien spełniać tę potrzebę.

Sub main()
    Dim swApp                       As SldWorks.SldWorks
    Dim swModel                     As SldWorks.ModelDoc2
    Dim swConfMgr                   As SldWorks.ConfigurationManager
    Dim swSelMgr                    As SldWorks.SelectionMgr
    Dim swChildComp                 As SldWorks.Component2
    Dim sConf                       As String
    Dim sChildConf                  As String

    
    Set swApp = CreateObject("SldWorks.Application")
    Set swModel = swApp.ActiveDoc
    Set swSelMgr = swModel.SelectionManager
    Set swConfMgr = swModel.ConfigurationManager
    sConf = swConfMgr.ActiveConfiguration.Name
    
    Set swChildComp = swSelMgr.GetSelectedObject6(1, -1)
    sChildConf = swChildComp.ReferencedConfiguration
    If sChildConf <> sConf Then
    
    swChildComp.ReferencedConfiguration = sConf
    swModel.EditRebuild3
    End If
    
End Sub

 

Witaj Cyrylu,

Dziękuję bardzo, Twój kod działa, ale tylko na aktywnej konfiguracji.

Myślę, że trochę czegoś brakuje, aby zamiatać wszystkie konfiguracje montażu.

Masz pomysł?

Dziękuję bardzo.

W zależności od liczby konfiguracji, które mają zostać wygenerowane, nie musi być konieczne stosowanie makra.
W oknie, aby otworzyć plik zespołu, wybierz asm, kliknij "Konfiguracja", wybierz "zaawansowane"

, otworzy się nowe okno:

Użyj ostatniego wyboru

2 polubienia

Spróbować

   Sub main()
    Dim swApp                       As SldWorks.SldWorks
    Dim swModel                     As SldWorks.ModelDoc2
    Dim swConfMgr                   As SldWorks.ConfigurationManager
    Dim swSelMgr                    As SldWorks.SelectionMgr
    Dim swChildComp                 As SldWorks.Component2
    Dim sConf                       As String
    Dim sChildConf                  As String
    Dim boolstatus                  As Boolean

    
    Set swApp = CreateObject("SldWorks.Application")
    Set swModel = swApp.ActiveDoc
    Set swSelMgr = swModel.SelectionManager
    Set swConfMgr = swModel.ConfigurationManager
    
    vConfigNameArr = swModel.GetConfigurationNames
    For Each vConfigName In vConfigNameArr
        Set swConfig = swModel.GetConfigurationByName(vConfigName)
            sConf = vConfigName
            Set swChildComp = swSelMgr.GetSelectedObject6(1, -1)
            swModel.ShowConfiguration2 (vConfigName)
                boolstatus = swModel.Extension.SelectByID2(swChildComp.GetSelectByIDString, "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)
                Set swChildComp = swSelMgr.GetSelectedObject6(1, -1)
                sChildConf = swChildComp.ReferencedConfiguration
                If sChildConf <> sConf Then
                swChildComp.ReferencedConfiguration = sConf
                swModel.EditRebuild3
                End If
                
        Next
    
End Sub

 

2 polubienia

Dziękuję za tę odpowiedź.

Nie wiedziałem o tej opcji.

Jednak w moim przypadku nie generuję konfiguracji, ale chcę, aby jeden z komponentów przyjął taką samą nazwę konfiguracji jak zestaw, w którym się znajduje.

Potrzebuję makra, które, podobnie jak na poniższym zrzucie ekranu, konfiguruje komponent na podstawie konfiguracji zestawu.

Nie wiem, czy mam jasność.

W każdym razie bardzo dziękuję.


capture.png

GROŹNY CYRYL, 

Działa doskonale.

Wielkie podziękowania dla Ciebie i Stefa.

1 polubienie

A kończąc na wysokim poziomie, czy istnieje rozwiązanie, które sprawi, że to zadziała, wybierając kilka sztuk?

Dziękuję

Witam

Powinniśmy zamknąć się na treści zgromadzenia i nie polegać już na wyborze.

Z drugiej strony wymaga nieco więcej przetwarzania, aby sprawdzić, czy plik zawiera konfigurację oraz jakikolwiek inny konkretny przypadek związany z twoimi zestawami. Nieco bardziej złożone.

Okej, Twoja metoda już działa bardzo dobrze,  bardzo Ci dziękujemy. Zaoszczędziłeś nam cenny czas, a ja przestudiuję  twoje  makro, aby zrobić inne.

Czy dostępny jest odpowiedni samouczek?

Witam

Jedynym "samouczkiem" jest pomoc online API.

 Jest też rejestrator makr (ograniczony, ponieważ nie zawsze korzysta z najnowszych funkcji API i robi tylko "prosty" kod) oraz fora Solidworks, które są kopalnią złota na te tematy (często jednak w języku angielskim).