Convertir en masse 3D en Dxf en gardant l'origine

Bonjour , 

J'ai plusieurs profil 3D sur une pièce (famille de pièce) que je dois convertir en DXF et en gardant leur nom de config comme nom de fichier , après essaie de Batchconverter , je remarque que l'origine de ma pièce n'est pas repris. J'ai tenté une macro mais celà m'arrive pareil.

La seul solution que j'ai trouvé c'est enregistrer sous dxf pour chaque configuration. c'est long et j'ai plusieurs pièce comme ceci à faire. 

Avez-vous peut être une solution à mon problème ? 

En vous remerciant.

Cordialement

Ma macro : 

Option Explicit
Sub main()

    Dim swApp                   As SldWorks.SldWorks
    Dim swModel                 As SldWorks.ModelDoc2
    Dim vConfNameArr            As Variant
    Dim sConfigName             As String
    Dim nStart                  As Single
    Dim i                       As Long
    Dim bShowConfig             As Boolean
    Dim bRebuild                As Boolean
    Dim bRet                    As Boolean
  

    Set swApp = CreateObject("SldWorks.Application")
    Set swModel = swApp.ActiveDoc

    vConfNameArr = swModel.GetConfigurationNames

    For i = 0 To UBound(vConfNameArr)

        sConfigName = vConfNameArr(i)

       
bShowConfig = swModel.ShowConfiguration2(sConfigName)

bRebuild = swModel.ForceRebuild3(False)

Dim FilePath As String
Dim PathSize As Long
Dim PathNoExtension As String
Dim NewFilePath As String

FilePath = swModel.GetPathName
PathSize = Strings.Len(FilePath)
PathNoExtension = Strings.Left(FilePath, PathSize - 6)

NewFilePath = PathNoExtension + sConfigName & ".DXF"

'Export Flat Pattern
bRet = swModel.ExportFlatPatternView(NewFilePath, 1)

Next i

End Sub

 

 


meule_heller_pour_dxf.sldprt

Bonjour,

La fonction "ExportFlatPatternView" est obsolète, dans ta macro il faut utiliser la fonction ExportToDWG2 et voir avec le paramètre "Alignment" pour règler les coordonnées de l'origine et les directions des axes.

Cordialement,

Bonjour , 

Je vous remercie pour votre réponse , 

Avez-vous un exemple de comment l'utiliser ? parce que je comprend pas c'est pour exporter en dwg la non ?

 

Cordialement.

Bonjour,

Comme indiqué dans les paramètres de la fonction, c'est pour un export en DXF ou en DWG :

"FilePath : Path and file name of the exported DXF/DWG file"

Sur le lien que je t'ai donné il y a déjà un exemple, voir ICI. Pour sauvegarder en DXF sur cet exemple, il y a juste à changer la ligne sPathName = sPathName + "dwg" en sPathName = sPathName + "dxf".

Cordialement,

Bonjour , 

Ok je suis pas assez calé pour les macro.. ^^ 

Si je veux que le dxf soit créer à l'emplacement de fichier de mon 3D je doit toucher quelque chose ? et j'aimerai que la macro créer un DXF pour chaque configuration

Si vous avez le temps évidemment

 

Cordialement.

Voici un exemple sur la base de ta macro :

Option Explicit

Sub main()

    Dim swApp                   As SldWorks.SldWorks
    Dim swModel                 As SldWorks.ModelDoc2
    Dim swPart                  As SldWorks.PartDoc
    Dim vConfNameArr            As Variant
    Dim sConfigName             As String
    Dim nStart                  As Single
    Dim i                       As Long
    Dim bShowConfig             As Boolean
    Dim bRebuild                As Boolean
    Dim bRet                    As Boolean
    Dim varAlignment            As Variant
    Dim dataAlignment(11)       As Double
    Dim varViews                As Variant
    Dim dataViews(0)            As String

    Set swApp = CreateObject("SldWorks.Application")
    Set swModel = swApp.ActiveDoc
    
    swModel.ShowNamedView2 "*Face", 1
    swModel.ViewZoomtofit2
    
    dataAlignment(0) = 0#
    dataAlignment(1) = 0#
    dataAlignment(2) = 0#
    dataAlignment(3) = 1#
    dataAlignment(4) = 0#
    dataAlignment(5) = 0#
    dataAlignment(6) = 0#
    dataAlignment(7) = 1#
    dataAlignment(8) = 0#
    dataAlignment(9) = 0#
    dataAlignment(10) = 0#
    dataAlignment(11) = 1#

    varAlignment = dataAlignment

    varViews = dataViews

    vConfNameArr = swModel.GetConfigurationNames

    For i = 0 To UBound(vConfNameArr)

        sConfigName = vConfNameArr(i)

        bShowConfig = swModel.ShowConfiguration2(sConfigName)
        
        bRebuild = swModel.ForceRebuild3(False)

        Dim sPathName As String
        Dim sModelName As String
        
        sModelName = swModel.GetPathName
        
        sPathName = swModel.GetPathName
        sPathName = Left(sPathName, Len(sPathName) - 6)
        sPathName = sPathName + sConfigName + ".dxf"
    
        Set swPart = swModel

        swPart.ExportToDWG2 sPathName, sModelName, swExportToDWG_ExportAnnotationViews, False, varAlignment, False, False, 0, varViews

    Next i

End Sub

Cordialement,

1 « J'aime »

Merci beaucoup. 

Cela va m'aider dans mon travail et surtout dans mon apprentissage du code VBA. 

Cordialement

Bonjour , 

Je me permet de réécrire à propos de cette macro , en effet je souhaite l'améliorer en sélectionnant le dossier ou elle doit enregistrer mais je bloque un peu la , je peux sélectionner le dossier mais elle enregistre quand même ou se trouve le fichier. 

quel bout de code il me manque ? j'essaie de chercher sur le net mais il y a tellement de code différent..

Cordialement.


dxf.swp