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.
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):
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
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.
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....
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).