Macro pdf 3D

Bonjour à tous,

Voila je cherche un bout de macro pour automatiser l'enregistrement en pdf 3D d'un part. Le problème étant que dans ce même part j'ai plusieurs config. J'ai déjà une macro pour enregistrer toutes les feuilles d'un plan indépendamment en pdf mais j'arrive pas à retranscrire ce code pour les configurations. Quelqu'un connaît peut-être la/les lignes qu'il faudrait changer pour que ça marche. Je vous envoie mon code.

Pour moi, toutes les fonctions sheet devraient être remplacées par des fonctions config, mais je ne connais pas les lignes pour ça. Si une bonne âme charitable s'ennuie, et qu'elle peut m'aider je suis preneur ;)

 

Merci

Cordialement


macro-export-pdf-zpf.swp
1 « J'aime »

Bonjour;

Essayez un truc comme ceci.

'Option Explicit

Sub main()

'Sauvegarde en PDF3D toutes les configurations.

    Dim swApp                       As SldWorks.SldWorks
    Dim swModel                     As SldWorks.ModelDoc2
    Dim swConfigMgr                 As SldWorks.ConfigurationManager
    Dim swConfig                    As SldWorks.Configuration
    Dim vConfigName                 As Variant
    Dim stnameConfig                As String
    Dim vConfigNameArr              As Variant
    Dim ConfCount                   As Variant
    Dim X                           As Variant
    Dim i                           As Integer
    Dim Chemin                      As String
    Dim PDF3dPath                   As String
    Dim status                      As Boolean
    Dim swExportPDFData             As SldWorks.ExportPdfData
    Dim ExportAs3D                  As Boolean
    Dim lErrors                     As Long
    Dim lWarnings                   As Long
   
    Set swApp = Application.SldWorks
    'on récupére le document actif
    Set swModel = swApp.ActiveDoc
    
    Set swConfigMgr = swModel.ConfigurationManager
    'on récupére la configuration active
    Set swConfig = swConfigMgr.ActiveConfiguration
    'on récupére de nom de la configation active
    stnameConfig = swConfig.Name
    'on récupére le nom de toutes les configurations
    vConfigNameArr = swModel.GetConfigurationNames
    
    ConfCount = UBound(vConfigNameArr)

    If ConfCount = 0 Then Exit Sub

    If ConfCount > 0 Then
       
        i = 1
        'on boucle
        For Each vConfigName In vConfigNameArr
    
            'on affiche la configuration
            swModel.ShowConfiguration2 vConfigName
        
            swModel.ShowNamedView2 "*Isometric", -1
            swModel.ViewZoomtofit2
        
            'on force la reconstruction
            swModel.ForceRebuild3 False
                
            'Creation du Chemin et du Nom des fichiers PDF3D
            Chemin = swModel.GetPathName
            X = Split(Chemin, ".")
            Chemin = X(LBound(X))
            PDF3dPath = UCase(Chemin & "Config_" & i) & ".PDF"
            
            'Sauvegarde en PDF 3D de cette configuration
            
            'Verouillage de l'option Saveas PDF 3D
            ExportAs3D = True
            Set swExportPDFData = swApp.GetExportFileData(1)
            swExportPDFData.ExportAs3D = True

            'Sauvegarde du document en PDF 3D
            Dim swModelDocExt      As SldWorks.ModelDocExtension
            Set swModelDocExt = swModel.Extension
            status = swModelDocExt.SaveAs(PDF3dPath, 0, 2, swExportPDFData, lErrors, lWarnings)
 
            i = i + 1
        Next vConfigName
        
    End If
        
    'on Retourne sur la configuration active avant le traitement
    swModel.ShowConfiguration2 stnameConfig
    swModel.ShowNamedView2 "*Isometric", -1
    swModel.ViewZoomtofit2
    
    'on force la reconstruction
    swModel.ForceRebuild3 False
    'on sauvegarde le document
    swModel.Save3 swSaveAsOptions_e.swSaveAsOptions_Silent, 0, 0

End Sub

 

Les PDF3D sont sauvegardés dans le même répertoire que le fichier Solidworks ( sous le Nom : "NomdufichierSolidworks_NumeroDeLaConfiguration.PDF")
A vous de modifier ces valeurs selon vos envies.

Cordialement

 

 

3 « J'aime »

Merci pour la trame, malheureusement le code n'enregistre pas en 3D, il enregistre en pdf simple. Quelqu'un aurait une idée ??

Cordialement

Oui, je l'ai remarqué... j'ai eu du mal à vérouiller la case à cocher "PDF3D" de "Enregistrer Sous".... (Desolé)
J'ai mis à jour mon post précédant, cela devrait fonctionner maintenant. Enfin Normalement.
Cordialement

Non toujours pas, ça enregistre toujours en pdf et non en 3D, mais je pense que c'est pas loin, je test quelque modif de mon côté aussi . Merci pour la rapidité de réponse ;)

Bonne soirée

Cordialement

Bonjour  quentin.fouillouse;

Etrange, la dernière version de ma macro fonctionne très bien sur mon poste (Même après un redémarrage du PC).
J'attend les résultats de vos modifications.

Cordialement.

Votre code nécessite d'avoir Document Manager ? Car si oui c'est peut-être ça mon problème

Cordialement

 

Edit : C'est tout bon ça marche merci, c'est juste moi qui avait pas supprimé une ligne de l'ancien code (l'erreur bête ^^'). Je vous remercie pour votre aide en tout cas 

Bonne journée,

Cordialement

2 « J'aime »

Bonjour;

Ben non, cette macro n'a rien à voir avec "Document Manager" du tout. Mais ravis qu'elle vous convienne.
Merci de bien penser à clore cette discussion si vous êtes satisfait des réponses apportées.

Cordialement.

3 « J'aime »

Bonjour, 

Je me suis permis de récupérer le premier code qui enregistre chaque feuille en PDF , mais il ne répète pas l'opération , il se contente de crée un pdf de la page actuelle , pourriez vous m'aiguiller , mes compétences en VBA sont très limitées. 

Merci d'avance.

Update : apres un redémarrage du PC le programme c'est exécuter correctement merci !