Włączanie konfiguracji części w zespole za pomocą makra

Witam

 

Szukam makra, które pozwoli mi aktywować różne konfiguracje części z głównego złożenia.

Mam kawałek kodu, przy którym majstrowałem, ale to nie działa.

 

Ustaw swApp = _
Aplikacja.SldWorks

Ustaw część = swApp.ActiveDoc
boolstatus = Part.Extension.SelectByID2("CleanSeal WELDED-1@CleanSeal COMPLETE/Cxxx-x-1@CleanSeal WELDED", "KOMPONENT", 0, 0, 0, Fałsz, 0, Nic, 0)
boolstatus = Part.ShowConfiguration2("C200-0")
Part.ClearSelection2 Prawda
boolstatus = Part.EditRebuild3()
Koniec subwoofera

 

Z góry dziękuję za pomoc

Pozdrowienia.

Witam

Mam ten fragment kodu, który działa w domu, zobacz na poziomie twojej linii boolstatus, w pierwszej części. Nie rozumiem "/"... Czy nie edytujesz komponentu?

Edycja: Musisz mieć: "Configuration@nomfichier.extension"

Przyciemnij część jako obiekt
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long

Sub main()

Ustaw swApp = _
Aplikacja.SldWorks

Ustaw część = swApp.ActiveDoc
boolstatus = Part.EditRebuild3()
boolstatus = Part.Extension.SelectByID2("Défaut@12345678-E CYLINDER WSPARCIA. SLDASM", "KONFIGURACJE", 0, 0, 0, Fałsz, 0, Nic, 0)
boolstatus = Part.ShowConfiguration2("Domyślnie")
boolstatus = Part.EditRebuild3()
boolstatus = Part.Extension.SelectByID2("Z REHAUSSE@12345678-E CYLINDREM PODPOROWYM. SLDASM", "KONFIGURACJE", 0, 0, 0, Fałsz, 0, Nic, 0)
boolstatus = Part.ShowConfiguration2("Z ELEWACJĄ")
boolstatus = Part.EditRebuild3()


Koniec subwoofera

1 polubienie

Witaj Glaffont,

Przede wszystkim dziękuję za odpowiedź ;)

Wziąłem twój kod, dodając ale nazwa pliku, ale to nie działa :(

Oto kod:

 

Ustaw swApp = _
Aplikacja.SldWorks

Ustaw część = swApp.ActiveDoc
boolstatus = Part.EditRebuild3()
boolstatus = Part.Extension.SelectByID2("C250-0@Cxxx-x.part@CleanSeal SPAWANE. SLDASM", "KONFIGURACJE", 0, 0, 0, Fałsz, 0, Nic, 0)
boolstatus = Part.ShowConfiguration2("C250-0")
boolstatus = Part.EditRebuild3()

Koniec subwoofera

 

W swoim kodzie po prostu zmieniasz konfigurację swojego zestawu?

Z mojej strony struktura mojego 3D jest następująca:

 * Montaż główny (. SLDASM)

                                       * Podzbiór (. SLDASM)

                                                                        * składnik (.part)

                                                                        * składnik (.part)

                                                                       * komponent(.część)

                                     * różne komponenty (.part)

Chciałbym, aby kod zmieniał konfigurację komponentu (.part)  w moim podzbiorze (. SLDASM) będąc w moim głównym zgromadzeniu (. SLDASM).

Mam nadzieję, że moje wyjaśnienie jest zrozumiałe...

Z góry dziękuję

 

 

 

Witam

Zrozumiałem prośbę, była jasna od początku, ale musiałem przeczytać zbyt szybko.

Rzeczywiście, w tym przypadku też to nie działa dla mnie. Próbowałem zmontować sztukę, ale bez powodzenia. Nie przestaję się przyglądać.

1 polubienie

Witam

Ile jest co najwyżej poziomów?

1) zespół głowicy (w którym uruchomimy makro)

2) podzbiór

3) Części

Czy słusznie?

Koniec z poziomami średniozaawansowanymi?

 

1 polubienie

Możemy czerpać inspirację z tych dwóch makr, które opublikowałem na Lynkoa:

http://www.lynkoa.com/tutos/3d/enregistrer-une-piece-chaque-configuration

http://www.lynkoa.com/tutos/solidworks/macro-pour-toutes-les-configurations-d-un-assemblage-pour-activer-l-option-%E2%80%9Cpromouv

 

Witaj PL,

Dziękuję za zainteresowanie moim problemem.

 

Architektura mojego modelu jest w porządku, tak jak ją opisałeś.

Z poziomu mojego głównego złożenia chcę zmienić konfigurację komponentu, który znajduje się w podzbiorze mojego głównego złożenia.

Jestem początkującym w VBA, tak naprawdę nie rozumiem kodów, które umieszczasz w swoich samouczkach :s

 

Z góry dziękuję za pomoc.

Pozdrowienia.

PL, czy kiedykolwiek używałeś tego typu kodu do wyboru konfiguracji?

Pozdrowienia.

Witam

Być może mam wskazówkę: czy próbowałeś przechodzić przez zespół za pomocą funkcji komponentu trawersu, jak pokazano na poniższym makrze:

http://help.solidworks.com/2012/english/api/sldworksap/traverse_assembly_at_component_level_example_vb.htm

aby aktywować żądany komponent, a następnie zmodyfikować jego konfigurację za pomocą poleceń wymienionych powyżej?

Witaj Glaffont,

Nie rozumiem wszystkiego w tym kodzie...

Pozdrowienia.

Oto prawy link:

http://help.solidworks.com/2012/english/api/sldworksapi/traverse_assembly_at_component_level_example_vb.htm

1 polubienie

Będąc początkującym programistą przyznam, że niewiele rozumiem z tego kodu :s

 

Zrobiłem mały postęp:

Poniższy kod wybiera komponent na poziomie -2 i modyfikuje jego konfigurację.

ALE jest błąd..... Konfiguracja, którą wyświetla,  nie jest tą, o którą go proszę, aby ??!?

Zobacz, jak to wygląda w domu z odpowiednimi ścieżkami i powiedz mi. (to też bałagan w deklaracjach, nie poświęciłem czasu na posprzątanie....)

       ********************************************************************

    Dim swApp jako SldWorks.SldWorks
    Dim swAssy jako SldWorks.assemblyDoc
    Sun swSelMgr jako SldWorks.selectionMgr
    Przyciemnij swModel jako SldWorks.ModelDoc
    Dim swComp As SldWorks.Component
    Dim ConfigMgr jako ConfigurationManager
    Dim instance As ISelectionMgr
    Dim Index jako liczba całkowita
    Przyćmić oznaczenie jako liczba całkowita
    Dim boolstatus As Boolean
    Dim modelDoc2 jako SldWorks.modelDoc2
Dim assemblyDoc jako SldWorks.assemblyDoc
Przyciemnij featureMgr jako SldWorks.FeatureManager
Dim modelDocExt As SldWorks.ModelDocExtension
Sun selectionMgr As SldWorks.selectionMgr
Funkcja przyciemniania jako SldWorks.feature
Dim selObj As Obiekt
Dim feat As SldWorks.feature
Przyciemnij folderFeat jako SldWorks.feature
Błędy przyciemnienia tak długo
Ostrzeżenia o przyciemnieniu tak długo
Stan przyciemnienia tak długo
Przyciemnij liczbę tak długo
Przyciemnij wartość jako SldWorks.Component2
Dim componentsToMove() As Object
Słońce i tak długo
Dim retVal As Boolean
    Dim RefCfg As String

Sub main()

    Ustaw swApp = Application.SldWorks
    Ustaw swModel = swApp.ActiveDoc
    Ustaw swAssy = swModel
    Ustaw swSelMgr = swModel.SelectionManager
    Ustaw ConfigMgr = swModel.ConfigurationManager
    Ustaw modelDoc2 = swApp.ActiveDoc
    Ustaw assemblyDoc = modelDoc2
    
    'Wybierz komponent
    Ustaw modelDocExt = modelDoc2.Extension
    Ustaw selectionMgr = modelDoc2.SelectionManager
    status = modelDocExt.SelectByID2("testEUT15B0178'015 S-E SUPPORT CYLINDER-1@Assemblage1/testO-RING STD-2@testEUT15B0178'015 S-E SUPPORT CYLINDER", "KOMPONENT", 0, 0, 0, True, 0, Nic, 0)
    Set selObj = selectionMgr.GetSelectedObject6(1, -1)
    Ustaw wartość = selectionMgr.GetSelectedObjectsComponent4(1, -1)

    ' Pokaż Config1 i ustaw go jako aktywną konfigurację
    Value.ReferencedConfiguration = "O-RING Ø24xØ1.5"

    ' Aby zmiany zaczęły obowiązywać
    swModel.EditRebuild3 powiedział:

Koniec subwoofera

                         ****************************************************************

1 polubienie

W przypadku nieporozumienia może to zadziałać: konfiguracja, którą wyświetla, jest konfiguracją komponentu, gdy otworzysz go samodzielnie.

 

W jaki sposób należy wypełnić wiersz kodu nazwami własnych plików?

Oto moje nazwy plików

 

Główny montaż: CleanSeal COMPLETE

                    Podzespół: CleanSeal SPAWANY

                                     Komponent w podzespole : Cxxx-x      (Nie z jednego z "C250-0" powierzonych

Bardzo dziękuję za pomoc

Pozdrowienia.

1 polubienie

Bardzo proste: kopiujesz kod, który umieściłeś w swoim pytaniu...... ;-)

Poniżej znajduje się kod z moimi nazwami plików.

To prawie tyle, ale nie wymaga to odpowiedniej konfiguracji...

 

Ustaw swApp = CreateObject("SldWorks.Application")
Ustaw część = swApp.ActiveDoc


Ustaw swApp = _
Aplikacja.SldWorks

  Ustaw swApp = Application.SldWorks
    Ustaw swModel = swApp.ActiveDoc
    Ustaw swModelDocExt = swModel.Extension
    Ustaw swSelMgr = swModel.SelectionManager
       
 
Ustaw swApp = Application.SldWorks
    Ustaw swModel = swApp.ActiveDoc
    Ustaw swAssy = swModel
    Ustaw swSelMgr = swModel.SelectionManager
    Ustaw ConfigMgr = swModel.ConfigurationManager
    Ustaw ModelDoc2 = swApp.ActiveDoc
    Ustaw AssemblyDoc = ModelDoc2
    
    'Wybierz komponent
    Ustaw modelDocExt = ModelDoc2.Extension
    Ustaw SelectionMgr = ModelDoc2.SelectionManager
    Status = modelDocExt.SelectByID2("CleanSeal COMPLETE-1@Assemblage1/Cxxx-x-2@CleanSeal COMPLETE", "KOMPONENT", 0, 0, 0, Prawda, 0, Nic, 0)
    Ustaw selObj = SelectionMgr.GetSelectedObject6(1, -1)
    Ustaw wartość = SelectionMgr.GetSelectedObjectsComponent4(1, -1)

    ' Pokaż Config1 i ustaw go jako aktywną konfigurację
    Value.ReferencedConfiguration = "Cxxx-x C250-0"

    ' Aby zmiany zaczęły obowiązywać
    swModel.EditRebuild3 powiedział:


Koniec subwoofera

 

 

1 polubienie

Otwórz Cxxx-x-2 i zobacz, w jakiej konfiguracji się znajduje.

Umieść go w konfiguracji "C250-0" i spróbuj ponownie.

Pozwólcie, że wyjaśnię: to majsterkowanie! Postaramy się znaleźć rozwiązanie w VBA.

Edycja: Wystąpił błąd w nazwie konfiguracji, którą wywołujesz, powinieneś wpisać tylko "C250-0", a nie ""Cxxx-x C250-0"

1 polubienie

to działa, zrobiłeś szczęśliwy  :-)  !!

W porównaniu z bardzo pierwszym kodem, który mi dałeś, co jeszcze robi ten?

Kiedy mówisz "to majsterkowanie! Postaramy się znaleźć rozwiązanie w VBA." Co przez to rozumiesz?

W każdym razie bardzo dziękuję za pomoc.

 

 

Czy możesz sprawdzić jedną rzecz: otwórz część Cxxx-x-1, zmień jej konfigurację i uruchom ponownie makro.

Czy aktywuje żądaną konfigurację?