Przesunięcie zespołu Pokaż zmodyfikowane części

Cze wszystkim

Obecnie pracuję w zespole, w którym wymiarami części zarządza notatnik.

Jest to bardzo praktyczne, ponieważ pozwala na modyfikację pojedynczego wymiaru, a oprogramowanie zajmuje się aktualizacją połączonych elementów.

Chciałbym jednak, aby wyróżnił części, które mają zostać zmienione przed wykonaniem aktualizacji, ponieważ mam wiele części powiązanych ze sobą i nie chciałbym zapomnieć o żadnej w aktualizacji planu.

Czy ktoś wie, czy jest to możliwe w Solidworks?

 

1 polubienie

W jaki sposób wykonane jest połączenie między notatnikiem a solidworks? Bezpośrednie czy makro? 

Link jest uruchamiany za pośrednictwem menu Równania

Niestety nie wiem sprawdzę jak to działa

 

EDIT: Ok, właśnie się czegoś nauczyłem :) niemniej jednak nie widzę, jak postawić alert czy coś :/

 

 

Witam

Nie wiem, czy możesz zamieścić przykład?

Niech moc będzie z tobą

Stworzyłem go, aby odkryć


maj_dassemblage_montrer_ieces_modifiees.zip

Oto przykład.

Zauważ, że jeśli zmienię jeden z parametrów w moim notatniku, będzie to miało wpływ na dwie części w moim złożeniu, gdy tylko kliknę przebuduj

W przypadku złożenia składającego się z kilku części, interesujące dla solidworks może być umieszczenie na czerwono części, na które ma wpływ ta modyfikacja przed przebudową.

Bez względu na to, jak bardzo się staram, nie mogę znaleźć sposobu, aby to zrobić. Zaczynam myśleć, że nie jest to możliwe z Solidworks:(


exemple.zip

Witam

Nie mogłem otworzyć twoich plików z powodu różnych wersji oprogramowania, ale myślę, że twoje dwa elementy można edytować za pomocą tego samego pliku notatnika. Jednym ze sposobów byłoby sprawdzenie w swoim zespole wszystkich części, z których jedno z równań wymaga tego pliku notatnika.

Tu jest już początek kodu makra, który pozwala na wyświetlenie listy elementów potomnych, jeśli zespół jest załadowany, lub sprawdzenie, który plik wywołuje równanie, jeśli jest to załadowana część:

Opcja jawna

Dim swApp As Object

Przyciemnij część jako obiekt
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long
Dim swEqnMgr As SldWorks.EquationMgr
Dim eqnLinked As Boolean
Słońce i tak długo
Dim nCount tak długo

Sub main()

Ustaw swApp = Application.SldWorks
Ustaw część = swApp.ActiveDoc

Przechodzenie przez trawers

Ustaw swEqnMgr = Part.GetEquationMgr
nCount = swEqnMgr.GetCount
Dla i = 0 Do nCount - 1
    eqnLinked = swEqnMgr.LinkToFile
    Jeśli eqnLinked to
         swEqnMgr.UpdateValuesFromExternalEquationFile

        MsgBox "Ścieżka do pliku równania: " & swEqnMgr.FilePath
    Zakończ jeżeli:
Dalej i

Koniec subwoofera

Sub TraverseComponent(swComp As SldWorks.Component2)
    Dim vChildComp jako wariant
    Dim swChildComp As SldWorks.Component2
    Słońce i tak długo
    
    vChildComp = swComp.GetChildren
    
    Dla i = 0 TB UBound(vChildComp)
        Ustaw swChildComp = vChildComp(i)
        MsgBox "Synowie:" & swChildComp.Name
    Dalej i
Koniec subwoofera

Funkcja publiczna TraverseAssemly()
    Dim swConfMgr jako SldWorks.ConfigurationManager
    Dim swConf As SldWorks.Configuration
    Dim swRootComp jako SldWorks.Component2
    
    Ustaw część = swApp.ActiveDoc
    Jeśli część jest niczym, wyjdź z funkcji
    Jeśli Part.GetType() <> swDocASSEMBLY, zakończ funkcję

    Ustaw swConfMgr = Part.ConfigurationManager
    Ustaw swConf = swConfMgr.ActiveConfiguration
    Ustaw swRootComp = swConf.GetRootComponent3(True)
    
    Wywołaj metodę TraverseComponent(swRootComp)
Zakończ funkcję

Pozdrowienia

1 polubienie

Dzięki za dema, wrócę  do nich później (nie ma czasu).

Niech Moc będzie z tobą

2 polubienia

D.Roger, dziękuję za bit makro. Zamierzam to przetestować.

Jeśli zrozumiałem, jak to działa, może wyświetlić listę wszystkich komponentów mojego złożenia, ponieważ wszystkie używają tego samego pliku notatnika.

W każdym razie jest to początek :) Postaram się trochę poprawić w makro, aby zobaczyć, czy mogę poprosić o wyświetlenie tylko elementów, które używają danego równania

 

 

Witam

Poniższe makro pozwala z zespołu załadowanego w oprogramowaniu wyświetlić listę wszystkich równań wszystkich części pierwszego poziomu, ale musisz porównać te równania z tym, którego szukasz, aby zachować tylko żądane części. Jeśli analizowanie części musi być wykonywane na wielu poziomach, funkcja TraverseComponent musi zostać zmodyfikowana, aby zmienić ją na wersję rekurencyjną.

Opcja jawna

Dim swApp As Object

Przyciemnij część jako obiekt
Dim SwModel As Obiekt
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long
Dim swEqnMgr As SldWorks.EquationMgr
Dim eqnLinked As Boolean
Słońce i tak długo
Słońce j tak długo
Dim nCount tak długo
Przyciemniony syn jako ciąg

Sub main()

    Ustaw swApp = Application.SldWorks
    Ustaw część = swApp.ActiveDoc

    Trawers Assemly 1

Koniec subwoofera

Sub TraverseComponent(swComp As SldWorks.Component2)
    Dim vChildComp jako wariant
    Dim swChildComp As SldWorks.Component2
    Słońce i tak długo
    
    vChildComp = swComp.GetChildren
    
    Dla i = 0 TB UBound(vChildComp)
        Ustaw swChildComp = vChildComp(i)
        sons = swChildComp.GetPathName
        Jeśli UCase(synowie) jak "*. SLDPRT*" Następnie
            Ustaw SwModel = swApp.OpenDoc(Wątki, 1)
            Ustaw swEqnMgr = SwModel.GetEquationMgr
            nCount = swEqnMgr.GetCount
            Dla j = 0 Do nCount - 1
                MsgBox swChildComp.Name2 & " - Równanie: " & swEqnMgr.Równanie(j)
            Dalej j
        Zakończ jeżeli:
    Dalej i
Koniec subwoofera

Funkcja publiczna TraverseAssemly(trye As Long)
    Dim swConfMgr jako SldWorks.ConfigurationManager
    Dim swConf As SldWorks.Configuration
    Dim swRootComp jako SldWorks.Component2
    
    Ustaw część = swApp.ActiveDoc
    Jeśli część jest niczym, wyjdź z funkcji
    Jeśli Part.GetType() <> swDocASSEMBLY, zakończ funkcję

    Ustaw swConfMgr = Part.ConfigurationManager
    Ustaw swConf = swConfMgr.ActiveConfiguration
    Ustaw swRootComp = swConf.GetRootComponent3(True)
    
    Wywołaj metodę TraverseComponent(swRootComp)
Zakończ funkcję

Pozdrowienia

1 polubienie

Przepraszam za dygresję, ale jak stworzyć powiązanie między plikiem txt a kursami?
Czy działa również aktywowanie/usuwanie składnika w usłudze ASM?

Stefbeno powiedział:

Jeśli się nie mylę, po prostu utwórz równanie, a następnie wyeksportuj, tam utworzy bardziej chichier tekst z równaniem, a następnie w nowym imporcie części lub złożenia.

1 polubienie

Po prostu.

Dziękuję, że pozwoliłeś mi to odkryć.

Witam

 

Przepraszam, że poświęciłem czas na odpowiedź, wyjechałem na wakacje :).

@d.roger: Próbowałem uruchomić makro, ale nic się nie dzieje.

Kiedy uruchamiam go za pomocą debuggera, informuje mnie o błędzie składni w wierszu: Set swApp = Application.SldWorks

 

 

Witam

Czy na początku makra znajduje się wiersz Dim swApp As Object?

Sprawdź też referencje w Narzędzia/Referencje!

Pozdrowienia