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.sldprtlot_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.sldprtexport_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.jpg1_-_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.