Makro-Export der DXF-Teilefamilie

Hallo Kolleginnen und Kollegen,

Ich komme zu Ihnen, weil ich eine Makro-Quiche bin und eine habe, die ich gerne verbessert hätte. Es funktioniert perfekt, wenn ich es ausführe und alle meine DXF der Teilefamilie erstelle, aber ich kann es nicht so ändern, dass es die Biegelinien in der Presse entfernt.   

Vielen Dank im Voraus für Ihre Hilfe :-)

Dim swApp As Object
Option Explicit
Sub main()
'Déclarations :
Dim swApp                   As SldWorks.SldWorks
Dim swModel                 As SldWorks.ModelDoc2
Dim config                  As SldWorks.Configuration
Dim vConfNameArr            As Variant
Dim sConfigName             As String
Dim i                       As Long
Dim bShowConfig             As Boolean
Dim bRebuild                As Boolean
Dim bRet                    As Boolean
Dim FilePath                As String
Dim PathSize                As Long
Dim PathNoExtension         As String
Dim NewFilePath             As String
Dim Value_                 As String
Dim ResolvedValOut          As String
Dim cusPropMgr              As SldWorks.CustomPropertyManager
Dim wasResolved             As Boolean
Dim Error As Long
Set swApp = CreateObject("SldWorks.Application") 'Lancement de SW
Set swModel = swApp.ActiveDoc 'Récuperation du modèle actif dans SW

vConfNameArr = swModel.GetConfigurationNames 'Création de la liste des configurations
For i = 0 To UBound(vConfNameArr) 'Boucle la liste : de l'élément 0 jusqu'au nombre d'élément dans la liste (Ubound)
    Set config = swModel.GetActiveConfiguration
    Set cusPropMgr = config.CustomPropertyManager
    sConfigName = vConfNameArr(i) 'Recupère l'élément N°i de la liste
    bShowConfig = swModel.ShowConfiguration2(sConfigName) 'Affiche la configuration
    Error = cusPropMgr.Get5("TYPE", True, Value_, ResolvedValOut, wasResolved) 'Récupère la valeur de la proriété "" dans la variable "Value_"
    bRebuild = swModel.ForceRebuild3(False) 'Reconstruction du modèle
    FilePath = swModel.GetPathName 'Récupère le chemin du fichier SW
    PathSize = Strings.Len(FilePath) 'Compte le nombre de caractères du chemin
    
        PathNoExtension = Strings.Left(FilePath, PathSize - 6) 'Récupère le nom de la pièce en enlevant .Sldrt
        NewFilePath = Left(FilePath, InStrRev(FilePath, "\")) & "" & (sConfigName) & ".DXF" 'Remplace le nom par Type + Lg + Nom de la config (sans Flat pattern).dxf
        bRet = swModel.ExportFlatPatternView(NewFilePath, 1) 'Exporte le déplié
    
Next i 'Passe à la prochaine config
End Sub

 


export_dxf_famille_de_piece_-_ac_cobra.swp

Guten Abend

Wenn ich mich nicht irre, ist die Option in dieser alten Methode nicht zugänglich.

 Sie müssen die ExportToDWG2-Methode verwenden, der nicht optimierte Code, der einfach aus der Hilfe entnommen wurde, ist wie folgt:

Dim swApp As Object
Option Explicit
Sub main()
'Déclarations :
Dim swApp                   As SldWorks.SldWorks
Dim swModel                 As SldWorks.ModelDoc2
Dim config                  As SldWorks.Configuration
Dim swPart                  As SldWorks.PartDoc
Dim vConfNameArr            As Variant
Dim sConfigName             As String
Dim i                       As Long
Dim bShowConfig             As Boolean
Dim bRebuild                As Boolean
Dim bRet                    As Boolean
Dim FilePath                As String
Dim PathSize                As Long
Dim PathNoExtension         As String
Dim NewFilePath             As String
Dim Value_                 As String
Dim ResolvedValOut          As String
Dim cusPropMgr              As SldWorks.CustomPropertyManager
Dim wasResolved             As Boolean
Dim Error As Long
Dim varAlignment As Variant
 Dim dataAlignment(11) As Double
 Dim varViews As Variant
 Dim dataViews(1) As String
Set swApp = CreateObject("SldWorks.Application") 'Lancement de SW
Set swModel = swApp.ActiveDoc 'Récuperation du modèle actif dans SW
Set swPart = swModel

vConfNameArr = swModel.GetConfigurationNames 'Création de la liste des configurations
For i = 0 To UBound(vConfNameArr) 'Boucle la liste : de l'élément 0 jusqu'au nombre d'élément dans la liste (Ubound)
    Set config = swModel.GetActiveConfiguration
    Set cusPropMgr = config.CustomPropertyManager
    sConfigName = vConfNameArr(i) 'Recupère l'élément N°i de la liste
    bShowConfig = swModel.ShowConfiguration2(sConfigName) 'Affiche la configuration
    Error = cusPropMgr.Get5("TYPE", True, Value_, ResolvedValOut, wasResolved) 'Récupère la valeur de la proriété "" dans la variable "Value_"
    bRebuild = swModel.ForceRebuild3(False) 'Reconstruction du modèle
    FilePath = swModel.GetPathName 'Récupère le chemin du fichier SW
    PathSize = Strings.Len(FilePath) 'Compte le nombre de caractères du chemin
    
        PathNoExtension = Strings.Left(FilePath, PathSize - 6) 'Récupère le nom de la pièce en enlevant .Sldrt
        NewFilePath = Left(FilePath, InStrRev(FilePath, "\")) & "" & (sConfigName) & ".DXF" 'Remplace le nom par Type + Lg + Nom de la config (sans Flat pattern).dxf
        'bRet = swModel.ExportFlatPatternView(NewFilePath, 1) 'Exporte le déplié
    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
     

    dataViews(0) = "*Current"
    dataViews(1) = "*Front"
     

    varViews = dataViews

    swPart.ExportToDWG2 NewFilePath, FilePath, swExportToDWG_ExportSheetMetal, True, varAlignment, False, False, 13, varViews
    
Next i 'Passe à la prochaine config
End Sub

 

Auf der anderen Seite denke ich, dass die Variablen filepath und pathsize aus der Schleifenverarbeitung entfernt werden sollten, da dieses Makro Datei für Datei funktioniert, wenn ich das richtig verstehe.

@Cyril das Makro, das ich verwende, erstellt den Flatpathern in einem Raum mit mehreren Konfigurationen, indem es ihn mit dem Namen der Konfiguration speichert, das Einzige, was fehlt, ist die Faltlinie im DXF.

Ich habe gerade das Makro getestet, das funktioniert, es erstellt das DXF mit den Faltlinien, erstellt aber nicht mehr die abgefalteten Konfigurationen.  

Hallo

Ich habe letzte Nacht nicht mehr als das gesucht, aber ist es nicht eher als ungefaltete Konfigurationen, die das Makro macht und nicht mehr das DXF von gefalteten Konfigurationen?

In der Tat das Makro, das ich gefunden hatte, fertig: Erstellung des DXF in abgewickelt ohne die Falzlinien und die Konfiguration der abgewickelten aller Konfigurationen des Teils und der von Ihnen geteilten Konfiguration, erstellen Sie nicht mehr die Konfigurationen der abgewickelten in den Konfigurationen, sondern machen Sie alle abgewickelten mit den Falzlinien 

Ich kann eine Beispieldatei haben, weil ich keine zur Hand habe. Ich hatte gerade eine Datei mit einer ungefalteten conf und der Standard-conf und es hat sich bei beiden "Konfigurationen" gut geschleift, aber es scheint mir, dass die beiden dxfs im ungefalteten Visual waren (verknüpft mit der Makrocode-Exportzeile).

Im Anhang sind Beispieldateien, aber es ist unter 2020, eine mit aufgeklappter Gonfig und die andere ohne


lot_de_cornieres.sldprt
lot_de_cornieres_avec_deplie.sldprt

Guten Abend

Im angehängten Code sollte es den Anforderungen entsprechen.

Option Explicit

'Déclarations :
Dim swApp                   As SldWorks.SldWorks
Dim swModel                 As SldWorks.ModelDoc2
Dim config                  As SldWorks.Configuration
Dim cusPropMgr              As SldWorks.CustomPropertyManager
Dim swPart                  As SldWorks.PartDoc
Dim i                       As Long
Dim PathSize                As Long
Dim Error                   As Long
Dim bShowConfig             As Boolean
Dim bRebuild                As Boolean
Dim bRet                    As Boolean
Dim wasResolved             As Boolean
Dim FilePath                As String
Dim PathNoExtension         As String
Dim NewFilePath             As String
Dim Value_                  As String
Dim ResolvedValOut          As String
Dim sConfigName             As String
Dim varAlignment            As Variant
Dim vConfNameArr            As Variant
Dim dataAlignment(11)       As Double
Sub main()

Set swApp = CreateObject("SldWorks.Application") 'Lancement de SW
Set swModel = swApp.ActiveDoc 'Récuperation du modèle actif dans SW
Set swPart = swModel
FilePath = swModel.GetPathName 'Récupère le chemin du fichier SW
PathSize = Strings.Len(FilePath) 'Compte le nombre de caractères du chemin
PathNoExtension = Strings.Left(FilePath, PathSize - 6) 'Récupère le nom de la pièce en enlevant .Sldrt

vConfNameArr = swModel.GetConfigurationNames 'Création de la liste des configurations
For i = 0 To UBound(vConfNameArr) 'Boucle la liste : de l'élément 0 jusqu'au nombre d'élément dans la liste (Ubound)
    If InStr(UCase(vConfNameArr(i)), "SM-FLAT-PATTERN") = 0 Then 'Vérification si Flat Pattern est dans le nom de la configuration
        Set config = swModel.GetActiveConfiguration
        Set cusPropMgr = config.CustomPropertyManager
        sConfigName = vConfNameArr(i) 'Recupère l'élément N°i de la liste
        bShowConfig = swModel.ShowConfiguration2(sConfigName) 'Affiche la configuration
        Error = cusPropMgr.Get5("TYPE", True, Value_, ResolvedValOut, wasResolved) 'Récupère la valeur de la proriété "" dans la variable "Value_"
        bRebuild = swModel.ForceRebuild3(False) 'Reconstruction du modèle
        NewFilePath = Left(FilePath, InStrRev(FilePath, "\")) & "" & (sConfigName) & ".DXF" 'Remplace le nom par Type + Lg + Nom de la config (sans Flat pattern).dxf
        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
        swPart.ExportToDWG2 NewFilePath, FilePath, swExportToDWG_ExportSheetMetal, True, varAlignment, False, False, 13, Null
    End If
Next i 'Passe à la prochaine config

End Sub

 

Es tut mir leid, aber das Makro generiert nicht die entfalteten Konfigurationen, hier ist mein Stück mit dem Makro my. Schauen Sie sich die Konfigurationen an, bevor Sie es starten, und Sie werden verstehen; Ich möchte, dass dieser die Faltlinie im DXF hinzufügt


lot_de_cornieres.sldprt
export_dxf_famille_de_piece_-_ac_cobra.swp

Hallo

Ich habe den Eindruck, dass wir uns nicht verstehen oder das Makro auf meinem und Ihrem Computer nicht auf die gleiche Weise funktioniert.

Diese Zeile: swPart.ExportToDWG2 NewFilePath, FilePath, swExportToDWG_ExportSheetMetal, True, varAlignment, False, False, 13, Null

Exportiert die abgewickelten Falten, indem die Faltlinien hinzugefügt werden.

Nachfolgend finden Sie die Ergebnisse entsprechend den verwendeten Makros.


1_-_30x30x2_lg_1825_x120-macro_ac_cobra.jpg
1_-_30x30x2_lg_1825_x120-macro_modifie.jpg

Ja, die entwickelten sind in Ordnung, aber wenn Sie die von mir verwendete starten, werden die entfalteten Konfigurationen automatisch im Raum erstellt, daher mein vorheriger Beitrag. Wenn Sie sich meine Konfigurationen ansehen und mein Makro starten, sehen Sie, dass die aufgeklappten Konfigurationen erstellt werden, während dies in der von Ihnen erstellten Konfiguration nicht der Fall ist.

Hallo

Ok, wir haben uns nicht verstanden, also müssen wir nur das Argument 1 bis 0 in der Zeile bRet = swModel.ExportFlatPatternView(NewFilePath, 1) übergeben.

Der überarbeitete Code unten:

Option Explicit

'Déclarations :
Dim swApp                   As SldWorks.SldWorks
Dim swModel                 As SldWorks.ModelDoc2
Dim config                  As SldWorks.Configuration
Dim cusPropMgr              As SldWorks.CustomPropertyManager
Dim i                       As Long
Dim PathSize                As Long
Dim Error                   As Long
Dim bShowConfig             As Boolean
Dim bRebuild                As Boolean
Dim bRet                    As Boolean
Dim wasResolved             As Boolean
Dim FilePath                As String
Dim PathNoExtension         As String
Dim NewFilePath             As String
Dim Value_                  As String
Dim ResolvedValOut          As String
Dim sConfigName             As String
Dim vConfNameArr            As Variant
Sub main()

Set swApp = CreateObject("SldWorks.Application") 'Lancement de SW
Set swModel = swApp.ActiveDoc 'Récuperation du modèle actif dans SW
FilePath = swModel.GetPathName 'Récupère le chemin du fichier SW
PathSize = Strings.Len(FilePath) 'Compte le nombre de caractères du chemin
PathNoExtension = Strings.Left(FilePath, PathSize - 6) 'Récupère le nom de la pièce en enlevant .Sldrt

vConfNameArr = swModel.GetConfigurationNames 'Création de la liste des configurations
For i = 0 To UBound(vConfNameArr) 'Boucle la liste : de l'élément 0 jusqu'au nombre d'élément dans la liste (Ubound)
    Set config = swModel.GetActiveConfiguration
    Set cusPropMgr = config.CustomPropertyManager
    sConfigName = vConfNameArr(i) 'Recupère l'élément N°i de la liste
    bShowConfig = swModel.ShowConfiguration2(sConfigName) 'Affiche la configuration
    Error = cusPropMgr.Get5("TYPE", True, Value_, ResolvedValOut, wasResolved) 'Récupère la valeur de la proriété "" dans la variable "Value_"
    bRebuild = swModel.ForceRebuild3(False) 'Reconstruction du modèle
    NewFilePath = Left(FilePath, InStrRev(FilePath, "\")) & "" & (sConfigName) & ".DXF" 'Remplace le nom par Type + Lg + Nom de la config (sans Flat pattern).dxf
    bRet = swModel.ExportFlatPatternView(NewFilePath, 0) 'Export le déplié
Next i 'Passe à la prochaine config

End Sub

 

1 „Gefällt mir“

Hallo @Cyril.f,

 

Entschuldigung für die Verspätung, aber ich bin gerade aus dem Urlaub zurückgekommen; Ich habe es getestet und es funktioniert perfekt. Vielen Dank, dass Sie sich die Zeit genommen haben :-) für mein Problem.