Makro-PDF-Export in großen Mengen

Hallo ihr alle

Ich bin auf der Suche nach einem Makro, mit dem ich mehrere Entwürfe in PDFs exportieren kann.

Ich möchte gleich darauf hinweisen, dass ich nur die Basisversion an meinem Schreibtisch habe und daher nicht die Möglichkeit habe, diese Art von Aufgaben zu planen.

Vielen Dank

Das kannst du anscheinend mit dem Task Sheduler machen:

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

 

Ansonsten mit speziellen Tools wie Cad+ (nicht getestet):

https://cadplus.xarial.com/

 

Ich für meinen Teil verwende die MyCADservices-Dienstprogramme und insbesondere Integration oder BatchConverters (die sich für wiederkehrende Anforderungen sehr schnell amortisieren):

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

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

 

 

1 „Gefällt mir“

Hallo;

Andernfalls schlage ich dieses Makro vor.
Öffnet alle *.slddrw-Dateien in einem Verzeichnis und speichert sie unter dem gleichen Namen wie eine PDF-Datei.

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

 

Herzliche Grüße.

2 „Gefällt mir“

Vielen Dank

Wie soll dieses Makro ausgeführt werden? Müssen Sie vorher alle Entwürfe öffnen?

Hallo;

Nun, nein, Sie haben nach einer Batch-Behandlung gefragt...
Am einfachsten ist es, eine Schaltfläche/ein Makro direkt in Solidworks zu erstellen.
Siehe: https://www.lynkoa.com/forum/2d/creer-un-bouton-macro


Wenn es gestartet wird, fordert mein Makro Sie auf, das Verzeichnis auszuwählen, das die zu verarbeitenden Zeichnungen enthält, und sie dann nacheinander zu öffnen, um sie im PDF-Format zu speichern.
 

Herzliche Grüße.

OKAY

Wenn ich also das Makro ausführe, erhalte ich eine Meldung, die mir sagt:

Fehler beim Kompilieren:

Ein benutzerdefinierter Typ, der nicht definiert ist. 

Hallo;

Könnten Sie mir noch weniger Informationen geben? (Bebug = Auf welcher Zeile stoppt das Programm?)

Ich vermute, Sie haben die notwendigen Referenzen nicht in die Benutzeroberfläche geladen:
Gehen Sie im Makro-Editor zu Option und klicken Sie auf Referenzen...
Durchsuchen Sie die Liste: (Und aktivieren Sie die Kontrollkästchen)
- Visual Basic für die Anwendung
- Solidworks 20xx Exensibility Type Library (20xx=Ihre Version von Solidworks, wenn mehrere die neueste auswählen)
- Ole Automatisierung
- sldWorks 20xx Type Library (20xx=Ihre Version von Solidworks, wenn mehrere die neueste auswählen)
- SOLIDWORKS 20xx Bibliothek für konstante Typen (20xx = Ihre Version von Solidworks, wenn mehrere die neueste auswählen)
- SOLIDWORKS 20xx Befehlsbibliothek (20xx=Ihre Version von Solidworks, wenn mehrere die neueste Version auswählen)
- Microsoft Exel 16.0-Objektbibliothek
- Microsoft Shell, Microsoft Shell-Steuerelemente und Anwendung.

Bestätigen Sie anschließend Ihre Auswahl. (Ich zwinge Sie absichtlich, mehr Buchhändler zu laden, als für dieses Makro erforderlich sind, aber sie werden Ihnen eines Tages nützlich sein)
Starten Sie das Makro neu.

Hinweis: Wenn Sie das nächste Mal ein Makro anfordern, geben Sie bitte die Version (Jahr) Ihres Solidworks sowie Ihre Makroebene an....

Herzliche Grüße.
 

1 „Gefällt mir“

Tut mir leid, ich bin ein Anfänger in Macro, daher ist es nicht einfach, klar zu erklären, wo es schreit.

Ich werde den Trick ausprobieren und Sie auf dem Laufenden halten.

Vielen Dank

Entschuldigung für diese späte Antwort, aber hier ist der Name der Zeile, in der das Makro stoppt:

Funktion BrowseFolder(Optional Caption As String, Optional InitialFolder As String) Als String

Und ich gebe an, dass alles gut geprüft ist.

Hallo

Für Shell-Funktionen benötigen Sie zusätzlich die Referenz "Microsoft Shell controls and Application", da sonst die Kompilierung des Codes fehlerhaft ist.

Ich denke, das Problem kommt von dort (in meinem Beitrag überprüft).

1 „Gefällt mir“

Hallo;

In der Tat ist dieser Verweis notwendig, danke Cyril.f für diese Korrektur.
Ich korrigiere die Liste in meinem vorherigen Beitrag.

Herzliche Grüße.