Om de tekeningen te integreren, moet u het volgende toevoegen:
swPackAndGo.IncludeDrawings = True
Zie hier.
Om de tekeningen te integreren, moet u het volgende toevoegen:
swPackAndGo.IncludeDrawings = True
Zie hier.
Bij de herdenking, ja, deze regel wordt inderdaad in de voorgestelde macro geplaatst:
' Include any drawings, SOLIDWORKS Simulation results, and SOLIDWORKS Toolbox components
swPackAndGo.IncludeDrawings = True
swPackAndGo.IncludeSimulationResults = True
swPackAndGo.IncludeToolboxComponents = True
maar inderdaad, bij het hernoemen van de bestanden in de PackAndGo wordt geen rekening gehouden met de naam van het 2D-bestand, ik heb geen functie gevonden om deze plannen automatisch te hernoemen, zoals te vinden is in de "Selecteren / Vervangen... " van de Pack and Go:
Als je deze functie via de API's hebt, ben ik ook geïnteresseerd in...
Vriendelijke groeten
Dank u voor uw antwoorden, sorry voor de late rust,
Het werkt op het niveau van het uitsluiten van kamers zonder "xxxxx", aan de andere kant kopieert het de plattegronden van de kamers zonder "xxxxx", is het mogelijk om ze te verwijderen?
Hallo
Ik denk dat het niet mogelijk is, of in ieder geval ik weet niet de functie om het te doen, maar je kunt plannen in je macro om de naam van al deze bestanden op te halen (zonder de voorvoegsels en achtervoegsels te vergeten) op het moment van de pgFileNames(i) = ""verwijder dan
alle betrokken plannen, na de PackAndGo-functie, door de standaard VBA-bestandsbeheerfuncties.
Vriendelijke groeten
Ja, dat is uiteindelijk wat ik net heb gedaan.
Aan de andere kant, wanneer ik de macro start vanuit solidworks, werkt het, maar ik voer het uit vanuit het Excel-bestand, het werkt niet.
Heb je een idee?
Geef ons uw definitieve code in Excel.
Heb je het stap voor stap uitgevoerd?
Ik nam de SW-code die ik in Excel had gezet
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
Dus je mist vast dingen in Tools / Referenties... van de Excel-macro-editor!!
En je moet een Solidworks-object maken en jezelf eraan koppelen, wat automatisch gebeurt via Solidworks-macro's maar niet vanuit Excel...
Hoe doe je dat?
Ben!!! Uh!!!! Hoe zal ik het zeggen!! Misschien, zoals ik je al vertelde tijdens je vraag die hier staat, in mijn eerste antwoord van 24/01/2019, waar er zijn:
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
Om nog maar te zwijgen van de referenties die in "tools / referentie .... ", in het bijzonder die naar "SLDWORKS xxxx type bibliotheek".
Vriendelijke groeten
Hallo
Qua referenties heb ik dezelfde.
Aan de andere kant heb ik gebeld vanuit Solidworks via de
Set swApp = Application.SldWorks
Terwijl de functie die werkt is:
Set swApp = CreateObject("SldWorks.Application")
Wat is het verschil tussen Application.SldWorks en CreateObject("SldWorks.Application")?
omdat ik Excel-macro's heb die werken met Application.SldWorks
Bedankt.
Geweldig materiaal,
Als je het pad ook wilt vervangen, zou ik het op deze manier kunnen doen:
Voor i = 0 Naar (namesCount - 1)
Als InStr(pgFileNames(i), "ActualName") <> 0 dan
pgFileNames(i) = Vervangen(pgFileNames(i), "ActueleNaam", "NameToReplace")
Einde als
' Als InStr(pgFileNames(i), myPath)
pgFileNames(i) = Vervangen(pgFileNames(i), "Oudermap", "OuderMap\ChildFolder")
Foutopsporing.Print pgFileNames(i)
'Einde als
volgende i
onafhankelijk van het gedeclareerde pad