Spakuj i idź / Wybierz określony plik + zmień nazwę

Witam
Obecnie jestem w impasie w sprawie tego kodu Pack And Go.

Specyfikacje:

  • Pobierz paczkę i przejdź z zestawu /Ok dla mnie/
  • Wyświetla listę wszystkich plików, które zawierają " OF " /Ok dla mnie/
  • Zachowaj tylko to /Ok dla mnie/
  • Zmień ich nazwę na nowy numer /Ok dla mnie/
  • Utwórz moją nową listę Pack And Go /Ok dla mnie/
  • Wygeneruj pakiet i idź // Nie działa //

Moja tabela filesArray jest dobrze wypełniona, wywołuję ją za pomocą SetDocumentSaveToNames.

Tyle tylko, że ona nie bierze tego pod uwagę.

Funkcja SavePackAndGo nie działa.

Z góry dziękuję za odpowiedzi.

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

Przyciemnij swPackAndGo jako PackAndGo
Dim statusArray As Variant
Stan przyciemnienia Jako wartość logiczna
Przyciemnij statusy Jako wartość logiczna

Dim arraySource() As String
Dim arrayResult() As String
Dim i As Long, j As Long
Dim searchString As Ciąg
Słońce LiczbaSzukaj jako Ciąg
Przyciemnij liczbę tak długo
Przyciemnij wynik jako ciąg
Licznik przyciemniony Kolekcja As
Dim numeroOF As Variant
Dim RsultatOF As Ciąg
Przyciemnij filesArray() jako ciąg
Dim listeOF() As Ciąg

' 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 = Fałsz
Debug.Print " Dołącz rysunki: " & swPackAndGo.IncludeDrawings
swPackAndGo.IncludeSimulationResults = Fałsz
Debug.Print " Uwzględnij wyniki symulacji SOLIDWORKS: " & swPackAndGo.IncludeSimulationResults
swPackAndGo.IncludeToolboxComponents = Fałsz
Debug.Print " Dołącz komponenty SOLIDWORKS Toolbox: " & 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)

Koniec subwoofera

Funkcja GetFileName(ścieżka jako ciąg) jako ciąg
GetFileName = Right(ścieżka, Len(ścieżka) - InStrRev(ścieżka, ""))
Zakończ funkcję

PackAndGo.zip (1.1 MB)
MTD-PackAndGo-teste.swp (40,5 KB)

Witaj mathieu.devezeaud,

Jeśli masz " MyCadTool " (mamy myCADtools 2024 SP1 z SW 2022 SP4), istnieje makro " projectManager ", które jest w porządku do zmiany nazw plików za jednym razem, w przeciwnym razie do mano-mano... Ale co było możliwe z " PackAndGo "?
Do zobaczenia=>https://www.youtube.com/watch?v=oVhNJA6kHzY.


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

Witam

Wydaje mi się, że w tym wierszu brakuje tylko odwrotnego ukośnika: myPath = "C:\BE\1 Plans 2024\Mathieu", poprawne pisanie: myPath = "C:\BE\1 Plans 2024\Mathieu\"

1 polubienie

Witaj Cyrylu,
Rzeczywiście, brakowało Anti-slash, który rozwiązał część problemu.
Program nie bierze pod uwagę tablicy filesArray().
tworzy pakiet i przechodzi do odpowiedniego katalogu docelowego, ale nie bierze pod uwagę filesArray.
Pozdrowienia.

1 polubienie

Witam

Więc po prostu przetestowałem trochę głębiej. Zmodyfikowałem nieco kod i musiałbym przetestować na większej liczbie plików, aby sprawdzić zachowanie.
Zasadniczo z tego, co rozumiem, w funkcji SetDocumentSaveToNames potrzebna jest taka sama liczba " plików " , jak ta określona na początku w paczce i przejdź przez GetDocumentNamesCount.
Do przetestowania ze zmodyfikowanym poniżej kodem:

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

Nowe linie to:

count = swPackAndGo.GetDocumentNamesCount
ReDim filesArray(count - 1)
filesArray(k) = myPath & FileNames
3 polubienia

Witam

Ciekawi mnie, czy w twoim packandgo znajduje się zewnętrzny plik równań.

Pozwól, że wyjaśnię, mam makro Excela, które pozwala mi zrobić packandgo i zmienić nazwy moich plików zgodnie z nazwą projektu
Wszystko idzie gładko, z wyjątkiem odwołujących się linków między plikami.
Zachowuje linki do oryginalnych plików.
Podczas przeprowadzania testów okazuje się, że pochodzi to z zewnętrznego pliku równania, który jest prostym plikiem TXT.

jeśli ktoś już spotkał się z problemem lub ma sztuczkę na ten problem.

Pozdrowienia.

Bonjour

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

1 polubienie