Promocja montażu Maccro

Witam

Szukam maccro do promowania wszystkich podzespołów otwartego zespołu.
Potem drobnym dodatkiem byłoby promowanie wszystkich podzespołów z wyjątkiem jednego , w którym tytuł nadal zawiera "VER".
Ale już z maccro, który zrobiłby 1. akcję wyjaśnioną, byłoby świetnie!
Łączę  maccro znalezionego w innym miejscu, które jest blisko niego.

Pozdrowienia


ficap_macro_promouvoir.swp

Musisz utworzyć dodatkową pętlę, aby przejść przez komponenty:

Spójrz na ten kod zaproponowany przez @Cyril.f  w tym linku:

https://www.lynkoa.com/forum/autres-produits/macro-s%C3%A9lectionner-un-composant-dans-un-assemblage?page=0#answer-

Następnie należy dodać część, w której filtruje się zestaw, należy zobaczyć filtr do zignorowania zgodnie z nazwą i dodać kod, aby podwyższyć poziom zespołu.

 

 

 

2 polubienia

Rozumiem proces, który należy przeprowadzić, ale nie będąc programistą nie jestem w stanie zmodyfikować tego maccro.

Muszę zmierzyć się z torem uprzejmie zaproponowanym przez @Cyril.f i przekazanym przez @sbadenis , więc jeśli z niego wyjdę, powinienem być w stanie zrobić wam ten.

Z drugiej strony nie wiem, co to znaczy promować się tutaj, więc nie jestem pewien, czy potrafię to dobrze przetestować.

2 polubienia

Promocja dotyczy nomenklatur i odbywa się na poziomie nomenklatur:

https://help.solidworks.com/2021/french/WhatsNew/c_wn2021_pdm_bom_options.htm

2 polubienia

Oto moje makro:

Opcja jawna
Sub main()
Dim swApp                   jako SldWorks.SldWorks   
Dim swModel                 As SldWorks.ModelDoc2   
Dim swConfig                jako SldWorks.Configuration   
Dim vConfNameArr            jako wariant   
Dim sConfigName As String (Nazwa_            konfiguracji jako ciąg)   
    Słońce i                       tak długo

   
    Ustaw swApp = Application.SldWorks
        SolidWorks umożliwia w VBA
    Ustaw swModel = swApp.ActiveDoc
       'Pobiera aktywny dokument
    vConfNameArr = swModel.GetConfigurationNames
       'Pobiera wszystkie konfiguracje w tablicy
    Dla i = 0 Do UBound(vConfNameArr)
       Pętla we wszystkich konfiguracjach
        Ustaw swConfig = swModel.GetConfigurationByName(vConfNameArr(i))
        'sConfigName = vConfNameArr(i)
        swConfig.ChildComponentDisplayInBOM = swChildComponentInBOMOption_e.swChildComponent_Promote
       'Aktywuje funkcję promowania w każdej z konfiguracji
       
    Dalej i
Koniec subwoofera

Bez modyfikowania kodu możesz uruchomić makro na wszystkich swoich zespołach  lub zestawie i wszystkich podzespołach za pomocą Integracji narzędzia MyCad (1-miesięczny okres próbny: https://www.lynkoa.com/mycadtools) lub w inny sposób za pomocą batch + (darmowe?):

https://cadplus.xarial.com/batch/assembly/

Dziękujemy za Wasze opinie, pomysł polegał na tym, aby mieć narzędzie, które może być wykorzystywane przez zespół zarówno na dziś, jak i przez 2 lata lub +.
 

Witam

Załącznik makra łączy kody z różnych wiadomości wymienionych powyżej. Wydaje mi się, że jest to odpowiedź na pańską pierwotną prośbę.
Jak zawsze: do przetestowania i walidacji przed użyciem bez moderacji.

Pozdrowienia.


promotionmep.zip
2 polubienia

Po testach pojawił się błąd podczas uruchamiania maccro.
W załączeniu zrzut ekranu przedstawiający ten błąd.

 


bug_maccro.png

Czy procedura została rozpoczęta ręcznie?

Ponieważ makro @m.blt działa bardzo dobrze w domu.

Aby rozpocząć główną procedurę, edytując makro, umieszczasz kursor myszy za Sub main()  na samym końcu makra i klikasz na f5.

Albo w uruchomieniu narzędzia, a następnie w ścieżce makra.

Jeśli nadal jest w błędzie, być może wyślij uproszczony i niezabezpieczony zestaw za pośrednictwem menedżera projektu, aby go przetestować.

1 polubienie

Aby uruchomić maccro, otworzyłem zestaw testowy (bez podzespołu, tylko części), a następnie Tool => Maccro => Wskazuję na maccro na pulpicie i uruchamiam.
Następnie kilka razy pojawił się komunikat o błędzie, który zamieściłem na powyższym obrazku.
Właśnie przetestowałem ponownie (po ponownym uruchomieniu komputera) i jest to bardzo dziwne.

Maccro został uruchomiony, nie ma ostrzeżenia o błędzie, interfejs maccro zniknął, nie ma komunikatu o błędzie.
Ale kiedy poszedłem sprawdzić konfiguracje zespołów, żaden z nich nie miał włączonej promocji.
Podsumowując, wydaje się, że nic się nie stało.

Używam maccro, który automatycznie tworzy pliki PDF z kilkoma planami i działa wspaniale.
Więc nie wiem dlaczego ten maccro nie ma żadnego efektu ani błędu.

Jak wspomniano @sbadenis musisz wybrać procedurę główną z "ścieżki makr", a następnie zweryfikować.

To samo dotyczy dodania przycisku do paska narzędzi, ale należy go edytować i wybrać procedurę główną.

1 polubienie

Witaj @Psyno,

Twój zrzut ekranu identyfikuje lokalizację błędu, ale aby był kompletny i skuteczny, powinieneś dołączyć komunikat o tym błędzie, ponieważ jest on wysyłany z powrotem przez VBA. Podejrzane linie:

vChildComp = swComp.GetChildren
    Dla i = 0 TB UBound(vChildComp)
        Ustaw swChildComp = vChildComp(i)
        Jeśli (swChildComp.GetSuppression2 = swComponentResolved) Or (swChildComp.GetSuppression2 = swComponentFullyResolved) Następnie

Ostatni wiersz sprawdza, czy przetwarzany komponent podrzędny nie jest w stanie "Usunięty", więc jest w stanie "Rozwiązany".
Nie widzę, co może wygenerować błąd...

Istnieją dwie możliwe przyczyny:
- Komponent swChildComp nie istnieje (Nic) lub jest nieodpowiedniego typu. Możesz umieścić szpiega, który poda swoje imię (swChildComp.Name2), aby dowiedzieć się więcej...
- Stałe  swComponentResolved i swComponentFullyResolved są nieznane na twoim komputerze. Są one warte odpowiednio 3 i 2.
Mówiąc prościej, możesz przetestować, zastępując je tymi wartościami.
Aby być bardziej rygorystycznym, musimy udostępnić te stałe w kodzie, jak również wszystkie inne stałe w interfejsach API SolidWorks.
Są one zdefiniowane w dodatku "Biblioteka typów stałych SolidWorks 2021".
Po prostu dodaj go do odwołań VBA (Narzędzia > Odwołania i zaznacz odpowiednie pole). Upewnij się, że odniesienia do SolidWorks są widoczne na załączonym obrazie.

 

1 polubienie

Mała precyzja, jestem na SolidWorks 2018 (nie wiem czy to coś zmienia).
Jeśli chodzi o pole wyboru, w załączeniu znajdują się referencje mojego maccro.

Odpowiadając Sylkowi, nie wiem, o czym mówisz.
Kiedy uruchamiam maccro, celuję w niego za pomocą eksploratora oprogramowania i wskazuję na plik PromotionMEP.swp .
Nie wiem, jak inaczej zwrócić uwagę przed jego wykonaniem.


screenshot.png

Przyjemność z kolejnych wersji SolidWorks...

Funkcja GetSuppression2 nie istnieje w wersji 2018.
Powinien zostać zastąpiony przez GetSuppression (więc po prostu usuń 2!).
I powinno zacząć działać.

Jeszcze jedna uwaga: wydaje mi się, że opcja Promuj (lub Ukryj lub Pokaż) rysunku ma sens tylko w przypadku złożenia. Makro dotyczy zatem zespołu głównego, który zawiera podzespoły, których komponenty chcemy widzieć lub nie w nomenklaturze MEP.
Podzespół, który zawiera tylko części, nie jest brany pod uwagę...

3 polubienia

Rzeczywiście, po edycji linii GetSuppression2 , maccro działa bardzo dobrze!
Dziękuję Wam wszystkim!