Macro PDF-export in bulk

Hoi allemaal

Ik ben op zoek naar een macro waarmee ik meerdere concepten in bulk naar pdf's kan exporteren.

Ik wil er meteen op wijzen dat ik alleen de basisversie op mijn bureau heb liggen, dus ik heb niet de mogelijkheid om dit soort taken in te plannen.

Bedankt

Je kunt dit blijkbaar doen met de Task Sheduler:

https://www.youtube.com/watch?v=WgjajdK6CEc

 

Anders met specifieke tools zoals Cad+ (niet getest):

https://cadplus.xarial.com/

 

Van mijn kant gebruik ik de hulpprogramma's van MyCADservices en meer in het bijzonder Integration of BatchConverters (zeer snel afgeschreven voor terugkerende behoeften):

Integratie: https://help.visiativ.com/mycadtools/2020/fr/Integration.html

BatchConverter: https://help.visiativ.com/mycadtools/2020/fr/BatchConverter.html

 

 

1 like

Hallo;

Anders stel ik deze macro voor.
Opent alle *.slddrw-bestanden in een map en slaat ze op onder dezelfde naam als een PDF.

Option Explicit

Private Const BIF_RETURNONLYFSDIRS As Long = &H1
Private Const BIF_DONTGOBELOWDOMAIN As Long = &H2
Private Const BIF_RETURNFSANCESTORS As Long = &H8
Private Const BIF_BROWSEFORCOMPUTER As Long = &H1000
Private Const BIF_BROWSEFORPRINTER As Long = &H2000
Private Const BIF_BROWSEINCLUDEFILES As Long = &H4000
Private Const MAX_PATH As Long = 260

Function BrowseFolder(Optional Caption As String, Optional InitialFolder As String) As String

Dim SH As Shell32.Shell
Dim F As Shell32.Folder

Set SH = New Shell32.Shell
Set F = SH.BrowseforFolder(0&, Caption, BIF_RETURNONLYFSDIRS, InitialFolder)
If Not F Is Nothing Then
    If F = "Desktop" Then
        BrowseFolder = Environ("USERPROFILE") & "\Desktop"
    Else
        BrowseFolder = F.Items.Item.Path
    End If
End If

End Function

Sub Main()
Dim swApp        As SldWorks.SldWorks
Dim swModel      As SldWorks.ModelDoc
Dim sFileName    As String
Dim Path         As String
Dim nErrors      As Long
Dim nWarnings    As Long
Dim swDraw       As SldWorks.DrawingDoc
Dim PartNoDes    As String
Dim swExportPDFData As SldWorks.ExportPdfData


    Set swApp = Application.SldWorks
    Set swExportPDFData = swApp.GetExportFileData(1)
    swExportPDFData.ViewPdfAfterSaving = False
    
    Path = BrowseFolder("Selectionner le Repertoire à Traiter.")
    If Path = "" Then
        MsgBox "Erreur, Selectionnez le repertoire à nouveau."
        End
    Else
    Path = Path + "\"
    End If
         
    sFileName = Dir(Path & "*.slddrw")
    Do Until sFileName = ""
        Set swModel = swApp.OpenDoc6(Path + sFileName, swDocDRAWING, swOpenDocOptions_Silent, "", nErrors, nWarnings)
        Set swModel = swApp.ActiveDoc
        Set swDraw = swApp.ActiveDoc
            PartNoDes = Mid(swDraw.GetPathName, InStrRev(swDraw.GetPathName, "\") + 1)
            PartNoDes = Left(PartNoDes, Len(PartNoDes) - 7)
            swDraw.SaveAs3 Path & PartNoDes & ".PDF", 0, 0
        swApp.QuitDoc swDraw.GetPathName
        Set swDraw = Nothing
        Set swModel = Nothing
        sFileName = Dir
    Loop

MsgBox "Le Traitement est terminé."
End Sub

 

Vriendelijke groeten.

2 likes

Bedankt

Hoe moet deze macro worden uitgevoerd? Moet je van tevoren alle concepten openen?

Hallo;

Nou nee, je hebt gevraagd om een Batch behandeling....
De eenvoudigste manier is om een knop/macro rechtstreeks in Solidworks te maken.
Zie: https://www.lynkoa.com/forum/2d/creer-un-bouton-macro


Wanneer het wordt gestart, zal mijn macro u vragen om de map met de te verwerken tekeningen te selecteren en ze vervolgens een voor een te openen om ze in pdf op te slaan.
 

Vriendelijke groeten.

OK

Dus wanneer ik de macro uitvoer, krijg ik een bericht dat me vertelt:

Compilatie fout:

Een door de gebruiker gedefinieerd type dat niet is gedefinieerd. 

Hallo;

Kunt u mij nog minder informatie geven? (Bebug = Op welke regel stopt het programma?)

Ik vermoed dat je de benodigde referenties niet in de interface hebt geladen:
Ga in de Macro-editor naar Optie en klik op Referenties...
Zoeken in de lijst: (En vink de vakjes aan)
- Visuele basis voor toepassing
- Solidworks 20xx Exensibility Type Library (20xx = uw versie van Solidworks, als meerdere de meest recente kiezen)
- Ole Automatisering
- sldWorks 20xx Type Library (20xx = uw versie van Solidworks, als meerdere de meest recente kiezen)
- SOLIDWORKS 20xx Constant type library (20xx = uw versie van Solidworks, als meerdere de meest recente kiezen)
- SOLIDWORKS 20xx Comands type library (20xx=jouw versie van Solidworks, als meerdere de meest recente kiezen)
- Microsoft Exel 16.0 Object Bibliotheek
- Microsoft Shell, Microsoft Shell-besturingselementen en toepassing.

Bevestig vervolgens uw keuze. (Ik laat je opzettelijk meer boekverkopers laden dan nodig is voor deze macro, maar ze zullen op een of andere dag nuttig voor je zijn)
Start de macro opnieuw.

Opmerking: De volgende keer dat u een Macro aanvraagt, geef dan de versie (jaar) van uw Solidworks op, evenals uw Macro-niveau....

Vriendelijke groeten.
 

1 like

Sorry, ik ben een beginner in Macro, dus het is niet gemakkelijk om duidelijk uit te leggen waar het schreeuwt.

Ik zal de truc proberen en ik hou je op de hoogte.

Bedankt

Sorry voor dit late antwoord, maar hier is de naam van de regel waar de macro stopt:

Functie BrowseFolder (optioneel bijschrift als tekenreeks, optionele InitialFolder als tekenreeks) als tekenreeks

En ik geef aan dat alles goed wordt gecontroleerd.

Hallo

Voor Shell-functies hebt u ook de referentie "Microsoft Shell-besturingselementen en toepassing" nodig, anders is de compilatie van de code foutief.

Ik denk dat het probleem daar vandaan komt (gecontroleerd op mijn bericht).

1 like

Hallo;

Inderdaad, deze verwijzing is noodzakelijk, bedankt Cyril.f voor deze correctie.
Ik corrigeer de lijst op mijn vorige post.

Vriendelijke groeten.