Eksport makr kroku koloru

Cze wszystkim

Mam problem z eksportem modeli SolidWorks do plików STEP. Kiedy używam metody ręcznej do eksportowania pliku STEP, wyglądy zastosowane do części (kolory, tekstury itp.) są poprawnie zachowywane w pliku. Jednak gdy próbuję zautomatyzować ten proces za pomocą makra VBA, wyglądy nie są eksportowane, mimo że wszystko wydaje się działać dobrze, jeśli chodzi o zapisywanie pliku.

Oto, czego już próbowałem:

  • Eksport ręczny : Kiedy ręcznie wybieram " Eksportuj do KROKU ", wybieram format STEP AP214, który pozwala mi zachować wygląd.
  • Eksport za pomocą makra VBA : Za pomocą metody .SaveAs opisanej w makrze zapisywany jest plik STEP, ale bez jego wystąpień.

Zaznaczyłem opcje eksportu i opcja " Eksportuj wyglądy " jest włączona w SolidWorks. Plik jest domyślnie eksportowany w kroku AP203 i myślę, że może to być powód, dla którego pozory nie są zachowywane.

Próbowałem kilku podejść, aby wymusić eksport w AP214 STEP i włączyć niezbędne opcje za pomocą makra, ale doświadczam błędów kompilacji i problemów ze zgodnością z metodami eksportu.

Oto fragment mojego makra, który naprawdę robi wiele innych rzeczy, ale tutaj umieszczam część kroku dotyczącą eksportu

Z góry dziękuję

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

Witam

Musisz wymusić AP214:

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 polubienia

Witam

Działa świetnie, dziękuję!