Witaj społeczność.
Aby opracować makro w mojej firmie, chciałbym zautomatyzować tworzenie wirtualnych części w montażu.
Jednak nie mogę opracować kodu, który pozwala na tę akcję.
Poniżej znajduje się początek moich badań.
Dim swApp As Object
Sub main()
Ustaw swApp = Application.SldWorks
Ustaw swmodel = swApp.ActiveDoc
Dim swModelTitle As SldWorks.ModelDoc2
'-------------------------------------------------------------------------------------------------------------
"Sprawdzanie, czy dokument pliku asm jest otwarty
'-------------------------------------------------------------------------------------------------------------
Jeśli nie swmodel jest niczym, to' jeśli otwarty jest plik SW
Debug.Print "otwierany jest plik SW" ' następnie msg debug i kontynuuj
W przeciwnym razie: MsgBox ("Nie ma otwartego pliku SW, otwórz zestaw i uruchom ponownie makro") 'jeśli nie ma otwartego pliku SW => msg
Wyjdź z subwoofera
Zakończ jeżeli:
Dim type_doc As String (Ciąg)
type_doc = swDocumentTypes_e.swDocPART
Debug.Print type_doc
Jeśli swmodel. GetType = swDocumentTypes_e.swDocASSEMBLY Następnie
Debug.Print "Otwarty plik jest plikiem zestawu"
W przeciwnym razie: Debug.Print "otwarty plik nie jest plikiem zestawu, otwórz zestaw i uruchom ponownie makro"
MsgBox ("otwarty plik nie jest plikiem zestawu, otwórz zestaw i uruchom ponownie makro")
Wyjdź z subwoofera
Zakończ jeżeli:
'----------------------------------------------------------------------------------------------------------
'Pobieranie nazwy pliku
'----------------------------------------------------------------------------------------------------------
Przyciemnij ścieżkę jako ciąg
Dim name_asm As String
name_asm = SWmodel. GetTitle (DostaćTytuł)
path = model SW. GetPathName (Nazwa_ścieżki)
Debug.Print "nazwa pliku: " & name_asm
Debug.Print "ścieżka:" & ścieżka
Słońce nom_asm
nom_asm = Left(name_asm, (InStrRev(name_asm, ".", -1, vbTextCompare) - 1))
Debug.Print nom_asm
'-----------------------------------------------------------------------------------------------------------
"Tworzenie części do nadruku
'-----------------------------------------------------------------------------------------------------------
Dim nom_pe As String
nom_pe = "EMP_" & nom_asm
Debug.Print "odcisk nazwy części: " & nom_pe
Słońce new_part
boolstatus = swmodel. Extension.SelectByID2("Płaszczyzna twarzy", "PŁASZCZYZNA", 0, 0, 0, fałsz, 0, nic, 0) 'Wybieranie płaszczyzny ściany
new_part = SWmodel. InsertNewVirtualPart(boolstatus, nom_pe)
SWMODEL. ForceRebuild3 Prawda
SWMODEL. ViewZoomtofit2 (WidokPowiększenieDofit2)
Koniec subwoofera
Kod błędu uzyskany na linii new_part = ....
Czy masz pojęcie, co robię źle???
Przyznam, że przykład pomocy API wprawia mnie w zakłopotanie...
sans_titre.png