Makro-Export in Farbschritten

Hallo ihr alle

Ich habe ein Problem beim Exportieren von SolidWorks Modellen in STEP-Dateien. Wenn ich die manuelle Methode zum Exportieren einer STEP-Datei verwende, werden die auf das Teil angewendeten Erscheinungsbilder (Farben, Texturen usw.) in der Datei korrekt beibehalten. Wenn ich jedoch versuche, diesen Prozess mit einem VBA-Makro zu automatisieren, werden die Erscheinungsbilder nicht exportiert, obwohl alles in Bezug auf das Speichern der Datei gut zu funktionieren scheint.

Hier ist, was ich bereits ausprobiert habe:

  • Manueller Export : Wenn ich manuell " Nach STEP exportieren" wähle, wähle ich das STEP AP214-Format, wodurch ich das Erscheinungsbild beibehalten kann.
  • Export per VBA-Makro : Mit der Methode .SaveAs im Makro wird die STEP-Datei gespeichert, jedoch ohne Aussehen.

Ich habe die Exportoptionen überprüft und die Option " Erscheinungsbilder exportieren " ist in SolidWorks aktiviert. Die Datei wird standardmäßig in STEP AP203 exportiert, und ich denke, dies könnte der Grund sein, warum die Erscheinungsbilder nicht beibehalten werden.

Ich habe mehrere Ansätze ausprobiert, um den Export in AP214 STEP zu erzwingen und die notwendigen Optionen über das Makro zu aktivieren, aber ich habe Kompilierungsfehler und Kompatibilitätsprobleme mit den Exportmethoden.

Hier ist der Auszug meines Makros, das wirklich viele andere Dinge tut, aber hier habe ich Ihnen den Exportteil des Schritts beigefügt

Vielen Dank im Voraus

Function SaveModelAsSTEP(swModel As ModelDoc2, saveFolderPath As String, value As String, indexValue As String) As String
    Dim stepFileName As String
    Dim fullSTEPPath As String
    Dim status As Boolean
    Dim response As VbMsgBoxResult
    
    ' Vérifier si le modèle est un assemblage
    If swModel.GetType() = swDocASSEMBLY Then
        ' Demander à l'utilisateur s'il souhaite enregistrer le fichier STEP
        response = MsgBox("Il s'agit d'un assemblage. Voulez-vous enregistrer le fichier STEP ?", vbYesNo + vbQuestion, "Enregistrement STEP")
        
        ' Si l'utilisateur choisit non, sortir de la fonction sans enregistrer
        If response = vbNo Then
            SaveModelAsSTEP = ""
            Exit Function
        End If
    End If
    
    ' Formater le nom du fichier STEP
    stepFileName = UCase(Trim(value)) & "-" & Trim(indexValue) & ".STEP"
    fullSTEPPath = saveFolderPath & stepFileName
    
    ' Vérifier si le fichier STEP existe déjà
    If Dir(fullSTEPPath) <> "" Then
        response = MsgBox("Le fichier STEP '" & stepFileName & "' existe déjà." & vbCrLf & _
                          "Voulez-vous l'écraser ?", vbYesNo + vbQuestion, "Fichier existant")
        If response = vbNo Then
            SaveModelAsSTEP = ""
            Exit Function
        End If
    End If
    
    ' Enregistrer le modèle en tant que fichier STEP
    status = swModel.SaveAs(fullSTEPPath)
    
    ' Retourner le chemin du fichier STEP si l'enregistrement est réussi
    If status Then
        SaveModelAsSTEP = fullSTEPPath
    Else
        SaveModelAsSTEP = ""
        MsgBox "Erreur lors de l'enregistrement du fichier STEP.", vbExclamation
    End If
End Function

Hallo

Sie müssen AP214 zwingen:

Private Sub StepParam()
boolstatus = swApp.SetUserPreferenceIntegerValue(swStepAp, 214) 'Force la version AP214
boolstatus = swApp.SetUserPreferenceIntegerValue(swStepExportPreference, swAcisOutputGeometryPreference_e.swAcisOutputAsSolidAndSurface) 'Force l'export en format Solid/Surface Geometry
End Sub

2 „Gefällt mir“

Hallo

Es funktioniert super, danke!