Ponownie otwieram post, ponieważ mam mały problem z makrem, o którym mowa, które służy do otwierania wybranej części w obszarze graficznym.
Dzieje się tak, ponieważ makro działa tylko wtedy, gdy część jest ustawiona jako rozdzielcza.
Czy wiesz, czy możliwe byłoby zintegrowanie tego z makro, tj.: wybranie monety w obszarze graficznym (awers lub inny), uruchomienie makra: rozwiązanie monety, a następnie jej otwarcie.
Poniżej podam kod makra:
'******************************************************************************
' ASSEMBLYOPEN. SWB autorstwa Teda Grieblinga
' To makro otworzy część będącą właścicielem lub podzespół (jeśli zostanie wybrany z listy
' feature scrambler) czegokolwiek wybranego w złożeniu.
' ******************************************************************************
Dim swApp As Object
Przyciemnij activeDocument jako obiekt
Dim selEntity As Object
Dim selType As Long
Dim SelMgr As Obiekt
Dim owningComponent As Object
Dim componentName As Ciąg
Przyciemnij część jako obiekt
Przyciemnij ścieżkę komponentu jako ciąg
Const swDocPART = 1
Const swDocASSEMBLY = 2
Const swDocDRAWING = 3
Sub main()
Ustaw swApp = CreateObject("SldWorks.Application")
Ustaw activeDocument = swApp.ActiveDoc
Upewnij się, że to nie jest część.
Jeśli (activeDocument.GetType = swDocPART) Następnie
Wyjdź z subwoofera
Zakończ jeżeli:
' Zrobić coś innego do rysunków?
Jeśli (activeDocument.GetType = swDocDRAWING) Następnie
Wyjdź z subwoofera
Zakończ jeżeli:
' Pobierz interfejs SelectionMgr
Ustaw SelMgr = activeDocument.SelectionManager
' Pobieranie wybranego obiektu Entity
Ustaw selEntity = SelMgr.GetSelectedObject3(1)
selType = SelMgr.GetSelectedObjectType2(1)
'MsgBox selType
' Typy, które sprawiają, że późniejsze części barf
If (selType = 0) Or (selType = 42) Or (selType = 69) Then
Wyjdź z subwoofera
Zakończ jeżeli:
' Działa to doskonale dla komponentów wybranych z szyfratora funkcji
Jeśli (SelMgr.GetSelectedObjectType2(1) = 20) Then
– Tak!
activeDocument.OpenCompFile
Wyjdź z subwoofera
Zakończ jeżeli:
'Wyodrębnij nazwę ścieżki z wybranej jednostki.
Jeśli (activeDocument.GetType = swDocASSEMBLY) Następnie
' Pobierz obiekt Component będący właścicielem
Set owningComponent = selEntity.GetComponent
' Pobierz nazwę ścieżki komponentu
componentpath = owningComponent.GetPathName
' Ścieżka komponentu MsgBox
' Otwórz część w jej własnym oknie, tak!
Ustaw część = swApp.ActivateDoc(ścieżka komponentu)
Wyjdź z subwoofera
Zakończ jeżeli:
Koniec subwoofera
Z góry dziękuję za odpowiedzi.
Pozdrowienia