Hallo ihr alle
Ich arbeite gerade an einem VBA-Makro in SolidWorks 2017, um ein Teil im STEP-Format zu exportieren und es automatisch mit Bamboo Studio zu öffnen. Trotz meiner Bemühungen funktioniert das Makro jedoch nicht wie erwartet und ich habe Schwierigkeiten mit der STEP-Aufnahmefunktion.
Hier ist die aktuelle Version meines Makros:
Sub ExportAndOpenWithBambooStudio()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim partDoc As SldWorks.partDoc
Dim stepFileName As String
Dim bambooStudioPath As String
' Chemin du fichier STEP exporté
stepFileName = "mon chemin \Exporte.step"
' Chemin vers Bamboo Studio
bambooStudioPath = "C:\Program Files\Bambu Studio.exe"
' Initialisation de l'application SolidWorks
Set swApp = CreateObject("SldWorks.Application")
' Vérifier si SolidWorks est en cours d'exécution
If swApp Is Nothing Then
MsgBox "SolidWorks n'est pas en cours d'exécution. Veuillez démarrer SolidWorks et réessayer.", vbExclamation
Exit Sub
End If
' Vérifier si un document est ouvert dans SolidWorks
If swApp.ActiveDoc Is Nothing Then
MsgBox "Aucun document n'est ouvert dans SolidWorks. Veuillez ouvrir un document et réessayer.", vbExclamation
Exit Sub
End If
' Récupérer le modèle actif
Set swModel = swApp.ActiveDoc
' Vérifier si le document est une pièce (part)
If swModel.GetType <> swDocPART Then
MsgBox "Le document actif n'est pas une pièce (part). Veuillez ouvrir une pièce et réessayer.", vbExclamation
Exit Sub
End If
' Convertir le document en objet de pièce
Set partDoc = swModel
' Exporter le modèle au format STEP
If Not SaveAsSTEP(partDoc, stepFileName) Then
MsgBox "Erreur lors de l'enregistrement de la pièce au format STEP.", vbExclamation
Exit Sub
End If
' Fermer le modèle sans enregistrer les modifications
swModel.CloseDoc
' Ouvrir le fichier STEP avec Bamboo Studio
OpenWithBambooStudio bambooStudioPath, stepFileName
End Sub
Function SaveAsSTEP(ByVal partDoc As SldWorks.partDoc, ByVal stepFileName As String) As Boolean
On Error Resume Next
Dim docExt As SldWorks.ModelDocExtension
Set docExt = partDoc.Extension
docExt.SaveAs stepFileName, swSaveAsCurrentVersion, swSaveAsOptions_Silent, Empty, Empty, Empty
SaveAsSTEP = (Err.Number = 0)
On Error GoTo 0
End Function
Sub OpenWithBambooStudio(ByVal bambooStudioPath As String, ByVal stepFileName As String)
On Error Resume Next
Dim objShell As Object
Set objShell = CreateObject("WScript.Shell")
objShell.Run """" & bambooStudioPath & """ """ & stepFileName & """", vbNormalFocus
Set objShell = Nothing
On Error GoTo 0
End Sub
Ich habe bereits mehrere Ansätze ausprobiert, einschließlich der Verwendung verschiedener Methoden zum Speichern im STEP-Format, aber ohne Erfolg. Ich erhalte immer wieder die Fehlermeldung "Fehler beim Speichern des Teils im STEP-Format".
Wenn jemand Erfahrung mit SolidWorks Makros hat oder Ideen hat, wie dieses Problem behoben werden kann, wäre ich sehr dankbar für jede Hilfe.
PS: Ich habe nur einen grundlegenden Code, und der Code wurde mit Hilfe von ChatGPT generiert.
Vielen Dank im Voraus!
Herzliche Grüße
Hallo
Das Problem liegt im Aufzeichnungspfad der Schrittdatei. Die folgende Zeile kann nicht funktionieren, da sie auf keinen Pfad zeigt.
stepFileName = "mon chemin \Exporte.step"
Muss durch ein C: ersetzt werden....
Wenn die Dateien dann im Gleichschritt mit dem geöffneten Dateinamen oder dessen Eigenschaften gespeichert werden müssen, benötigen Sie einen Code, der etwas "komplexer" ist als der, den Chat GPT anbietet
2 „Gefällt mir“
Hallo Cyril,
Vielen Dank für Ihre Antwort.
In meinem Code habe ich den richtigen Pfad eingefügt, den ich im Beitrag hier aus Gründen der Vertraulichkeit geändert habe.
Re
Versuchen Sie, diese Zeile zu ändern:
docExt.SaveAs stepFileName, swSaveAsCurrentVersion, swSaveAsOptions_Silent, Nothing, 0, 0
1 „Gefällt mir“
Hallo
Frohes Neues Jahr für Sie. Ich habe danach gesucht, wie ich den Fehler "Fehler beim Aufzeichnen des Teils im STEP-Format" beheben kann, und hier ist, was ich gefunden habe... Zum Testen, und wie immer ohne Garantie, dass es funktioniert, aber trotzdem testen
-
STEP-Dateidaten prüfen: Dieser Fehler kann durch problematische Daten in der STEP-Datei verursacht werden. Sie können versuchen, die Option "3D-Verbindung" in den SolidWorks Systemoptionen zu deaktivieren, um dieses Problem zu umgehen
Hier ist ein Link auf Englisch, um Ihnen zu helfen: Fehler beim ungültigen Registrierungsindex beim Importieren von STEP in SOLIDWORKS
-
Achten Sie beim Exportieren in das STEP-Format darauf, dass die Exportoptionen korrekt eingestellt sind. Dies kann Einstellungen wie die Ausgabe als Volumen-/Polygongeometrie oder das Exportieren von Skizzenelementen umfassen
STEP-Exportoptionen - 2022 - SOLIDWORKS Hilfe
-
Wenn das Problem weiterhin besteht, können Sie die VBA-Debugtools verwenden, um das Verhalten des Makros zu untersuchen. Dies kann Ihnen helfen, die Fehlerquelle zu identifizieren und gegebenenfalls Korrekturen vorzunehmen.
VBA Debugger - Der CAD-Programmierer
Auf der anderen Seite können Sie es auch mit den folgenden Lösungen versuchen:
-
Überprüfen Sie zunächst, ob Sie über die erforderlichen Berechtigungen zum Speichern von Dateien im angegebenen Verzeichnis verfügen. Manchmal können Sicherheitseinschränkungen verhindern, dass Dateien gespeichert werden.
-
ChatGPT verwendet On Error Resume Next in Ihrer SaveAsSTEP-Funktion, was bedeutet, dass der Code im Falle eines Fehlers die nächste Zeile weiter ausführt. Dies kann es schwierig machen, genau zu bestimmen, wo der Fehler auftritt. Sie können die Option Bei Fehler Gehe zu verwenden, um den Ausführungsablauf im Falle eines Fehlers an eine bestimmte Bezeichnung zu leiten, in der Sie detaillierte Informationen zum Fehler anzeigen können.
-
La méthode SaveAs renvoie un booléen indiquant si l’opération a réussi ou non. Vous pouvez utiliser cette valeur de retour pour déterminer si l’opération a réussi et afficher un message d’erreur approprié.
Im Folgenden finden Sie ein Beispiel dafür, wie Sie Ihre SaveAsSTEP-Funktion so ändern können, dass sie einige der folgenden Vorschläge enthält:
Funktion SaveAsSTEP(ByVal partDoc As SldWorks.partDoc, ByVal stepFileName As String) Als boolescher Wert
Bei Fehler Gehe zu ErrorHandler
Dim docExt als SldWorks.ModelDocExtension
Festlegen von docExt = partDoc.Extension
SaveAsSTEP = docExt.SaveAs(SchrittDateiname, swSaveAsCurrentVersion, swSaveAsOptions_Silent, Leer, Leer, Leer)
Exit-Funktion
Fehler-Handler:
MsgBox "Fehler beim Aufzeichnen des Teils im STEP-Format. Fehlerdetails: " & Err.Description, vbExclamation
SpeichernAsSCHRITT = Falsch
Ende-Funktion
In der Hoffnung, Ihnen geholfen zu haben, voranzukommen
Mit freundlichen Grüßen
Re
Vielen Dank für Ihre Antworten, es gibt Besseres!
Wenn ich das Makro starte, bekomme ich dank des Codes von @Cyril.f keine Fehlermeldung mehr, und es wird eine STEP-Datei an der richtigen Stelle erstellt, aber nicht geöffnet.
Ich habe kein bambu studio, also kann ich nicht helfen. Mal sehen, ob nicht der Shell-Befehl das Problem ist.
Probieren Sie es aus, ohne einen Raum zu öffnen, um zu sehen, ob BombuStudio geöffnet wird oder nicht.
Zu Ihrer Information, in Ihrem Code schreiben Sie Bambus und die Software heißt bambuStudio (Internet) für die Variablen ist es keine große Sache, aber im Dateipfad kann es problematisch sein.
Vielen Dank für Ihr Feedback.
Es funktioniert. Ich hatte einen kleinen Fehler im Pfad der Software gemacht.
bambooStudioPath = "C:\Program Files\Bambu Studio.exe"
Statt:
bambooStudioPath = "C:\Program Files\Bambu Studio\bambu-studio.exe"
Vielen Dank an alle!
1 „Gefällt mir“
Ich werde den endgültigen Code mit Ihnen teilen, wenn es Interessenten gibt:
Sub ExportAndOpenWithBambooStudio()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim partDoc As SldWorks.partDoc
Dim stepFileName As String
Dim bambooStudioPath As String
' Chemin du fichier STEP exporté
stepFileName = "C:\**CHEMIN ICI**\Exporte.step"
' Chemin vers Bamboo Studio
bambooStudioPath = "C:\Program Files\Bambu Studio\bambu-studio.exe"
' Initialisation de l'application SolidWorks
Set swApp = CreateObject("SldWorks.Application")
' Vérifier si SolidWorks est en cours d'exécution
If swApp Is Nothing Then
MsgBox "SolidWorks n'est pas en cours d'exécution. Veuillez démarrer SolidWorks et réessayer.", vbExclamation
Exit Sub
End If
' Vérifier si un document est ouvert dans SolidWorks
If swApp.ActiveDoc Is Nothing Then
MsgBox "Aucun document n'est ouvert dans SolidWorks. Veuillez ouvrir un document et réessayer.", vbExclamation
Exit Sub
End If
' Récupérer le modèle actif
Set swModel = swApp.ActiveDoc
' Vérifier si le document est une pièce (part)
If swModel.GetType <> swDocPART Then
MsgBox "Le document actif n'est pas une pièce (part). Veuillez ouvrir une pièce et réessayer.", vbExclamation
Exit Sub
End If
' Convertir le document en objet de pièce
Set partDoc = swModel
' Exporter le modèle au format STEP
If Not SaveAsSTEP(partDoc, stepFileName) Then
MsgBox "Erreur lors de l'enregistrement de la pièce au format STEP.", vbExclamation
Exit Sub
End If
' Ouvrir le fichier STEP avec Bamboo Studio
OpenWithBambooStudio bambooStudioPath, stepFileName
End Sub
Function SaveAsSTEP(ByVal partDoc As SldWorks.partDoc, ByVal stepFileName As String) As Boolean
On Error Resume Next
Dim docExt As SldWorks.ModelDocExtension
Set docExt = partDoc.Extension
docExt.SaveAs stepFileName, swSaveAsCurrentVersion, swSaveAsOptions_Silent, Nothing, 0, 0
SaveAsSTEP = (Err.Number = 0)
On Error GoTo 0
End Function
Sub OpenWithBambooStudio(ByVal bambooStudioPath As String, ByVal stepFileName As String)
On Error Resume Next
Dim objShell As Object
Set objShell = CreateObject("WScript.Shell")
objShell.Run """" & bambooStudioPath & """ """ & stepFileName & """", vbNormalFocus
Set objShell = Nothing
On Error GoTo 0
End Sub
1 „Gefällt mir“
Guten Abend
Ich hatte die Bemerkung nicht gemacht, aber ich hatte meine Zweifel daran.