Cze wszystkim
Obecnie pracuję nad makrem VBA w SolidWorks 2017, aby wyeksportować część w formacie STEP i otworzyć ją automatycznie za pomocą Bamboo Studio. Jednak pomimo moich starań makro nie działa zgodnie z oczekiwaniami i mam trudności z funkcją nagrywania STEP.
Oto aktualna wersja mojego makra:
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
Próbowałem już kilku podejść, w tym różnych metod zapisywania w formacie STEP, ale bez powodzenia. Ciągle pojawia się komunikat o błędzie "Błąd podczas zapisywania części w formacie STEP".
Jeśli ktoś ma doświadczenie z makrami SolidWorks lub ma pomysły jak rozwiązać ten problem, byłbym bardzo wdzięczny za wszelką pomoc.
PS: Mam tylko podstawowy kod, a kod został wygenerowany za pomocą ChatGPT.
Z góry dzięki!
Pozdrowienia
Witam
Problem tkwi w ścieżce nagrywania pliku krokowego. Poniższa linia nie może działać, ponieważ nie wskazuje żadnej ścieżki.
stepFileName = "mon chemin \Exporte.step"
Należy zastąpić znakiem C:....
Jeśli pliki muszą być następnie zapisywane w kroku z otwartą nazwą pliku lub jego właściwościami, potrzebujesz kodu, który jest nieco bardziej "złożony" niż ten oferowany przez Chat GPT
2 polubienia
Witaj Cyrylu,
Dziękuję za odpowiedź.
W moim kodzie umieściłem właściwą ścieżkę, którą zmieniłem w poście tutaj ze względu na poufność.
Ponownie
Spróbuj zmienić ten wiersz:
docExt.SaveAs stepFileName, swSaveAsCurrentVersion, swSaveAsOptions_Silent, Nothing, 0, 0
1 polubienie
Witam
Szczęśliwego Nowego Roku dla Ciebie. Szukałem, jak rozwiązać błąd "Błąd podczas nagrywania części w formacie STEP" i oto, co znalazłem... Testować i jak zawsze bez gwarancji, że to zadziała, ale i tak testować 
-
Sprawdź dane pliku STEP: Ten błąd może być spowodowany problematycznymi danymi w pliku STEP. Aby obejść ten problem, można spróbować wyłączyć opcję "3D Interconnect" w opcjach systemu SolidWorks
Oto link w języku angielskim, który może Ci pomóc: Błąd nieprawidłowego indeksu rejestracji podczas importowania STEP do SOLIDWORKS
-
Podczas eksportowania do formatu STEP upewnij się, że opcje eksportu są ustawione poprawnie. Może to obejmować takie ustawienia, jak dane wyjściowe jako geometria objętościowa/wielokątna lub eksport elementów szkicu
Opcje eksportu STEP - 2022 - Pomoc SOLIDWORKS
-
Jeśli problem będzie się powtarzał, możesz użyć narzędzi debugowania VBA, aby sprawdzić zachowanie makra. Może to pomóc w zidentyfikowaniu źródła błędu i wprowadzeniu niezbędnych poprawek.
Debugger VBA — koder CAD
Z drugiej strony możesz również wypróbować następujące rozwiązania:
-
Najpierw sprawdź, czy masz niezbędne uprawnienia do zapisywania plików w określonym katalogu. Czasami ograniczenia bezpieczeństwa mogą uniemożliwić zapisanie plików.
-
ChatGPT używa On Error Resume Next w funkcji SaveAsSTEP, co oznacza, że jeśli wystąpi błąd, kod kontynuuje wykonywanie następnego wiersza. Może to utrudnić dokładne określenie, gdzie występuje błąd. Możesz rozważyć użycie opcji W przypadku błędu GoTo, aby skierować przepływ wykonywania do określonej etykiety w przypadku błędu, gdzie można wyświetlić szczegółowe informacje o błędzie.
-
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é.
Oto przykład tego, jak można zmodyfikować funkcję SaveAsSTEP, aby uwzględnić niektóre z tych sugestii:
Funkcja SaveAsSTEP(ByVal partDoc As SldWorks.partDoc, ByVal stepFileName As String) Jako wartość logiczna
W przypadku błędu GoTo ErrorHandler
Dim docExt As SldWorks.ModelDocExtension
Ustaw docExt = partDoc.Extension
SaveAsSTEP = docExt.SaveAs(nazwa_pliku_kroku, swSaveAsCurrentVersion, swSaveAsOptions_Silent, pusty, pusty, pusty)
Funkcja wyjścia
Obsługa błędów:
MsgBox "Błąd podczas nagrywania części w formacie STEP. Szczegóły błędu: " & Err.Description, vbExclamation
SaveAsSTEP = Fałsz
Zakończ funkcję
Mam nadzieję, że pomogłem ci iść naprzód
Z poważaniem
Ponownie
Dziękuję za odpowiedzi, jest lepiej!
Po uruchomieniu makra nie pojawia się już komunikat o błędzie dzięki kodowi @Cyril_f , a on tworzy plik STEP we właściwym miejscu, ale go nie otwiera.
Nie mam bambu studio, więc nie mogę pomóc. Zobaczmy, czy to nie polecenie Shell jest problemem.
Wypróbuj go bez otwierania pokoju, aby sprawdzić, czy BombuStudio się otwiera, czy nie.
FYI, w swoim kodzie piszesz, a oprogramowanie nazywa się bambuStudio (internet) dla zmiennych nie jest to wielka sprawa, ale w ścieżce pliku może to być problematyczne.
Bardzo dziękujemy za Twoją opinię.
To działa. Popełniłem mały błąd na ścieżce oprogramowania.
bambooStudioPath = "C:\Program Files\Bambu Studio.exe"
Zamiast:
bambooStudioPath = "C:\Program Files\Bambu Studio\bambu-studio.exe"
Dziękuję Wam wszystkim!
1 polubienie
Udostępnię Ci ostateczny kod, jeśli będą jakieś zainteresowane:
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 polubienie
Dobry wieczór
Nie powiedziałem tej uwagi, ale miałem co do tego wątpliwości.