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.
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.
Muszę zmierzyć się z torem uprzejmie zaproponowanym przez @Cyril.fi 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ć.
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
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?):
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 +.
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.
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.
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.
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.
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ę...