In diesem Beitrag habe ich gezeigt, wie man mittels iLogic eine Zeichnung als PDF speichern kann. Das Problem bei diesem Beispiel war, das bei Zeichnungen mit mehreren Blättern immer nur eine Seite als PDF gespeichert wurde. Ein Leser hat im Kommentar einen iLogic Quelltext gepostet, der mehrere Blätter als PDF speichert:
path_and_name = ThisDoc.PathAndFileName(False) ' without extension
PDFAddIn = ThisApplication.ApplicationAddIns.ItemById("{0AC6FD96-2F4D-42CE-8BE0-8AEA580399E4}")
oDocument = ThisApplication.ActiveDocument
oContext = ThisApplication.TransientObjects.CreateTranslationContext
oContext.Type = IOMechanismEnum.kFileBrowseIOMechanism
oOptions = ThisApplication.TransientObjects.CreateNameValueMap
oDataMedium = ThisApplication.TransientObjects.CreateDataMedium
If PDFAddIn.HasSaveCopyAsOptions(oDataMedium, oContext, oOptions) Then
oOptions.Value("All_Color_AS_Black") = 1
oOptions.Value("Remove_Line_Weights") = 1
oOptions.Value("Vector_Resolution") = 400
oOptions.Value("Sheet_Range") = Inventor.PrintRangeEnum.kPrintAllSheets
'oOptions.Value("Custom_Begin_Sheet") = 2
'oOptions.Value("Custom_End_Sheet") = 4
End If
'Set the destination file name
oDataMedium.FileName = path_and_name & ".pdf"
'Publish document
PDFAddIn.SaveCopyAs(oDocument, oContext, oOptions,oDataMedium)
Zusammen mit den MUM iLogic Autorun Tool sicherlich für den einen oder anderen nützlich.
Sehr guter Beitrag,
AntwortenLöschenwie löst man das ganze, wenn man nun noch jedes Blatt in einzelne *.pdf gedruckt haben möchte. Z.B. Zeichnungsname_(Blattname).pdf
Und geht das ganze auch mit dem gleichzeitigen Speichern einer *.dwg-Datei zu lösen?
Viele Grüße,
'------start of iLogic-------
LöschenoPath = ThisDoc.Path
oFileName = ThisDoc.FileName(False) 'without extension
oPDFAddIn = ThisApplication.ApplicationAddIns.ItemById _
("{0AC6FD96-2F4D-42CE-8BE0-8AEA580399E4}")
oDocument = ThisApplication.ActiveDocument
oContext = ThisApplication.TransientObjects.CreateTranslationContext
oContext.Type = IOMechanismEnum.kFileBrowseIOMechanism
oOptions = ThisApplication.TransientObjects.CreateNameValueMap
oDataMedium = ThisApplication.TransientObjects.CreateDataMedium
'Define the drawing
Dim oDrawing As DrawingDocument
oDrawing = ThisDoc.Document
Dim oSheet As Sheet
Dim lPos As Long
Dim rPos As Long
Dim sLen As Long
Dim sSheetName As String
Dim iSheetNumber As Integer
'step through each drawing sheet
For Each oSheet In oDrawing.Sheets
'find the seperator in the sheet name:number
lPos = InStr(oSheet.Name, ":")
'find the number of characters in the sheet name
sLen = Len(oSheet.Name)
'find the sheet name
sSheetName = Left(oSheet.Name, lPos -1)
'find the sheet number
sSheetNumber = Right(oSheet.Name, sLen -lPos)
'set PDF Options
If oPDFAddIn.HasSaveCopyAsOptions(oDataMedium, oContext, oOptions) Then
oOptions.Value("All_Color_AS_Black") = 1
oOptions.Value("Remove_Line_Weights") = 1
oOptions.Value("Vector_Resolution") = 400
oOptions.Value("Sheet_Range") = Inventor.PrintRangeEnum.kPrintSheetRange
oOptions.Value("Custom_Begin_Sheet") = sSheetNumber
oOptions.Value("Custom_End_Sheet") = sSheetNumber
End If
'get PDF target folder path
oFolder = Left(oPath, InStrRev(oPath, "\")) & "PDF"
'Check for the PDF folder and create it if it does not exist
If Not System.IO.Directory.Exists(oFolder) Then
System.IO.Directory.CreateDirectory(oFolder)
End If
'Set the PDF target file name
oDataMedium.FileName = oFolder & "\" & oFileName & sSheetName & ".pdf"
'Publish document
oPDFAddIn.SaveCopyAs(oDocument, oContext, oOptions, oDataMedium)
Next
'------end of iLogic-------
Quelle: http://inventortrenches.blogspot.de/2011/07/ilogic-to-save-pdf-files-to-new.html
Hallo,
Löschenhier funkioniert vieles schon perfekt und das wäre genau das was ich brauchen könnte. Inventor(2015) legt verschiedene PDF´s mit den jeweiligen Blattnamen an... Dargestellt wird bei mir in jeder PDF aber leider immer das erste Blatt. Weiß jemand Abhilfe?
Hallo,
AntwortenLöschenleider bekomme ich mit demCode von Anonym zwar mehrere PDF jeweils mit den Blattnamen, es wird aber in jeder PDF das erste Blatt dargestellt. Weiß jemand Hilfe? Bzw. ist noch ein Fehler im Code?