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ą
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