Pack and Go / Bestimmte Datei auswählen + umbenennen

Hallo
Ich befinde mich derzeit in einer Sackgasse mit diesem Pack And Go-Code.

Leistungsbeschreibung:

  • Holen Sie sich das Paket und gehen Sie von einer Baugruppe aus /Ok für mich/
  • Listet alle Dateien auf, die " OF " /Ok für mich/ enthalten
  • Behalte nur das /Ok für mich/
  • Benennen Sie sie mit einer neuen Nummer um /Ok für mich/
  • Erstelle meine neue Pack And Go-Liste /Ok für mich/
  • Pack And Go generieren // Funktioniert nicht //

Meine filesArray-Tabelle ist gut gefüllt, ich rufe sie mit SetDocumentSaveToNames auf.

Nur, dass sie das nicht berücksichtigt.

Die SavePackAndGo-Funktion funktioniert nicht.

Vielen Dank im Voraus für Ihre Antworten.

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

Dim swPackAndGo als PackAndGo
Dim statusArray als Variante
Status dimmen: Als boolescher Wert
Status als boolescher Wert dimmen

Dim arraySource() als String
Dim arrayResult() als Zeichenkette
Dim i As Long, j As Long
Dim searchString als Zeichenfolge
SonnennummerAls Zeichenfolge suchen
Dim-Zählung So lange
Ergebnis als Zeichenfolge dimmen
Dim-ZählerOF As Collection
Dim numeroOF als Variante
Dim RultatOF Als String
Dim filesArray() als Zeichenkette
Dim ListeOF() als Zeichenkette

' 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 = Falsch
Debug.Print " Zeichnungen einschließen: " & swPackAndGo.IncludeDrawings
swPackAndGo.IncludeSimulationResults = Falsch
Debug.Print " SOLIDWORKS Simulationsergebnisse einschließen: " & swPackAndGo.IncludeSimulationResults
swPackAndGo.IncludeToolboxComponents = Falsch
Debug.Print " SOLIDWORKS Toolbox Komponenten einschließen: " & 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)

Ende Sub

Funktion GetFileName(Pfad als Zeichenfolge) als Zeichenkette
GetFileName = Right(Pfad, Len(Pfad) - InStrRev(Pfad, ""))
Ende-Funktion

PackAndGo.zip (1,1 MB)
MTD-PackAndGo-teste.swp (40.5 KB)

Hallo mathieu.devezeaud,

Wenn Sie " MyCadTool " haben (wir haben myCADtools 2024 SP1 mit SW 2022 SP4), gibt es das " projectManager " Makro welches in Ordnung ist, um Dateien auf einmal umzubenennen, ansonsten zum mano-mano... Doch was war mit " PackAndGo " möglich?
Zu sehen=>https://www.youtube.com/watch?v=oVhNJA6kHzY.


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

Hallo

Ich denke, in dieser Zeile fehlt nur ein umgekehrter Schrägstrich: myPath = "C:\BE\1 Plans 2024\Mathieu", korrekte Schreibweise: myPath = "C:\BE\1 Plans 2024\Mathieu\"

1 „Gefällt mir“

Hallo Cyril,
Tatsächlich fehlte ein Anti-Slash, der einen Teil des Problems löste.
Das Programm berücksichtigt das Array filesArray() nicht.
Es erstellt das Pack and Go im richtigen Zielverzeichnis, berücksichtigt aber nicht das filesArray.
Herzliche Grüße.

1 „Gefällt mir“

Hallo

Also habe ich einfach ein bisschen tiefer getestet. Ich habe den Code leicht geändert und müsste mit einer größeren Anzahl von Dateien testen, um das Verhalten zu überprüfen.
Grundsätzlich nach dem, was ich verstehe, benötigen Sie in der Funktion SetDocumentSaveToNames die gleiche Anzahl von " Dateien " wie zu Beginn im Paket angegeben und gehen Sie über GetDocumentNamesCount.
Zu testen mit dem unten geänderten Code:

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

Die neuen Linien sind:

count = swPackAndGo.GetDocumentNamesCount
ReDim filesArray(count - 1)
filesArray(k) = myPath & FileNames
3 „Gefällt mir“

Hallo

Mich würde interessieren, ob es in Ihrem packandgo eine externe Gleichungsdatei gibt.

Lassen Sie mich erklären, dass ich ein Excel-Makro habe, mit dem ich ein Packandgo erstellen und meine Dateien entsprechend dem Namen des Projekts umbenennen kann
Alles läuft reibungslos, außer den referenzierten Links zwischen den Dateien.
Es behält die Links der Originaldateien bei.
Bei einigen Tests stellt sich heraus, dass dies aus der externen Gleichungsdatei stammt, bei der es sich um eine einfache TXT-Datei handelt.

wenn jemand bereits auf das Problem gestoßen ist oder einen Trick für dieses Problem hat.

Herzliche Grüße.

Bonjour

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

1 „Gefällt mir“