Macro packandgo (samenstelling om mee naar huis te nemen)

Om de tekeningen te integreren, moet u het volgende toevoegen:

swPackAndGo.IncludeDrawings = True

 

Zie hier.

1 like

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.

Hallo

Kijk hier rond, u vindt de gevraagde uitleg.

Vriendelijke groeten

1 like

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