Modifier par macro le préfixe lors d'un export DXF d'un fichier par feuille

Bonjour,

Lorsqu’on génère un DXF ou DWG d’un plan qui a plus d’une feuille, SW génère un fichier par feuille (paramétré comme cela) sauf qu’il les nommes avec le numéro de feuille en préfixe :

Par exemple, si le fichier « AFFAIRE-D1.slddrw » à 3 feuilles, les DXF seront :

    • 00_ AFFAIRE-D1_C.dxf
    • 01_AFFAIRE-D1_C.dxf
    • 02_AFFAIRE-D1_C.dxf

J’aurais aimé plutôt avoir

    • AFFAIRE-D1_C - 01.dxf ou AFFAIRE-D1_C - Feuille1.dxf
    • AFFAIRE-D1_C - 02.dxf ou AFFAIRE-D1_C – Feuille2.dxf
    • AFFAIRE-D1_C - 03.dxf ou AFFAIRE-D1_C – Feuille3.dxf

Avez vous une idée car débutant dans les macros, j'en ai fait une qui ​​​​génère, depuis un Draw, un fichier ZIP contenant le PDF+DXF du Draw (toutes les feuilles) + STEP+PDF3D du modèle mis en plan.

Exemple :

« AFFAIRE-Pièce8.sldprt » ayant 2 configurations dont la 1ère à l’indice B est mise en plan dans le draw « AFFAIRE-D1.slddrw » qui lui est à l’indice C donnera un zip avec :

  • Nom du fichier ZIP : AFFAIRE-D1_C.zip

Contenu :

    • AFFAIRE-D1_C.pdf
    • 00_AFFAIRE-D1_C.dxf
    • 01_AFFAIRE-D1_C.dxf
    • AFFAIRE-Pièce8.1_B.step
    • AFFAIRE-Pièce8.1_B(PDF3D).pdf

Merci de votre aide.

Bonjour,

Tu devrais trouver tout ce que tu veux (et même plus) dans la macro partagée ICI.

Cordialement,

3 « J'aime »

Merci beaucoup,

j'ai en effet pu trouver réponse avec votre exemple mais aussi celui-ci :

https://forum.solidworks.com/thread/75412#comment-397610

en combinant les fichiers proposé en V2.1 et V2.2

 

Il fallait au final ne pas utiliser la fonction d'export de toutes les feuilles dans des fichiers séparés mais traiter chaque feuille dans un fichier unique et l'exporter en définissant son nom en fonction de mes conditions. La partie qui me manquait était donc :

 

'Export DXF manuellement pour avoir le bon nom de fichier DXF et pas le nommage système 00_, 01_, ...
'Set the DXF export option to export active sheet only
swApp.SetUserPreferenceIntegerValue swUserPreferenceIntegerValue_e.swDxfMultiSheetOption, swDxfMultisheet_e.swDxfActiveSheetOnly
sFilePath = Left(swModel.GetPathName, InStrRev(swModel.GetPathName, "\"))
Dim swView              As SldWorks.View
Set swView = swDraw.GetFirstView
Set swView = swView.GetNextView
vSheetName = swDraw.GetSheetNames

    For i = 0 To UBound(vSheetName)
    bRet = swDraw.ActivateSheet(vSheetName(i))
    ' Définition des noms de fichiers
    FinalFileName_dxf = Strings.Left(swfilename, Len(swfilename) - 7) & DrawSepInd & DrawIndRev & " - " & vSheetName(i) & ".dxf"
    
    If Verification(FinalFileName_dxf) = True Then
    PopupEcraserFichier = MsgBox("Un fichier DXF du même nom existe déjà, Voulez-vous le remplacer ?" & vbNewLine & vbNewLine & FinalFileName_dxf, vbYesNoCancel)
        If PopupEcraserFichier = vbNo Then
                    'Ne rien faire
            Else
                If PopupEcraserFichier = vbYes Then
                bRet = swDraw.SaveAs4(FinalFileName_dxf, swSaveAsCurrentVersion, swSaveAsOptions_Silent, nErrors, nWarnings)
                    Else
                        If PopupEcraserFichier = vbCancel Then
                    Exit Sub
                End If
            End If
        End If
    Else
        bRet = swDraw.SaveAs4(FinalFileName_dxf, swSaveAsCurrentVersion, swSaveAsOptions_Silent, nErrors, nWarnings)
    End If
        
    Next i

    ' Switch back to first sheet
    bRet = swDraw.ActivateSheet(vSheetName(0))

 

Merci !