Das Speichern einer Ladung Pläne in der vorherigen Version

Hallo zusammen,
Ich nutze Solidworks 2024 SP5, auf dem ich einen ASM, Teile und etwa fünfzig Plandateien erstellt habe.

Ich habe es geschafft, in der vorherigen Version (2022 und 2023) ein " Pack and Go " zu erstellen, aber das funktioniert nur für Teile und Montage. Die überprüften und exportierten Zeichnungen über das " Pack and Go " bleiben im Jahr 2024...

Nach Kontakt und Austausch mit dem Support lautet die Antwort: " Das ist der normale Betrieb von Solidworks " (Verstanden: Mach weiter! Das geht uns nichts an!).

Ich habe den Task-Scheduler ausprobiert, ich habe versucht, ein Makro durchzugehen... kurz gesagt, ich bin trocken!
Die einzige Methode, die funktioniert, ist, die Pläne einzeln zu öffnen und sie dann in einer früheren Version zu speichern.
Nach meiner Logik von Fenicant (und Qualität!) erscheint mir das für 50 Aufnahmen sowie für zukünftige Projekte undenkbar.

Hat jemand einen Trick herausgefunden, um diese WUNDERBARE Funktion " als frühe Version speichern" für Chargen von Zeichendateien auszunutzen?

Vielen Dank im Voraus!

KI-Antwort:

Frage Antwort
Bekannter Bug? :white_check_mark: Ja, weit verbreitet berichtet (aber nicht offiziell als Fehler anerkannt)
Normales Verhalten? :warning: Offiziell ja... aber stark umkämpft
Reparatur angekündigt? :x: Nein
Brauchbare Umgehungslösung? :white_check_mark: VBA-Makro oder manuelles Backup
Zuverlässiges Pack-and-Go für Retro-DRW? :x:

VBA-Makrolösung zur Umwandlung eines Planordners (Nicht getestete Ausgabe wie sie ist, vom KI-Copiloten):

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

Es ist für mich nicht möglich, das Makro zu testen, weil es sw2023 ist, aber der Code scheint auf den ersten Blick korrekt zu sein.

2 „Gefällt mir“

Vielen Dank für Ihre Recherche!

Aber ich habe schon ein paar Stunden damit verbracht, ein Makro mit Copilot auszuprobieren, bevor sie mir sagten, dass es endlich unmöglich sei.

Ich hoffe, ich habe etwas übersehen... :confused:

Versuchen Sie, uns Feedback zu geben, ob ein Fehler vorliegt und wo (Erfassung des Fehlers).
Wenn die Funktionalität (gespeichert in der vorherigen Version) in der API nicht vorhanden ist, werden wir nicht viel tun.
Wenn es einen weiteren Fehler gibt, können wir dir beim Debuggen helfen.

tatsächlich existiert die Funktionalität in VBA nicht...

Leider nicht das erste Mal, dass KI eine Funktion in der API erfindet...

Probier das mal vorsichtshalber mit der SaveAs3-Methode (IModelDocExtension) statt saveas4.
Diese Funktion existiert, nachdem sie gut dokumentiert ist und mit einer Versionsoption getestet werden soll.

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

Leider existiert " swSaveAs2023 " nicht :confused:

Hallo
Ist es nicht möglich, einem Makro zu sagen, alle Clips einzeln zu öffnen und auszudrucken? unter 2024 außerordentlich :grinning:
Hast du PDM? Es war ein Makro, das uns in einer anderen Ära nach der Auswahl der Europaabgeordneten angetan hat.

Es ist ein Chaos :upside_down_face:

Die Grenzen der KI!
Letzter Versuch, nicht einfach, wenn man nicht testen kann.
Anscheinend muss man " AdvancedSaveAsOptions.SaveAsPreviousVersion" verwenden:

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
``

Nochmals vielen Dank für diesen Hinweis.

Aber nach vielen Iterationen und Debuggings ist hier das Fazit :confused:

Entschuldigung für die kalten Spuren.
Die schwerwiegendste Spur ist folgende:

Teste es an einem MEP, ob es funktioniert, das bedeutet, dass es in Chargen möglich ist. (Über Integration oder durch Änderung dieses Makros).
Codestack ist eine zuverlässige Quelle, im Gegensatz zu KI...

1 „Gefällt mir“