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