Après quelques recherches et tentatives voila ce que j'ai compilé:
Option Explicit
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swDraw As SldWorks.DrawingDoc
Dim Filepath As String
Dim fileName As String
Dim Revision As String
Dim exportData As SldWorks.ExportPdfData
Dim lErrors As Long
Dim lWarnings As Long
Dim confName As String
Dim revNmb As String
Dim val As String
Dim resolved As Boolean
Dim swview As SldWorks.View
Dim swRefModel As ModelDoc2
Dim swRefAssy As AssemblyDoc
Dim swCustPropMgr As SldWorks.CustomPropertyManager
Dim ValOut As String
Dim numéro As String
Dim description As String
Sub Main()
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
If swModel Is Nothing Then
MsgBox "Tu as pensé à ouvrir ta mise en plan?", vbCritical
End
End If
If swModel.GetType <> swDocDRAWING Then
MsgBox "Et si tu ouvrais ta mise en plan avant?", vbCritical
End
End If
Set swDraw = swModel
If swDraw.GetPathName = "" Then
swDraw.Save
End If
If swModel.GetType = swDocDRAWING Then ' Pour savoir si le document est un plan
Set swDraw = swApp.ActiveDoc
Set swview = swDraw.GetFirstView 'selectionne le fond de plan
Set swview = swview.GetNextView 'selectionne la premier vue
Set swRefModel = swview.ReferencedDocument
Set swCustPropMgr = swRefModel.Extension.CustomPropertyManager("")
swCustPropMgr.Get4 "Ville", True, ValOut, "Ville", False 'récupère la valeur de la propriété "Ville"
swCustPropMgr.Get5 "Rue/Quartier", True, ValOut, "Rue/Quartier", False 'récupère la valeur de la propriété "Rue/Quartier"
swCustPropMgr.Get2 "indice", True, ValOut, "indice", False 'récupère la valeur de la propriété "indice"
Dim dateNow As String
dateNow = Replace(Date, "/", ".")
Filepath = "D:\Téléchargements\Plan PDF"
Filepath = Filepath + "\"
fileName = ValOut & " " & "-" & " " & ValOut & " " & "-" & " " & "Ind." & " " & ValOut & " " & "-" & " " & dateNow
swDraw.SaveAs (Filepath + fileName + ".PDF")
Exit Sub
End If
End Sub
Qu'on soit claire, je n'ai compris qu'une petite partie de tout ça mais c'est fonctionnel sauf une partie.
J'ai regardé plusieurs sujet de récupération de propriété mais je ne comprends pas comment cela fonctionne:
swCustPropMgr.Get4 "Ville", True, ValOut, "Ville", False 'récupère la valeur de la propriété "Ville"
swCustPropMgr.Get5 "Rue/Quartier", True, ValOut, "Rue/Quartier", False 'récupère la valeur de la propriété "Rue/Quartier"
swCustPropMgr.Get2 "indice", True, ValOut, "indice", False 'récupère la valeur de la propriété "indice"
le Get4 ou Get5... je ne vois pas comment dire :
La valeur assigné à "Ville" est ce qu'il y a dans la case suivante
et ensuite, pouvoir le retranscrire dans le nom car pour l'instant, hormis la date, les noms des propriétés ne s'affiche pas. Voila le résultat que j'obtiens: " - - Ind. - 04.02.2019.PDF"
De plus, pour comprendre un peu plus, à quoi sert toutes les lignes en dessous de "Option Explicit" du style:
Dim swApp As SldWorks.SldWorks
Merci d'avance