Pack and Go / Selection de certain fichier + renomer

Bonjour,
Je suis actuellement dans une impasse sur ce code Pack And Go.

Cahier des charge :

  • Récupérer le pack and Go d’un assemblage /Ok pou moi/
  • Lister tous les fichiers qui contiennent « OF » /Ok pou moi/
  • Garder uniquement cela /Ok pou moi/
  • Les renommer avec un nouveau numéro /Ok pou moi/
  • Créer ma nouvelle liste Pack And Go /Ok pou moi/
  • Générer le Pack And Go // Ne fonctionne pas //

Ma table filesArray est bien rempli, je l’appelle avec SetDocumentSaveToNames.

Sauf qu’elle n’en tiens pas compte.

La fonction SavePackAndGo ne fonctionne pas.

Merci par avance de vos réponses.

Sub main()
Dim swApp As SldWorks.SldWorks
Dim swModel As ModelDoc2
Dim swModelDocExt As SldWorks.ModelDocExtension

Dim swPackAndGo As PackAndGo
Dim statusArray As Variant
Dim status As Boolean
Dim statuses As Boolean

Dim tableauSource() As String
Dim tableauResultat() As String
Dim i As Long, j As Long
Dim searchString As String
Dim numeroRecherche As String
Dim count As Long
Dim resultat As String
Dim compteurOF As Collection
Dim numeroOF As Variant
Dim RsultatOF As String
Dim filesArray() As String
Dim ListeOF() As String

' Initialiser SolidWorks
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc

' Vérifier si un document est ouvert
If swModel Is Nothing Then
    MsgBox "Veuillez ouvrir un document SolidWorks."
    Exit Sub
End If

Set swModelDocExt = swModel.Extension

' Créer l'objet Pack and Go
Set swPackAndGo = swModelDocExt.GetPackAndGo

' Include any drawings, SOLIDWORKS Simulation results, and SOLIDWORKS Toolbox components

swPackAndGo.IncludeDrawings = False
Debug.Print " Include drawings: " & swPackAndGo.IncludeDrawings
swPackAndGo.IncludeSimulationResults = False
Debug.Print " Include SOLIDWORKS Simulation results: " & swPackAndGo.IncludeSimulationResults
swPackAndGo.IncludeToolboxComponents = False
Debug.Print " Include SOLIDWORKS Toolbox components: " & swPackAndGo.IncludeToolboxComponents

' Obtenir les informations sur les fichiers
swPackAndGo.GetDocumentNames namesArray

' Structure répertoire
swPackAndGo.FlattenToSingleFolder = True

' Définir la chaîne de recherche
searchString = "OF "
origineOF = "30277"
nouvelOF = "45000"



' Utiliser Filter pour extraire les éléments contenant la chaîne de recherche
tableauResultat = Filter(namesArray, searchString, True, vbTextCompare)


'myPath = "C:\BE\1 Plans 2024\Mathieu"

    For i = LBound(tableauResultat) To UBound(tableauResultat)
                RsultatOF = tableauResultat(i)
                j = j + 1
        Debug.Print RsultatOF
    Next i
    
ReDim filesArray(0 To j - 1)
       
For i = 0 To UBound(tableauResultat)
        FileName = GetFileName(CStr(tableauResultat(i)))
        ' Remplacer la chaîne si spécifié
            If origineOF <> "" Then
                FileName = Replace(FileName, origineOF, nouvelOF)
                FileNames = FileName
            End If
        filesArray(k) = FileNames
        Debug.Print "Nouveau fichier " & filesArray(k)
        k = k + 1
        'Debug.Print FileNames
Next


myPath = "C:\BE\1 Plans 2024\Mathieu"
status = swPackAndGo.SetSaveToName(True, myPath)

statuses = swPackAndGo.SetDocumentSaveToNames(filesArray)

statusArray = swModelDocExt.SavePackAndGo(swPackAndGo)

End Sub

Function GetFileName(path As String) As String
GetFileName = Right(path, Len(path) - InStrRev(path, ""))
End Function

PackAndGo.zip (1,1 Mo)
MTD-PackAndGo-teste.swp (40,5 Ko)

Bonjour mathieu.devezeaud,

Si vous avez « MyCadTool » (Nous ont est en myCADtools 2024 SP1 avec SW 2022 SP4), il y a la macro « projectManager » qui va bien pour renommer les fichiers en une seule fois, sinon à la mano-mano…Mais quand même s’est réalisable avec « PackAndGo » ?
A voir=>https://www.youtube.com/watch?v=oVhNJA6kHzY.


https://www.youtube.com/watch?v=wmlU9e0Sdjs
@+.
AR.

Bonjour,

Je pense qu’il manque juste un backslash à cette ligne: myPath = "C:\BE\1 Plans 2024\Mathieu", écriture correcte : myPath = "C:\BE\1 Plans 2024\Mathieu\"

1 « J'aime »

Bonjour Cyril,
effectivement il manquait un Anti-slash ce qui a réglé une partie du problème.
Le programme ne prend pas en compte le tableau filesArray().
il me créé le pack and go dans le bon répertoire de destination mais ne tiens pas compte du filesArray.
Cordialement.

1 « J'aime »

Bonjour,

Alors je viens de tester un peu plus en profondeur. J’ai modifié légèrement le code et il faudrait tester sur un plus grand nombre de fichiers pour vérifier le comportement.
En gros de ce que j’ai compris, dans la fonction SetDocumentSaveToNames il faut le même nombre de « fichiers » que celui identifié au départ dans le pack and go via GetDocumentNamesCount.
A tester donc avec le code ci-dessous modifé:

Sub main()
Dim swApp As SldWorks.SldWorks
Dim swModel As ModelDoc2
Dim swModelDocExt As SldWorks.ModelDocExtension
Dim swPackAndGo As PackAndGo
Dim statusArray As Variant
Dim status As Boolean
Dim statuses As Boolean
Dim tableauSource() As String
Dim tableauResultat() As String
Dim i As Long, j As Long
Dim searchString As String
Dim numeroRecherche As String
Dim count As Long
Dim resultat As String
Dim compteurOF As Collection
Dim numeroOF As Variant
Dim RsultatOF As String
Dim filesArray() As String
Dim ListeOF() As String
    
    ' Initialiser SolidWorks
    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    
    ' Vérifier si un document est ouvert
    If swModel Is Nothing Then
        MsgBox "Veuillez ouvrir un document SolidWorks."
        Exit Sub
    End If
    
    Set swModelDocExt = swModel.Extension

    ' Créer l'objet Pack and Go
    Set swPackAndGo = swModelDocExt.GetPackAndGo
    count = swPackAndGo.GetDocumentNamesCount
    ' Include any drawings, SOLIDWORKS Simulation results, and SOLIDWORKS Toolbox components
swPackAndGo.IncludeDrawings = False
Debug.Print "  Include drawings: " & swPackAndGo.IncludeDrawings
swPackAndGo.IncludeSimulationResults = False
Debug.Print "  Include SOLIDWORKS Simulation results: " & swPackAndGo.IncludeSimulationResults
swPackAndGo.IncludeToolboxComponents = False
Debug.Print "  Include SOLIDWORKS Toolbox components: " & swPackAndGo.IncludeToolboxComponents


    
    ' Obtenir les informations sur les fichiers
    swPackAndGo.GetDocumentNames namesArray
    
    ' Structure répertoire
    swPackAndGo.FlattenToSingleFolder = True

    ' Définir la chaîne de recherche
    searchString = "OF "
    origineOF = "30277"
    nouvelOF = "45000"
    
    
    
    ' Utiliser Filter pour extraire les éléments contenant la chaîne de recherche
    tableauResultat = Filter(namesArray, searchString, True, vbTextCompare)
    

    'myPath = "C:\BE\1 Plans 2024\Mathieu\"
    
        For i = LBound(tableauResultat) To UBound(tableauResultat)
                    RsultatOF = tableauResultat(i)
                    j = j + 1
            Debug.Print RsultatOF
        Next i
        
    ReDim filesArray(count - 1)
    myPath = "C:\temp\"
    For i = 0 To UBound(tableauResultat)
            FileName = GetFileName(CStr(tableauResultat(i)))
            ' Remplacer la chaîne si spécifié
                If origineOF <> "" Then
                    FileName = Replace(FileName, origineOF, nouvelOF)
                    FileNames = FileName
                End If
            filesArray(k) = myPath & FileNames
            Debug.Print "Nouveau fichier " & filesArray(k)
            k = k + 1
            'Debug.Print FileNames
    Next

    
    
    statuses = swPackAndGo.SetDocumentSaveToNames(filesArray)
    status = swPackAndGo.SetSaveToName(True, myPath)
    statusArray = swModelDocExt.SavePackAndGo(swPackAndGo)
    

End Sub

Function GetFileName(path As String) As String
    GetFileName = Right(path, Len(path) - InStrRev(path, "\"))
End Function

Les nouvelles lignes sont :

count = swPackAndGo.GetDocumentNamesCount
ReDim filesArray(count - 1)
filesArray(k) = myPath & FileNames
3 « J'aime »

Bonjour,

je serai intéressé de savoir si dans ton packandgo il y a un fichier équation externe.

je m’explique, j’ai une macro excel qui me permet de faire un packandgo et de renommer mes fichiers suivant le nom du projet
tout se passe correctement sauf les liens références entre les fichiers.
il conserve les lien des fichier d’origine.
en faisant des tests, il s’avère que cela vient du fichier équation externe, qui est un simple fichier txt.

si quelqu’un a déjà rencontré le problème ou bien a une astuce pour ce problème.

cordialement.

Bonjour,

Il faudrait regarder dans cet exemple de l’API : Pack and Go Part and Linked Equation Example (VBA) - 2023 - Aide de l’API SOLIDWORKS

1 « J'aime »