[SolidWorks] Makro filtru (VBA)

Witam

 

Chciałbym utworzyć makro filtru (w mojej firmie wszystkie podzespoły są skomponowane na tym samym modelu). Chciałbym więc móc stworzyć makro, które ukrywa wszystko i wyświetla tylko niektóre części (na podstawie NAZWY pliku).

Również makro, które wyświetlałoby wszystko ponownie.

 

Dziękuję.

 

[edytuj | edytuj kod] Problemem jest przede wszystkim "parsowanie" wszystkich komponentów w złożeniu. Czy istnieje sposób, aby to zrobić w pętli for?

Witam

Jeśli masz narzędzia Mycadtools, istnieje aplikacja TreeManager, która może Ci w tym pomóc.

Miłego dnia.

1 polubienie

Dziękuję

 

Niestety, nie będę mógł uzyskać dostępu do narzędzi MyCadTools.

Więc naprawdę muszę być w stanie zrobić to za pomocą makra, a jak powiedziałem, dużym problemem jest obecnie zebranie wszystkich elementów w zespole.

Witam, w samouczkach, które opublikowałem na Lynkoa, jest jeden lub dwa przykłady, aby przejść przez wszystkie komponenty zespołu. W przeciwnym razie, aby przefiltrować, należy zapoznać się z zaawansowanym wyborem SolidWorks.
1 polubienie

Witam, dziękuję.

Czy mógłbyś dać mi link do jednego ze swoich samouczków, czy mówisz o tym?

To prawda, że nie da się znaleźć samouczków stworzonych przez jedną osobę, przepraszam. Mówiłem o tym samouczku, ale w rzeczywistości dotyczy on wszystkich konfiguracji zestawu:

http://www.lynkoa.com/tutos/solidworks/macro-pour-toutes-les-configurations-d-un-assemblage-pour-activer-l-option-"promować" Szukam makra które zrobiłem, ale nie ma go na Lynkoa.

1 polubienie

Znalazłem coś w internecie, co pozwala mi przeglądać komponenty zespołu, problem polega na tym, że nie mogę ich ukryć. Po co?

 

Sub main()
    Dim swModel As ModelDoc2
   
    Dim vComps jako wariant
    Dim swComp As SldWorks.Component2
    Przyciemnij swAssy jako SldWorks.AssemblyDoc
    Dim i jako liczba całkowita
   
    Ustaw swApp = Application.SldWorks
    Ustaw swModel = swApp.ActiveDoc
   
    Jeśli swModel.GetType = swDocASSEMBLY Następnie
        Ustaw swAssy = swModel
        vComps = swAssy.GetComponents(False)
        Dla i = 0 TB UBound(vComps)
            Ustaw swComp = vComps(i)
            Ustaw swModel = swComp.GetModelDoc2
            Debug.Print swModel.GetTitle
            swModel.HideComponent2 'Nie działa...
            swModel.ClearSelection2 Prawda
        Dalej i
    Zakończ jeżeli:
Koniec subwoofera

 

[edytuj | edytuj kod]

Znalazłem sposób na odzyskanie dowodu tożsamości za pomocą:

            Debug.Print swComp.GetSelectByIDString
            boolstatus = Part.Extension.SelectByID2(swComp.GetSelectByIDString, "KOMPONENT", 0, 0, 0, Fałsz, 0, Nic, 0)
            Część.Ukryj komponent2

 

Więc na razie myślę, że mój problem powinien zostać rozwiązany. Poczekam jeszcze trochę, zanim włożę to w rozdzielczość. Dziękuję!

1 polubienie

Rzeczywiście, jak wskazano w poniższym linku, musisz wybrać komponent za pomocą HideComponent2 , w przeciwnym razie oferują inną metodę z widocznością:

https://books.google.fr/books?id=ftVsBgAAQBAJ&pg=PA39&lpg=PA39&dq=HideComponent2&source=bl&ots=11v9gfMep9&sig=Kdp-G1le6iPqcbxSFNSueTQXQs4&hl=fr&sa=X&ved=0CCwQ6AEwAmoVChMI-6DIiZuyxwIVAr0aCh3dXQmW#v=onepage&q=HideComponent2&f=false

 

1 polubienie

Dzięki Tobie uważam problem za rozwiązany.