Bonjour tout le monde !
Via une macro Excel j'ouvre un certain nombre de pièces sous SolidWorks. J'aimerais faire une macro qui permettrais d'ouvrir le plan du premier document actif, de l'enregistrer en PDF, de fermer le plan, d'enregistrer la pièce en STEP puis de fermer la pièce et de passer à la pièce suivante.
Je commence tout juste dans le monde des macros donc je regarde tout ce qui se fait et j'ai pioché ça à droite à gauche.
Pour enregistrer un plan en STEP :
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
Pour enregistrer un plan en STEP :
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
Les problèmes que j'ai sont les suivants :
- je n'arrive pas à trouver de ligne de code me permettant d'ouvrir le plan du document actif (qui est toujours une pièce). J'ai bien essayé de créer cette ligne avec l'enregistreur de macro de SoildWorks et an faisant un clic droit/ouvrir la mise sur la pièce blalba.SLDPRT en plan mais il m'enregistre comme ligne de code l'ouverture du plan blabla.SLDDRW et non l'ouverture du plan du document actif.
- Et mon deuxième problème est pour créer une boucle. J'ai bien trouvé la structure de ma boucle :
Sub boucle_while()
While ?????????????? 'TANT QUE un document est actif
Wend
End Sub
Mais je ne sais pas comment lui demander de vérifier qu'il y a bien un document actif !
Je pense que je ne suis pas très loin du truc il faut juste vérifier la condition, trouver comment ouvrir le plan...
Merci à ceux qui prendront le temps de jeter un oeil à mon problème =) !