Cześć wszystkim!
Za pomocą makra programu Excel otwieram kilka części w SolidWorks. Chciałbym zrobić makro, które pozwoli Ci otworzyć plan pierwszego aktywnego dokumentu, zapisać go jako PDF, zamknąć plan, zapisać część w STEP, a następnie zamknąć pomieszczenie i przejść do następnego pokoju.
Dopiero zaczynam przygodę z makrami, więc patrzę na wszystko, co jest robione i chwytam to na prawo i lewo.
Aby zapisać plan w oczyszczalni ścieków:
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Sub main()
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
swModel.Extension.SaveAs Left(swModel.GetPathName, InStrRev(swModel.GetPathName, ".")) & "STEP", 0, 0, Nothing, 0, 0
swApp.CloseDoc Path
End Sub
Aby zapisać plan w oczyszczalni ścieków:
Dim swApp As Object
Dim Part As Object
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long
Dim FeatureData As Object
Dim Feature As Object
Dim Component As Object
Sub main()
Set swApp = Application.SldWorks
Set Part = swApp.ActiveDoc
Path = Part.GetPathName 'chemin du fichier
Part.SaveAs2 Left(Path, (Len(Path) - 6)) & "PDF", 0, True, False 'Sauvegarde au format PDF
Set Part = Nothing
swApp.CloseDoc Path
End Sub
Problemy, które mam, są następujące:
- Nie mogę znaleźć linii kodu, która pozwala mi otworzyć plan aktywnego dokumentu (który nadal jest pokojem). Próbowałem utworzyć tę linię za pomocą rejestratora makr SoildWorks i kliknąć prawym przyciskiem myszy/otworzyć zakład na część blalba. SLDPRT w planie, ale oszczędza mi jako linię kodu otwarcie planu bla bla. SLDDRW, a nie otwarcie planu aktywnego dokumentu.
- A moim drugim problemem jest stworzenie pętli. Znalazłem strukturę mojej pętli:
Sub boucle_while()
While ?????????????? 'TANT QUE un document est actif
Wend
End Sub
Ale nie wiem, jak go poprosić, aby sprawdził, czy rzeczywiście istnieje aktywny dokument!
Myślę, że nie jestem daleko od rzeczy, po prostu musisz sprawdzić stan, dowiedzieć się, jak otworzyć plan...
Dziękuję tym, którzy poświęcą czas, aby przyjrzeć się mojemu problemowi =)!