Bec2
15 Styczeń 2016 13:32
1
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
Bec2
18 Styczeń 2016 08:16
3
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
pl
19 Styczeń 2016 09:25
5
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
pl
19 Styczeń 2016 09:28
6
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
Bec2
19 Styczeń 2016 10:06
7
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.
Bec2
21 Styczeń 2016 07:34
8
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?
Bec2
21 Styczeń 2016 08:07
10
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
Bec2
21 Styczeń 2016 08:37
12
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.
Bec2
21 Styczeń 2016 12:09
15
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...... ;-)
Bec2
21 Styczeń 2016 12:18
17
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
Bec2
21 Styczeń 2016 13:21
19
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ę?