Aby zintegrować rysunki, należy dodać:
swPackAndGo.IncludeDrawings = True
Zobacz tutaj.
W remrem, tak, ta linijka jest rzeczywiście umieszczona w proponowanym makro:
' Include any drawings, SOLIDWORKS Simulation results, and SOLIDWORKS Toolbox components
swPackAndGo.IncludeDrawings = True
swPackAndGo.IncludeSimulationResults = True
swPackAndGo.IncludeToolboxComponents = True
ale rzeczywiście, przy zmianie nazw plików zawartych w PackAndGo nazwa pliku 2D nie jest brana pod uwagę, nie znalazłem funkcji automatycznej zmiany nazw tych planów, jak można znaleźć w "Wybierz / Zamień... " z pakietu Pack and Go:
Jeśli masz tę funkcję za pośrednictwem interfejsów API, interesuje mnie również...
Pozdrowienia
Dziękuję za odpowiedzi, przepraszam za spóźniony odpoczynek,
Działa na poziomie wykluczania pomieszczeń bez "xxxxx", z drugiej strony kopiuje plany pomieszczeń bez "xxxxx", czy można je usunąć?
Witam
Myślę, że nie jest to możliwe, a przynajmniej nie znam funkcji, aby to zrobić, ale możesz zaplanować w swoim makrze, aby pobrać nazwy wszystkich tych plików (nie zapominając o prefiksach i sufiksach) w momencie pgFileNames(i) = ""następnie
usuń wszystkie odpowiednie plany, po funkcji PackAndGo, przez standardowe funkcje zarządzania plikami VBA.
Pozdrowienia
Tak, w końcu to właśnie zrobiłem.
Z drugiej strony, gdy uruchamiam makro z solidworks, działa, ale uruchamiam je z pliku Excel, nie działa.
Masz pomysł?
Podaj nam swój ostateczny kod w Excelu.
Czy wykonałeś w trybie krok po kroku?
Wziąłem kod oprogramowania, który umieściłem w Excelu
Option Explicit
Dim swApp As SldWorks.SldWorks
Dim swModelDoc As SldWorks.ModelDoc2
Dim swModelDocExt As SldWorks.ModelDocExtension
Dim swPackAndGo As SldWorks.PackAndGo
Dim openFile As String
Dim pgFileNames As Variant
Dim pgFileStatus As Variant
Dim pgGetFileNames As Variant
Dim pgDocumentStatus As Variant
Dim status As Boolean
Dim warnings As Long
Dim errors As Long
Dim i As Long
Dim namesCount As Long
Dim myPath As String
Dim statuses As Variant
Sub main()
Set swApp = Application.SldWorks
' Open assembly
Set swModelDoc = swApp.ActiveDoc
'openFile = "C:\Users\DRO\Desktop\Nouveau dossier\Assemblage1.SLDASM"
'Set swModelDoc = swApp.OpenDoc6(openFile, swDocASSEMBLY, swOpenDocOptions_Silent, "", errors, warnings)
'Set swModelDoc = swApp.ActiveDoc
Set swModelDocExt = swModelDoc.Extension
' Get Pack and Go object
Set swPackAndGo = swModelDocExt.GetPackAndGo
' Get number of documents in assembly
namesCount = swPackAndGo.GetDocumentNamesCount
' Include any drawings, SOLIDWORKS Simulation results, and SOLIDWORKS Toolbox components
swPackAndGo.IncludeDrawings = True
swPackAndGo.IncludeSimulationResults = True
swPackAndGo.IncludeToolboxComponents = True
' Get current paths and filenames of the assembly's documents
'status = swPackAndGo.GetDocumentNames(pgFileNames)
' Get current save-to paths and filenames of the assembly's documents
status = swPackAndGo.GetDocumentSaveToNames(pgFileNames, pgFileStatus)
' Set document paths and names for Pack and Go
For i = 0 To (namesCount - 1)
If InStr(pgFileNames(i), "xxxxx") <> 0 Then
pgFileNames(i) = Replace(pgFileNames(i), "xxxxx", "85000")
Else
pgFileNames(i) = ""
End If
Next i
status = swPackAndGo.SetDocumentSaveToNames(pgFileNames)
' Set folder where to save the files
myPath = "G:\Intégration\BA\QRM\enregistrement\85000\"
status = swPackAndGo.SetSaveToName(True, myPath)
' Flatten the Pack and Go folder structure; save all files to the root directory
swPackAndGo.FlattenToSingleFolder = True
' Pack and Go
statuses = swModelDocExt.SavePackAndGo(swPackAndGo)
End Sub
Więc musisz przegapić coś w Narzędziach / Odniesieniach... edytora makr Excel!!
I musisz utworzyć obiekt Solidworks i dołączyć się do niego, co odbywa się automatycznie za pomocą makr Solidworks, ale nie z Excela...
Jak to zrobić?
Ben!!!! Uh!!!! Jak mogę to ująć!! Być może, jak już mówiłem podczas Twojego pytania, które jest tutaj, w mojej pierwszej odpowiedzi z 24.01.2019 r., gdzie są:
Sub Macro()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Set swApp = CreateObject("SldWorks.Application")
swApp.Visible = True
Set swModel = swApp.ActiveDoc
....
End Sub
Nie wspominając już o odniesieniach, które należy umieścić w "narzędziach / odniesieniu .... ", w szczególności ten do "biblioteki typu SLDWORKS xxxx".
Pozdrowienia
Witam
Jeśli chodzi o referencje, to mam takie same.
Z drugiej strony, wykonałem połączenie z Solidworks za pośrednictwem metody
Set swApp = Application.SldWorks
podczas gdy funkcja, która działa, to:
Set swApp = CreateObject("SldWorks.Application")
Jaka jest różnica między Application.SldWorks a CreateObject("SldWorks.Application")?
ponieważ mam makra Excela, które działają z Application.SldWorks
Dziękuję.
Świetny materiał,
Jeśli chcesz również podmienić ścieżkę, mogę to zrobić w ten sposób:
Dla i = 0 To (namesCount - 1)
Jeśli InStr(pgFileNames(i), "ActualName") <> 0 to
pgFileNames(i) = Replace(pgFileNames(i), "ActualName", "NameToReplace")
Zakończ jeżeli:
' If InStr(pgFileNames(i), myPath)
pgFileNames(i) = Replace(pgFileNames(i), "ParentFolder", "ParentFolder\ChildFolder")
Debug.Print pgFileNames(i)
"Koniec, jeśli
Dalej i
niezależnie od zadeklarowanej trasy