Um die Zeichnungen zu integrieren, müssen Sie Folgendes hinzufügen:
swPackAndGo.IncludeDrawings = True
Siehe hier.
Um die Zeichnungen zu integrieren, müssen Sie Folgendes hinzufügen:
swPackAndGo.IncludeDrawings = True
Siehe hier.
Bei remrem, ja, diese Zeile wird tatsächlich in das vorgeschlagene Makro eingefügt:
' Include any drawings, SOLIDWORKS Simulation results, and SOLIDWORKS Toolbox components
swPackAndGo.IncludeDrawings = True
swPackAndGo.IncludeSimulationResults = True
swPackAndGo.IncludeToolboxComponents = True
aber tatsächlich, beim Umbenennen der Dateien, die im PackAndGo enthalten sind, wird der Name der 2D-Datei nicht berücksichtigt, ich habe keine Funktion gefunden, um diese Pläne automatisch umzubenennen, wie sie in der "Auswählen / Ersetzen... " des Pack and Go:
Wenn Sie diese Funktion über die APIs haben, interessiert mich auch ...
Herzliche Grüße
Vielen Dank für Ihre Antworten, Entschuldigung für die späte Ruhe,
Es funktioniert auf der Ebene des Ausschließens von Räumen ohne "xxxxx", andererseits kopiert es die Pläne der Räume ohne "xxxxx", ist es möglich, sie zu entfernen?
Hallo
Ich denke, es ist nicht möglich, oder zumindest kenne ich die Funktion dazu nicht, aber Sie können in Ihrem Makro planen, den Namen all dieser Dateien (ohne die Präfixe und Suffixe zu vergessen) zum Zeitpunkt der pgFileNames(i) = "" abzurufen und
dann alle betroffenen Pläne zu löschen, nach der PackAndGo-Funktion durch die standardmäßigen VBA-Dateiverwaltungsfunktionen.
Herzliche Grüße
Ja, am Ende habe ich das einfach gemacht.
Auf der anderen Seite, wenn ich das Makro aus SolidWorks starte, funktioniert es, aber wenn ich es aus der Excel-Datei ausführe, funktioniert es nicht.
Haben Sie eine Idee?
Geben Sie uns Ihren endgültigen Code in Excel.
Haben Sie Schritt für Schritt ausgeführt?
Ich habe den SW-Code genommen, den ich in Excel eingegeben habe
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
Es müssen Ihnen also Dinge in Tools / Referenzen fehlen... des Excel-Makroeditors!!
Und Sie müssen ein Solidworks-Objekt erstellen und sich daran anhängen, was automatisch über Solidworks-Makros geschieht, aber nicht über Excel...
Wie machen Sie das?
Ben!!!! Äh!!!! Wie soll ich sagen!! Vielleicht, wie ich Ihnen bereits in Ihrer Frage gesagt habe, die hier in meiner ersten Antwort vom 24.01.2019 steht, wo es gibt:
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
Ganz zu schweigen von den Referenzen, die in "Werkzeuge / Referenz .... ", insbesondere die zu "SLDWORKS xxxx type library".
Herzliche Grüße
Hallo
Was die Referenzen angeht, habe ich die gleichen.
Auf der anderen Seite habe ich einen Anruf von Solidworks über die
Set swApp = Application.SldWorks
Während die Funktion, die funktioniert, ist:
Set swApp = CreateObject("SldWorks.Application")
Was ist der Unterschied zwischen Application.SldWorks und CreateObject("SldWorks.Application")?
weil ich Excel-Makros habe, die mit Application.SldWorks funktionieren
Vielen Dank.
Tolles Material,
Wenn Sie den Pfad auch ersetzen möchten, könnte ich es so machen:
Für i = 0 Bis (namesCount - 1)
Wenn InStr(pgFileNames(i), "ActualName") <> 0, dann
pgFileNames(i) = Ersetzen(pgFileNames(i), "ActualName", "NameToReplace")
Ende, wenn
' If InStr(pgFileNames(i), myPath)
pgFileNames(i) = Ersetzen(pgFileNames(i), "Übergeordneter Ordner", "ÜbergeordneterOrdner\Untergeordneter Ordner")
Debug.Print pgFileNames(i)
"Ende, wenn
Weiter i
Unabhängig vom deklarierten Pfad