SW : Export dxf multiple depuis 3D

Bonjour à tous,

Je suis à la recherche d'une macro pour effectuer des export en .dxf de tous les 3D présents dans un fichier. Je m'explique, tous mes fichiers 3D tôleries sont dans un dossier client et je souhaiterai que lorsque j'exécute la macro celle-ci déplie chaque pièces et l'enregistre en fichier .dxf option tôlerie. 

J'ai regardé ce qui existé sur le net, mais je n'ai pas trouvé d'équivalent à ma recherche. 

Merci d'avance

Bonjour,

Regardez voir du côté du planificateur de tâches s'il y a quelques choses.

Batch converter (outil de la suite mycadservices premium)

1 « J'aime »

Explication ici , voir à la fin de la vidéo pour les options d'export des pièces de tôlerie en dxf :  http://youtu.be/wJeSg5cO06s

1 « J'aime »

Malheureusement, je n'ai que la version standard de SW, du coup je voulais passer par une macro.

Voilà la fonction de base inclus dans Solidworks (sans avoir besoin d'outil tiers...) :

Export DXF-DWG - Page 1

Export DXF-DWG - Page 2

Ensuite, en regardant ses fonctions du coté des macros, il devrait y avoir moyen de l'automatiser...

Je ne peux pas aider pour le coté macro.

Merci Olivier, je connais cette méthode, mais quand tu as un dossier de plusieurs pièces à transformer en .dxf c'est super long...

Du coup je souhaitai le même fonctionnement que cette macro => dwg to pdf mais pour passer du Sldprt au .dxf

 

 

Bonjour,

Voici un bout de code qui permet d'enregistrer, à partir d'un sldprt, le déplié d'une tôle en dxf.

Sub main()

    Dim swApp As SldWorks.SldWorks
    Dim swmodel As SldWorks.ModelDoc2
    Dim stPath As String
    Dim lgFichier As Long
    Dim blretval As Boolean
    
    Set swApp = Application.SldWorks

    'on récupére le document actif
    Set swmodel = swApp.ActiveDoc
    
    If Not swmodel Is Nothing Then
       'on vérifie que le fichier est enregisté
        If swmodel.GetPathName = "" Then
            MsgBox "Veuillez enregistrer votre document avant de lancer la macro", vbInformation
            End
        Else
            'on récupére l'emplacement du fichier
            stPath = swmodel.GetPathName

            'on récupére le nombre de caractére jusqu'au . de l'extension
            lgFichier = InStrRev(stPath, ".", -1, vbTextCompare) - 1
            'on récupére le chemin sans l'extention
            If lgFichier > 0 Then
                  stPath = Left(stPath, lgFichier)
            End If
        End If
        
        'si le document est une pièce
        If swmodel.GetType = swDocPART Then
           'on créer le déplié
            blretval = swmodel.ExportFlatPatternView(stPath & ".DXF", 1)
            'on créer le DXF
            blretval = swmodel.SaveAs3(stPath & ".DXF", 0, 0)
        End If
    End If

End Sub

 

Il te reste à écrire le code pour la partie analyse du dossier, chargement de la pièce puis fermeture de cette pièce.

Cordialement,

2 « J'aime »

Merci pour votre aide,

Mon programme fonctionne à présent! Il ouvre, enregistre le dxf et referme toutes les pièces dans le dossier sélectionné.

Je partage

 

 

'-------------------------------------------------------------------------------------------------------------


Option Explicit

Private Const BIF_RETURNONLYFSDIRS As Long = &H1
Private Const BIF_DONTGOBELOWDOMAIN As Long = &H2
Private Const BIF_RETURNFSANCESTORS As Long = &H8
Private Const BIF_BROWSEFORCOMPUTER As Long = &H1000
Private Const BIF_BROWSEFORPRINTER As Long = &H2000
Private Const BIF_BROWSEINCLUDEFILES As Long = &H4000
Private Const MAX_PATH As Long = 260

Function BrowseFolder(Optional Caption As String, Optional InitialFolder As String) As String

Dim SH As Shell32.Shell
Dim F As Shell32.Folder

Set SH = New Shell32.Shell
Set F = SH.BrowseforFolder(0&, Caption, BIF_RETURNONLYFSDIRS, InitialFolder)
If Not F Is Nothing Then
    If F = "Desktop" Then
        BrowseFolder = Environ("USERPROFILE") & "\Desktop"
    Else
        BrowseFolder = F.Items.Item.Path
    End If
End If

End Function

Sub main()
Dim swApp        As SldWorks.SldWorks
Dim swmodel      As SldWorks.ModelDoc
Dim sFileName    As String
Dim Path         As String
Dim nErrors      As Long
Dim nWarnings    As Long
Dim swPart       As SldWorks.PartDoc
Dim PartNoDes    As String
Dim stPath As String
Dim lgFichier As Long
Dim blretval As Boolean


    Set swApp = Application.SldWorks
  '  Set swExportPDFData = swApp.GetExportFileData(1)
  
    
    Path = BrowseFolder("Select a Path/Folder")
    If Path = "" Then
        MsgBox "Please select the path and try again"
        End
    Else
    Path = Path + "\"
    End If
         
    sFileName = Dir(Path & "*.sldprt")
    Do Until sFileName = ""
        Set swmodel = swApp.OpenDoc6(Path + sFileName, swDocPART, swOpenDocOptions_Silent, "", nErrors, nWarnings)
        Set swmodel = swApp.ActiveDoc
        Set swPart = swApp.ActiveDoc
           
                   If swmodel.GetPathName = "" Then
            MsgBox "Veuillez enregistrer votre document avant de lancer la macro", vbInformation
            End
        Else
            'on récupére l'emplacement du fichier
            stPath = swmodel.GetPathName

            'on récupére le nombre de caractére jusqu'au . de l'extension
            lgFichier = InStrRev(stPath, ".", -1, vbTextCompare) - 1
            'on récupére le chemin sans l'extention
            If lgFichier > 0 Then
                  stPath = Left(stPath, lgFichier)
            End If
        End If
        
        'si le document est une pièce
        If swmodel.GetType = swDocPART Then
           'on créer le déplié
            blretval = swmodel.ExportFlatPatternView(stPath & ".DXF", 1)
            'on créer le DXF
            blretval = swmodel.SaveAs3(stPath & ".DXF", 0, 0)
        End If
           
             swApp.QuitDoc swPart.GetPathName
        Set swPart = Nothing
        Set swmodel = Nothing
        sFileName = Dir
    Loop

MsgBox "All Done"
End Sub

'-------------------------------------------------------------------------------------------------------------

4 « J'aime »