Macro Solidworks

Bonjour à tous,

Je souhaite faire une macro pour exporter mes présentations au format PDF & DWG.

Jusque la pas de soucis j'y arrive, par contre j'aimerai que mon fichier PDF & DWG crée via cette macro porte le nom de ma présentation ouvert ?

C'est la que je but, j'ai bien compris le système d'édition de la macro, mais je ne sais pas quoi rentrer.

' Save As
longstatus = Part.SaveAs3("C:\Users\dao\Desktop\MACRO_PDF-DWG\ ici.DWG", 0, 0)
End Sub

Je pense que tout ce joue la ou j'ai écris ici il faut surement rentrer un truc du genre "Filename" non ?
Merci d'avance ;)

EDIT: Si vous avez des liens d'ou je peux recuperer toutes les commandes de la macro ça m'interesse :D

Bonjour,

C'est apparemment la fonction GetTitle que tu cherche. Donc dans ta macro il faut que tu récupère ce GetTitle et que tu retravaille le chemin de ton fichier avec le résultat obtenu du GetTitle.

Cordialement,

 

2 « J'aime »

Bonjour et merci pour la réponse ,

Désolé, c'est la 1ere fois que je met les pied dans la Macro, je ne comprend pas, ça ne marche pas ^^

' Save As
longstatus = Part.SaveAs3("C:\Users\dao\Desktop\MACRO_PDF-DWG\GetTitle.PDF", 0, 0)
End Sub

Ce n'est pas la ?

 

Bonjour,

Non ce n'est pas du tout comme ça !

GetTitle est une fonction de l'API qui permet de récupérer, sous forme de texte, le nom du fichier ouvert dans Solidworks, là tu as juste écrit que ton fichier PDF doit se nommer GetTitle.PDF.

Si tu n'as jamais fait de macro et/ou programmation il va soit d'abord falloir que tu te documentes un peu sur le fonctionnement d'un langage de programmation avant d'en faire, soit que tu poste ta macro complète et que tu expliques ce que tu souhaites modifier comme fonctionnement en espérant que quelqu'un veuille bien s'y coller.

J'avoue ne pas comprendre la remarque "Jusque la pas de soucis j'y arrive" du début de ta question.

Cordialement,

Oui il faut que tu recupere en premier le nom de ton fichier avec la fonction getTitle.

J'avoue aussi pas bien comprendre le "Jusque la pas de soucis j'y arrive"...

Essaye ca :


'déclaration des variables
Dim swApp As Object
Dim Part As Object
Dim longstatus As Long
dim nomfichier as string

Sub enregistrement()

'initialisation des variables objet
Set swApp = Application.SldWorks
Set Part = swApp.ActiveDoc

'récupération du nom fichier part
Nomfichier = Part.GetTitle

'suppression de l'extension solidworks
Nomfichier = Strings.Left(Nomfichier, Len(Nomfichier) - 7)

'enregistrement du fichier en pdf
longstatus = Part.SaveAs3("C:\Users\dao\Desktop\MACRO_PDF-DWG\" & nomfichier & ".PDF", 0, 0)

end sub

 

 

2 « J'aime »

Ok pas de problème.

Dans le fond je comprends comment ça marche si vous voulez, mais effectivement faut que je me pose plus sur le problème et la programmation.

En fait c'est relativement simple et je pense même que cette macro doit déjà exister.

Je souhaite juste que une fois que ma mise en plan est terminée, je clique sur un bouton, qui me génère un PDF et un DWG dans un dossier mais avec le nom de la mise en plan ouverte.

Si j'ouvre une nouvelle mise en plan, je souhaite que cette macro génère d'autres fichiers bien distinct et nommés avec cette mise en plan.

Désolé pas sur d'être trop clair ...

C'est ce que fait l'exemple donné par bengous , il n'y a plus qu'à ajouter l'enregistrement en DWG sur le même principe que pour le PDF ...

1 « J'aime »

Oui le je t'ai mis avec l'extension pdf mais je pense que cela doit marcher si tu rajoute la ligne

longstatus = Part.SaveAs3("C:\Users\dao\Desktop\MACRO_PDF-DWG\" & nomfichier & ".DWG", 0, 0)

 

Juste apres celle qui cré ton pdf. Et je sais pas si ca fonctionne, je n'ai pas fait tourner cette macro.

1 « J'aime »

Je sais bien D.roger il y a eu un bug je ne voyais plus les commentaires on a du repondre en même temps en faite.
Je test et reviens vers vous pour vous dire ;)
Merci dans tous les cas :D

EDIT: Mon visual basic est en anglais est ce que ça peut jouer ?

Dim swApp As Object

Dim Part As Object
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long

Sub main()

Set swApp = Application.SldWorks

Set Part = swApp.ActiveDoc
Part.SheetPrevious
Part.SheetNext
boolstatus = Part.EditRebuild3()

' Redraw
Part.GraphicsRedraw2

' Zoom to Area
Part.ViewZoomTo2 0, 0, 0, 0.1, 0.1, 0.1

' Zoom to Area
Part.ViewZoomTo2 0, 0, 0, 0.1, 0.1, 0.1

' Zoom To Fit
Part.ViewZoomtofit2

' Redraw
Part.GraphicsRedraw2

' Save As
longstatus = Part.SaveAs3("C:\Users\dao\Desktop\MACRO_PDF-DWG\???.DWG", 0, 0)

' Save As
longstatus = Part.SaveAs3("C:\Users\dao\Desktop\MACRO_PDF-DWG\???", 0, 0)
End Sub

 

je t'ai fait un code que t'as meme pas utilisé...

Bon essaye de faire comme ca

Dim swApp As Object

Dim Part As Object
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long
dim nomfichier as string

Sub main()

Set swApp = Application.SldWorks

Set Part = swApp.ActiveDoc
Part.SheetPrevious
Part.SheetNext
boolstatus = Part.EditRebuild3()

' Redraw
Part.GraphicsRedraw2

' Zoom to Area
Part.ViewZoomTo2 0, 0, 0, 0.1, 0.1, 0.1

' Zoom to Area
Part.ViewZoomTo2 0, 0, 0, 0.1, 0.1, 0.1

' Zoom To Fit
Part.ViewZoomtofit2

' Redraw
Part.GraphicsRedraw2

'récupération du nom fichier part
Nomfichier = Part.GetTitle

'suppression de l'extension solidworks
Nomfichier = Strings.Left(Nomfichier, Len(Nomfichier) - 7)

' Save As
longstatus = Part.SaveAs3("C:\Users\dao\Desktop\MACRO_PDF-DWG\" & nomfichier & ".DWG", 0, 0)

' Save As
longstatus = Part.SaveAs3("C:\Users\dao\Desktop\MACRO_PDF-DWG\" & nomfichier & ".pdf", 0, 0)
End Sub

 

Et je pense que tes zoom dépendront de la position de départ, donc je pense qu'il vaut mieux que tu cadre toi meme avant d'enregistrer.

1 « J'aime »

Bengous ne le prend pas mal je débute dans le truc ^^
Si j'ai bien essayé ton code ne le prend pas mal du tout c'est juste que je découvre

Au moment ou j'arrive a cette ligne:

' Save As
longstatus = Part.SaveAs3("C:\Users\dao\Desktop\MACRO_PDF-DWG\ & "nomfichier" & ".DWG", 0, 0)

 

Il me dit:
"Erreur de compilation
Attendu: séparateur de liste ou )"

C'est bon ça marche merci beaucoup bengous pour ta patience.

Encore désolé mais faut que j'arrive a bien tout comprendre.

oui j'avais oublié le " je corrige

Pas de soucis je le prend pas mal

Tu connais un site ou autre ou je peux apprendre quelque bases etc

Bonne journée, merci encore ;)

Bonjour Maxbzh,

Tu trouveras ICI un fil de discussion qui a traité le sujet sur l'apprentissage de la programmation sur Solidworks, je te conseille de le lire jusqu'au bout, tu y trouveras tout un tas de liens intéressant.

Cordialement,