Solidworks PDF-Zeichnungsmakro

Hallo Madam, Sir,

Ich habe dieses Makro ins Netz gebracht, um meine Zeichnungen direkt im PDF-Format zu speichern.
Leider weiß ich als Anfänger auf diesem Gebiet nicht, wie ich den Pfad zum Datensatzordner meiner Zeichnungen hinzufügen soll.

Kann mir jemand sagen, wie ich vorgehen soll?

Hier ist das Makro, das ich gefunden habe, wenn es hilft, es funktioniert, aber PDFs im selben Ordner wie meine SW-Zeichnungen speichert.

Vielen Dank im Voraus!

Herzliche Grüße


Dimmen swApp als Objekt
Sub main()
Dim swApp als SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swExportPDFData As SldWorks.ExportPdfData
Dim strDateiname als Zeichenfolge
Status dimmen: Als boolescher Wert
Dimmfehler As Long, Warnungen As Long
Legen Sie swApp = Application.SldWorks fest
Festlegen von swModel = swApp.ActiveDoc
"Retten
status = swModel.Save3(swSaveAsOptions_e.swSaveAsOptions_Silent, Fehler, Warnungen)
'Exportieren in PDF, wenn es sich um eine Zeichnung handelt
Wenn (swModel.GetType = swDocDRAWING) dann
strDateiname = swModel.GetPathName
strDateiname = Links(strDateiname, Len(strDateiname) - 6) & "pdf"
Set swExportPDFData = swApp.GetExportFileData(1)
swModel.Extension.SaveAs strDateiname, 0, 0, swExportPDFData, 0, 0
Ende, wenn
Ende Sub

Inspiriert von @Cyril.f.s Antwort:

Dieser (ungetestete) Code sollte funktionieren

Dim swApp As Object
Sub main()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swExportPDFData As SldWorks.ExportPdfData
Dim strFilename As String
Dim status As Boolean
Dim errors As Long, warnings As Long
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
'Save
status = swModel.Save3(swSaveAsOptions_e.swSaveAsOptions_Silent, errors, warnings)
'Export to PDF if it is a drawing
If (swModel.GetType = swDocDRAWING) Then
strFilename = swModel.GetPathName
strFilename =  Mid(strFilename, InStrRev(strFilename, "\") + 1) 'Purge le chemin d'accès
strFilename = Environ("userprofile") & "\Desktop\" & strFilename 'Ajoute le bureau comme chemin en remplaçement (A modifier si besoin Ex: strFilename ="C:\Temp\strFilename
strFilename = Left(strFilename, Len(strFilename) - 6) & « pdf »
Set swExportPDFData = swApp.GetExportFileData(1)
swModel.Extension.SaveAs strFilename, 0, 0, swExportPDFData, 0, 0
End If
End Sub

2 „Gefällt mir“

Guten Abend

Ist neben der Antwort der @sbadenis auch der Aufnahmepfad festgelegt oder nicht?
Der angebotene Code speichert auf dem Desktop.

2 „Gefällt mir“

Hallo Cyril,

Der Pfad befindet sich in einem Ordner, der dem Plan im PDF-Format gewidmet ist, der sich von dem im SW-Format unterscheidet.
Aber mit der Zeit wird sich der Ort ändern, weil ich in Ordnern mit 1000 Plänen arbeite und es geht sehr schnell. (Ordner auf einem dedizierten Server)

Außerdem bin ich mir nicht sicher, ob ich verstanden habe, was ich im @sbadenis Makro tun sollte und wo ich meinen Pfad hinzufügen soll :sweat_smile:

Vielen Dank für Ihre Antworten.

Herzliche Grüße

Der Pfad wurde bereits fest hinzugefügt (zum Desktop)
Wie möchten Sie Makros verwenden?
Fall Nr. 1 Datei für Datei fragt Sie das Makro, ob Sie Ihre Datei in jeder Datei speichern möchten (was schnell Kopfschmerzen bereiten kann, wenn 100 Dateien gespeichert werden müssen)
Fall Nr. 2 in einem Unterverzeichnis Ihrer Datei (immer identisch)
Fall Nr. 3 (der, den ich ausgewählt hatte) auf dem Desktop (Falls notwendig, fügen Sie Maps/ hinter Desktop hinzu, um einen Ordner auf dem Desktop zu haben).

3 „Gefällt mir“

Okay, danke für die Klarstellung.

Ich habe einen PDF-Zeichnungsordner und darin habe ich mehrere Ordner, die in Schritten von 1000 PDF-Plänen angeordnet sind.

Beispiel:

  • 1-1000
  • 1001-2000
  • 2001-3000

Ich denke, ich werde die Makroschaltfläche in meine Symbolleiste einfügen und sie wird an dem von mir gewählten Ort gespeichert und anschließend geändert.

Ich muss nur den Weg ins Büro durch den ersetzen, den ich will, wenn ich es richtig verstehe, werde ich es versuchen.
Mein aktueller Pfad sieht folgendermaßen aus:
O:\SolidWorks Datenbank\03-PDF-Bibliothek\18001-19000

Vielen Dank Denis für deine Antwort.

Herzliche Grüße

In diesem Fall ändern Sie diese Zeile:

strFilename = Environ("userprofile") & "\Desktop\" & strFilename 'Ajoute le bureau comme chemin en remplaçement (A modifier si besoin Ex: strFilename ="C:\Temp\strFilename

Von '''
strDateiname = "O:\SolidWorks Base\03-PDF-Bibliothek\18001-19000" & strDateiname

Et le jour ou tu aura dépassé tes 1000 tu changes de nouveau cette ligne dans la macro
2 „Gefällt mir“

Leider funktioniert es nicht

In der Tat Fehler es fehlte ein \ nach 19000, hier ist der Code geändert und vollständig und getestet:

Dim swApp As Object
Sub main()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swExportPDFData As SldWorks.ExportPdfData
Dim strFilename As String
Dim status As Boolean
Dim errors As Long, warnings As Long
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
'Save
status = swModel.Save3(swSaveAsOptions_e.swSaveAsOptions_Silent, errors, warnings)
'Export to PDF if it is a drawing
If (swModel.GetType = swDocDRAWING) Then
strFilename = swModel.GetPathName
strFilename = Mid(strFilename, InStrRev(strFilename, "\") + 1)  'Purge le chemin d'accès
strFilename = "O:\Base SolidWorks\03-Bibliothèque PDF\18001-19000\" & strFilename
strFilename = Left(strFilename, Len(strFilename) - 6) & "pdf"
Debug.Print strFilename
Set swExportPDFData = swApp.GetExportFileData(1)
swModel.Extension.SaveAs strFilename, 0, 0, swExportPDFData, 0, 0
End If
End Sub

Außerdem muss der Ordner 18001-19000 bereits vorhanden sein, bevor Sie das Makro starten

1 „Gefällt mir“

Oh ja! Gut gemacht :sweat_smile:

Es ist perfekt, es funktioniert!

Vielen Dank!

Wäre es aus Neugier komplex, automatisch die richtige Datei zum Makro zu finden, wenn ich den Meilenstein der Plannummern überschritten habe?

Wenn Sie Ihre Nummer im Namen des Raumes finden, ist das ganz einfach.
indem Sie direkt unter dieser Zeile hinzufügen:

strFilename = Mid(strFilename, InStrRev(strFilename, "\") + 1)  'Purge le chemin d'accès

Sie erhalten die 2 1. Ziffern und wir ändern den Namen des Ordners entsprechend.
Es würde ein paar Zeilen Code hinzufügen, aber nichts Besonderes.
Auf der anderen Seite müssen Sie die Datei auch erstellen, wenn sie nicht vorhanden ist.

Okay, ich glaube, ich verstehe das Prinzip.

Derzeit arbeite ich, wie bereits erwähnt, mit Ordnern, die genau so benannt sind: (Ich erstelle sie im Voraus)

17001-18000
18001-19000
19001-20000

Ich muss den Namen meiner Ordner ändern, damit das Makro funktioniert?

Nein, bei mir ist es per Makro möglich, aber es würde ein paar Zeilen Code hinzufügen und man muss sicher sein, dass der Dateiname des MEP auch in den vom Ordner angegebenen Werten enthalten ist (Beispiel 18001.slddrw-> Ordner 18001-19000)
Können Sie den genauen Namen einer Zeichnung als Beispiel nennen?
Denn die Idee wäre, per Makro die 1. Ziffer abzurufen und diesen Ziffern folgend im vorhandenen Verzeichnis zu speichern oder den Ordner zu erstellen, wenn wir zu den nächsten Tausend gehen.

1 „Gefällt mir“

Hier ist der geänderte Code für die automatische Erstellung des Ordnernamens, wenn die MEps tatsächlich in dieser Form vorliegen:
18001.slddrw, 19000.slddrw oder 20000.slddrw...

Dim swApp As Object
Sub main()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swExportPDFData As SldWorks.ExportPdfData
Dim strFilename As String
Dim FolderName As String
Dim status As Boolean
Dim errors As Long, warnings As Long
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
'Save
status = swModel.Save3(swSaveAsOptions_e.swSaveAsOptions_Silent, errors, warnings)
'Export to PDF if it is a drawing
If (swModel.GetType = swDocDRAWING) Then
strFilename = swModel.GetPathName
strFilename = Mid(strFilename, InStrRev(strFilename, "\") + 1)  'Purge le chemin d'accès
FolderName = Left(strFilename, Len(strFilename) - 7)
Debug.Print Right(FolderName, Len(FolderName) - 2)
If Right(FolderName, Len(FolderName) - 2) = "000" Then

'Si la MEP se termine par 000 on créer le dossier avec avec comme début de N° FolderName-1
FolderName = (Left(FolderName, Len(FolderName) - 3) - 1) & "001-" & (Left(FolderName, Len(FolderName) - 3)) & "000"
Else

'Si la MEP ne se termine pas par 000 on créer le dossier avec comme début de N° FolderName
FolderName = Left(FolderName, Len(FolderName) - 3) & "001-" & (Left(FolderName, Len(FolderName) - 3) + 1) & "000"
End If
FolderName = "O:\Base SolidWorks\03-Bibliothèque PDF\" & FolderName & "\"

'On vérifie si le dossier de sauvegarde existe sinon création de ce dossier
If Dir(FolderName, vbDirectory + vbHidden) = "" Then
    MkDir FolderName
    End If



strFilename = FolderName & strFilename
strFilename = Left(strFilename, Len(strFilename) - 6) & "pdf"
Debug.Print strFilename
Set swExportPDFData = swApp.GetExportFileData(1)
swModel.Extension.SaveAs strFilename, 0, 0, swExportPDFData, 0, 0
End If
End Sub
1 „Gefällt mir“

Ja, meine Zeichnungsdateien tragen einen treffenden Namen so.

Ich konnte einen Test machen und es funktioniert perfekt.

Nochmals vielen Dank für Ihre Hilfe, es ist wirklich schön :grin:

1 „Gefällt mir“