Witam wszystkich, Korzystam z Solidworks 2024 Sp5, na którym stworzyłem ASM, części i około pięćdziesięciu plików planu.
Udało mi się zrobić " pack and go " w poprzednich wersjach (2022 i 2023), ale działa on tylko do części i montażu. Rysunki sprawdzone i wyeksportowane przez " pack and Go " pozostają w 2024 roku...
Po kontakcie i wymianie z pomocą odpowiedź brzmi: " to normalna operacja SolidWorks " (rozumiecie: do dzieła! to nie nasza sprawa!)
Próbowałem harmonogramu zadań, próbowałem przejść przez makro... krótko mówiąc, jestem suchy! Jedyną metodą, która działa, jest otwieranie planów pojedynczo, a następnie zapisywanie ich w wcześniejszej wersji. W mojej logice fenicantności (i jakości!) wydaje mi się to nie do pomyślenia przy 50 ujęciach, podobnie jak przy przyszłych projektach.
Czy ktoś wymyślił trik, by wykorzystać tę WSPANIAŁĄ funkcję " zapisz jako wczesną wersję " dla partii plików rysunkowych?
Tak, szeroko zgłaszane (choć oficjalnie nie uznane za błąd)
Normalne zachowanie?
Oficjalnie tak... ale bardzo sporne
Ogłoszono poprawkę?
Nie
Możliwe obejście?
Makro VBA lub ręczna kopia zapasowa
Niezawodny zestaw i wybierz retro DRW?
Rozwiązanie makra VBA do konwersji folderu planu (Nie testowane wyjście w obecnej formie przez AI Copilot):
Option Explicit
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim errors As Long
Dim warnings As Long
Sub main()
Set swApp = Application.SldWorks
' ⚠️ MODIFIER LE CHEMIN DU DOSSIER ICI
Dim folderPath As String
folderPath = "C:\TEMP\Plans_2024"
' Choisir la version cible :
' swSaveAsVersion_e.swSaveAsCurrentVersion
' swSaveAsVersion_e.swSaveAs2023
' swSaveAsVersion_e.swSaveAs2022
Dim targetVersion As Long
targetVersion = swSaveAsVersion_e.swSaveAs2023
Dim fileName As String
fileName = Dir(folderPath & "\*.slddrw")
Do While fileName <> ""
Dim fullPath As String
fullPath = folderPath & "\" & fileName
Set swModel = swApp.OpenDoc6( _
fullPath, _
swDocumentTypes_e.swDocDRAWING, _
swOpenDocOptions_e.swOpenDocOptions_Silent, _
"", _
errors, _
warnings)
If Not swModel Is Nothing Then
swModel.ForceRebuild3 False
Dim savePath As String
savePath = folderPath & "\OLDVER_" & fileName
swModel.SaveAs4 _
savePath, _
targetVersion, _
swSaveAsOptions_e.swSaveAsOptions_Silent, _
errors, _
warnings
swApp.CloseDoc swModel.GetTitle
End If
fileName = Dir
Loop
MsgBox "Conversion terminée !", vbInformation
End Sub
Nie mogę przetestować makro ze względu na sw2023, ale kod wydaje się poprawny na pierwszy rzut oka.
Spróbuj dać nam opinię, czy to błąd i gdzie (przechwycenie błędu). Jeśli funkcjonalność (zapisana w poprzedniej wersji) nie istnieje w API, niewiele zrobimy. Jeśli pojawi się kolejny błąd, możemy pomóc Ci w debugowaniu.
Spróbuj tego na wszelki wypadek, używając metody SaveAs3 (IModelDocExtension) zamiast saveas4. Ta funkcja istnieje po tym, jak jest dobrze udokumentowana z opcją wersji, więc można ją przetestować.
Option Explicit
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swExt As SldWorks.ModelDocExtension
Dim errors As Long
Dim warnings As Long
Sub main()
Set swApp = Application.SldWorks
' ⚠️ CHEMIN À ADAPTER
Dim folderPath As String
folderPath = "C:\TEMP\Plans_2024"
' Version cible
Dim targetVersion As Long
targetVersion = swSaveAsVersion_e.swSaveAs2023
' swSaveAs2022 possible aussi
Dim fileName As String
fileName = Dir(folderPath & "\*.slddrw")
Do While fileName <> ""
Dim fullPath As String
fullPath = folderPath & "\" & fileName
Set swModel = swApp.OpenDoc6( _
fullPath, _
swDocumentTypes_e.swDocDRAWING, _
swOpenDocOptions_e.swOpenDocOptions_Silent, _
"", _
errors, _
warnings)
If Not swModel Is Nothing Then
Set swExt = swModel.Extension
swModel.ForceRebuild3 False
Dim savePath As String
savePath = folderPath & "\OLDVER_" & fileName
swExt.SaveAs3 _
savePath, _
swSaveAsOptions_e.swSaveAsOptions_Silent, _
targetVersion, _
errors, _
warnings
swApp.CloseDoc swModel.GetTitle
End If
fileName = Dir
Loop
MsgBox "Conversion terminée", vbInformation
End Sub
Cześć Czy nie da się powiedzieć makru, żeby otwierał wszystkie klipy pojedynczo i je drukował? W ramach nadzwyczajnego 2024 roku Czy masz PDM? To makro zrobiło to z nami w innej epoce po wyborze europosłów.
Granice AI! Ostatnia próba, niełatwa, gdy nie da się przetestować. Najwyraźniej musisz użyć " AdvancedSaveAsOptions.SaveAsPreviousVersion" ":
Option Explicit
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swExt As SldWorks.ModelDocExtension
Dim advOpts As SldWorks.AdvancedSaveAsOptions
Dim errs As Long
Dim warns As Long
Sub main()
Set swApp = Application.SldWorks
' >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
' A MODIFIER
Dim folderPath As String
folderPath = "C:\TEMP\Plans_2024"
' -1 = version précédente
' -2 = deux versions précédentes
Dim previousOffset As Long
previousOffset = -1 ' 2024 -> 2023
' previousOffset = -2 ' 2024 -> 2022
' >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Dim fileName As String
fileName = Dir(folderPath & "\*.slddrw")
Do While fileName <> ""
Dim fullPath As String
fullPath = folderPath & "\" & fileName
Set swModel = swApp.OpenDoc6( _
fullPath, _
swDocumentTypes_e.swDocDRAWING, _
swOpenDocOptions_e.swOpenDocOptions_Silent, _
"", _
errs, _
warns)
If swModel Is Nothing Then
Debug.Print "❌ Impossible d’ouvrir : " & fileName
GoTo NextFile
End If
Set swExt = swModel.Extension
Set advOpts = swExt.GetAdvancedSaveAsOptions( _
swSaveWithReferencesOptions_e.swSaveWithReferencesOptions_None)
advOpts.SaveAsPreviousVersion = previousOffset
advOpts.SaveAllAsCopy = True
Dim savePath As String
savePath = folderPath & "\OLDVER_" & fileName
If False = swExt.SaveAs3( _
savePath, _
swSaveAsVersion_e.swSaveAsCurrentVersion, _
swSaveAsOptions_e.swSaveAsOptions_Silent, _
Nothing, _
advOpts, _
errs, _
warns) Then
Debug.Print "❌ ERREUR SaveAs : " & fileName & _
" | Code = " & errs
Else
Debug.Print "✅ OK : " & fileName
End If
swApp.CloseDoc swModel.GetTitle
NextFile:
fileName = Dir
Loop
MsgBox "Traitement terminé (voir Ctrl+G pour le log)", vbInformation
End Sub
``
Przepraszam za zimne ślady. Najpoważniejszy trop jest taki:
Sprawdź to na MEP, jeśli działa, oznacza to, że można to robić partiami. (Poprzez integrację lub modyfikację tego makra). Codestack to wiarygodne źródło, w przeciwieństwie do AI...