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.
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
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.
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.
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 !
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
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é.
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
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.
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