Posiadam pewną wiedzę na temat VBA, ale jestem nowy w API Solidworks i muszę zmodyfikować makro kolegi, uruchomione na rysunku z wybranym komponentem.
Oto, co wydaje mi się być problemem z kodem:
swEnt = swSelMgr.GetSelectedObject5(iSel)
swSelComp = swEnt.GetComponent
swSelModel = swSelComp.GetModelDoc
Nazwa = swSelModel. GetTitle (DostaćTytuł)
Nazwa zawiera następnie nazwę wybranej części, gdzie chciałbym zwrócić nazwę jej zespołu macierzystego, ponieważ bryła bardzo dobrze sprawdza się w zestawieniu komponentów.
Zaznaczam, że kod działa, gdy konfiguracje zestawu są ustawione w następujący sposób:
Wyświetlanie komponentów potomnych używanych jako podzespół: "pokaż"
i że chcemy go zmodyfikować tak, aby działał również wtedy, gdy ustawimy na "ukryj"
Dziękuję za wszelką pomoc, której możesz mi udzielić!
Pełny kod ma kilka tysięcy wierszy, ale ta część jest niezależna, po prostu wyciąłem kilka poprzednich linii, które zajmują się wieloma wyborami.
Zaraz po skopiowanym fragmencie porównujemy wartość nazwy zmiennej z każdym oznaczeniem w nomenklaturze. I oczywiście, ponieważ zestawienie komponentów pokazuje tylko nazwę zespołu nadrzędnego, wszystko się zatrzymuje.
Jeśli dobrze rozumiem Twoją odpowiedź sbadenis, tak długo, jak komponenty potomne są ukryte w konfiguracji mojego zestawu, żadna metoda zastosowana do swSelModel nie będzie w stanie "przejść" do właściwości rodzica?
Szukałem czegoś w rodzaju swSelModel."GetParent", który pozwoliłby mi wrócić do właściwości górnego zespołu tak jak w mojej nomenklaturze.
Gdy elementy podrzędne są wyświetlane we właściwościach konfiguracji, po kliknięciu tej samej części MEP, zwraca nazwę zespołu nadrzędnego.
Nie sprecyzowałem tego, ale właściwość nie jest bezpośrednio sprawdzana w zakładce właściwości, kierujemy wartością $JAMAIS_DEVELOPPER_IN_NOMENCLATURE przez rodzinę części. Jest to Y lub N z tego, co widzę w pomocy API; Wydaje się, że nie ma wartości, aby przełączyć się na "promowanie", czego w rezultacie nie przetestowałem.
Doskonały! Osobiście unikam używania selekcji przed akcją. Oprogramowanie teoretycznie wie, gdzie jest, myślę, że unika niepotrzebnych linii.
Wreszcie, nie zrobiłem wielu interfejsów API w solidworks, głównie zajmuję się ponownym składaniem lub zarządzaniem plikami. Nie czytam ani nie piszę dla nomenklatur.