Een batch plannen opslaan in een eerdere versie

Hallo allemaal,
Ik zit op Solidworks 2024 Sp5 waarop ik een ASM, onderdelen en ongeveer vijftig planbestanden heb gemaakt.

Het is me gelukt om in de vorige versie (2022 en 2023) een " pack and go " te maken, maar dit functioneert alleen voor onderdelen en assemblage. De tekeningen gecontroleerd en geëxporteerd via de " pack and go " blijven in 2024...

Na contact en uitwisseling met de support is het antwoord: " dit is de normale werking van Solidworks " (begrijp het: ga door! het is niet onze zaak!)

Ik heb de taakplanner geprobeerd, ik probeerde een macro te doorlopen... Kortom, ik ben droog!
De enige methode die werkt is om de plannen één voor één te openen en ze vervolgens in een eerdere versie op te slaan.
Volgens mijn redenering van fenicant (en kwaliteit!) lijkt het mij ondenkbaar voor 50 shots en voor toekomstige projecten.

Heeft iemand een truc gevonden om deze GEWELDIGE functie " als vroege versie opslaan" te benutten voor batches tekenbestanden?

Alvast bedankt!

AI-reactie:

Vraag Antwoord
Bekende bug? :white_check_mark: Ja, breed gemeld (maar niet officieel erkend als een bug)
Normaal gedrag? :warning: Officieel wel... maar zeer betwist
Reparatie aangekondigd? :x: Nee
Een levensvatbare workaround? :white_check_mark: VBA-macro of handmatige back-up
Betrouwbaar pak-en-go voor retro DRW? :x:

VBA-macrooplossing om een planmap te converteren (niet getest output zoals het is door 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

Het is voor mij niet mogelijk om de macro te testen vanwege sw2023, maar de code lijkt op het eerste gezicht correct.

2 likes

Bedankt voor je zoektocht!

Maar ik heb al een paar uur een macro met Copilot geprobeerd, voordat ze me vertelden dat het uiteindelijk onmogelijk was.

Ik hoop dat ik iets gemist heb... :confused:

Probeer ons feedback te geven, als er een bug is en waar (het vastleggen van de fout).
Als de functionaliteit (opgeslagen in de vorige versie) niet in de API aanwezig is, doen we niet veel.
Als er nog een bug is, kunnen wij je helpen met debuggen.

inderdaad bestaat de functionaliteit niet in VBA...

Helaas is het niet de eerste keer dat AI een functie in de API uitvindt...

Probeer deze voor de zekerheid met SaveAs3 Method (IModelDocExtension) in plaats van saveas4.
Deze functie bestaat nadat deze goed is gedocumenteerd met een versie-optie, dus om getest te worden.

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

Helaas bestaat " swSaveAs2023 " niet :confused:

Hallo
Is het niet mogelijk om een macro te laten inzetten om alle clips één voor één te openen en af te drukken? onder 2024 buitengewoon :grinning:
Heb je PDM? Het was een macro die dit bij ons deed in een ander tijdperk na het selecteren van MEP's.

Het is een puinhoop :upside_down_face:

De grenzen van AI!
Laatste poging, niet makkelijk als je niet kunt testen.
Blijkbaar moet je " AdvancedSaveAsOptions.SaveAsPreviousVersion' "gebruiken:

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

Nogmaals bedankt voor deze tip.

Maar na vele iteraties en debugging, hier de conclusie :confused:

Sorry voor de koude sporen.
De meest ernstige aanwijzing is deze:

Test het op een MEP als het werkt, dat betekent dat het mogelijk is om het in batches te doen. (Via integratie, of door deze macro aan te passen).
Codestack is een betrouwbare bron, in tegenstelling tot AI...

1 like