Comment nommer un fichier pdf grace au nom de la configuration de la pièce solidworks

Bonjour,

J’ai crée une macro qui me permet d’enregistrer un fichier step avec le nom de la configuration de la pièce enregistrer. Elle marche très bien mais je souhaite faire la même chose avec un plan enregistré en pdf mais ca ne fonctionne pas.

Quelqu’un pourrais m’aider ?

Merci,

PS : Voici la macro pour enregistrer au format step
File Save As STEP.swp (41 Ko)

Bonjour @lucas.bc.41

Heureux de vous voir sur le forum et de vous accueillir.
J’espère que nous pourrons vous aider à résoudre quelques problèmes, mais aussi que nous pourrons profiter de vos savoirs et expériences.

Compte tenu des fêtes il faudra peut être attendre un peu pour avoir la réponse complète à votre demande :slightly_smiling_face:

Cordialement

1 « J'aime »

Bonjour
En attendant que les experts en macro se manifestent, avez-vous fouillé dans la base (bare de recherche en haut)? Il y a des dizaines de sujets concernant votre besoin. Ca pourrait répondre à votre question.

1 « J'aime »

Il manque surtout d’informations comment est fait la mise en plan? Une feuille par configuration?
Une seule mise en plan et tu souhaite changer la configuration du modèle de la mise en plan configuration par configuration et exporter la MEP avec le nom de la config?
Pour une MEP c’est pas si simple que pour exporter un modèle 3D.
Il va donc falloir expliquer plus clairement ton souhait, ou proposer un fichier pour essai.

1 « J'aime »

J’ai réalisé une seule mise en plan qui change en fonction de la configuration sélectionné, Je pense qu’il est compliqué de créer une boucle pour enregistrer un fichier pdf pour chacune des configurations donc d’un un premier temps je souhaite juste enregistrer la configuration active. Après si quelqu’un sait
comment faire une boucle ca serait top !

Pour exporter une mise en plan en pdf: (Save SOLIDWORKS Drawing to PDF Macro to automate the process)

Sub main()

Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swExportPDFData As SldWorks.ExportPdfData
Dim strFilename As String
Dim status As Boolean
Dim errors As Long, warnings As Long

Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc

'Save
status = swModel.Save3(swSaveAsOptions_e.swSaveAsOptions_Silent, errors, warnings)

'Export to PDF if it is a drawing
If (swModel.GetType = swDocDRAWING) Then

'Ici la variable strFilename à modifier pour récupérer le nom de la configuration active de la MEP
strFilename = swModel.GetPathName
strFilename = Left(strFilename, Len(strFilename) - 6) & "pdf"
Set swExportPDFData = swApp.GetExportFileData(1)
swModel.Extension.SaveAs strFilename, 0, 0, swExportPDFData, 0, 0

End If

End Sub

Pour récuperer la config active d’une MEP:
https://help.solidworks.com/2016/English/api/sldworksapi/Get_Configurations_Referenced_in_View_Example_VB.htm

Ensuite il reste à boucler sur chaque config et boucler sur chaque vue de la MEP et de changer la reference de configuration à chaque vue pour la nouvelle config souhaité.

5 « J'aime »

@sbadenis

t’es trop fort ! tout simplement :star_struck:

Cordialement

Merci sbadenis !

J’ai combiné les deux macros que tu m’as donné mais je n’arrive pas à obtenir le resultat souhaité. Ma macro debogue la ligne « Set swDraw = swModel » est me dit que Swdraw = Nothing.
Je ne comprend pas pourquoi ? Voici ma macro modifié.

Sub main()

Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swExportPDFData As SldWorks.ExportPdfData
Dim strFilename As String
Dim status As Boolean
Dim errors As Long, warnings As Long
Dim swDraw As SldWorks.DrawingDoc
Dim swView As SldWorks.View
Dim bRet As Boolean
Dim swconfig As String

Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swDraw = swModel

Debug.Print "File = " & swModel.GetPathName

’ First drawing view is actually the first sheet,
’ so skip getting model name and configuration from
’ the sheet
Set swView = swDraw.GetFirstView
’ Get first drawing view in first sheet
Set swView = swView.GetNextView
Do While Not swView Is Nothing
Debug.Print " View = " + swView.Name
Debug.Print " Model = " + swView.GetReferencedModelName
Debug.Print " Config = " + swView.ReferencedConfiguration

' Récupérez le nom de la configuration active de la vue en cours de traitement
swconfig = swView.ReferencedConfiguration

Set swView = swView.GetNextView
Loop
'Save
status = swModel.Save3(swSaveAsOptions_e.swSaveAsOptions_Silent, errors, warnings)

'Export to PDF if it is a drawing
If (swModel.GetType = swDocDRAWING) Then
’ Générez le nom du fichier PDF en utilisant le nom de la configuration active
strFilename = swModel.GetPathName
strFilename = Left(strFilename, Len(strFilename) - 6) & swconfig & « .pdf »
Set swExportPDFData = swApp.GetExportFileData(1)
swModel.Extension.SaveAs strFilename, 0, 0, swExportPDFData, 0, 0
End If

End Sub

Si quelqu’un sait ou se trouve le problème j’en serais ravi !

PS : Je débute en Macro depuis la semaine dernière, je n’ai pas encore toutes les bases

Bonjour,

Question bête mais sait-on jamais, y a-t-il bien un fichier d’ouvert? Et est-ce bien une mise en plan?

2 « J'aime »

Bonjour,

Aucun souci à la ligne indiquée si un document de mise en plan est ouvert, comme indiqué par Cyril.f.
Pour rendre la macro fonctionnelle, je n’ai fait qu’une seule modification:
au niveau de la sauvegarde au format pdf, il faut supprimer les espaces dans l’extension du nom de fichier: « .pdf » au lieu de " .pdf "…
Solidworks utilise cette extension pour reconnaître le format attendu, ici pdf.

Ligne 43:
strFilename = Left(strFilename, Len(strFilename) - 6) & swconfig & « .pdf »

Et attention aux guillemets dans l’éditeur de texte du forum myCAD, il sont interprétés de façon variable selon ce qu’ils encadrent…

Cordialement.

1 « J'aime »

En effet tout vas bien ! J’avais une pièce et un plan d’ouvert peut-être pour ça…
Plus qu’a faire la boucle, mais je ne sais pas si c’est possible car l’échelle doit être ajusté en fonction de la taille de la pièce

Sinon j’ai trouvé cette macro qui créer chaque mise en plan à partir d’une MEP:

Cela peut-t’aider à avancer par contre pour la mise à l’échelle c’est plus compliqué:

Si tu arrive à combiner tout cela en une macro, c’est que tu auras bien avancé dans ta progression.
Par contre cela commence à ce compliqué fortement.

2 « J'aime »

Ah oui ça commence a faire de belle macro ! Je te remercie pour tout ça, je vais voir ce que je peux faire