Option Strict Off Imports System Imports System.Collections Imports NXOpen Imports NXOpen.Drawings Imports NXOpen.UF Imports NXOpen.Utilities Module export_pdf_of_each_drawing_sheet_in_each_part_in_specified_directory Dim s As Session = Session.GetSession() Dim ufs As UFSession = UFSession.GetUFSession() Dim lw As ListingWindow = s.ListingWindow Sub Main(ByVal args As String()) ufs.Assem.RestoreLoadOptions("D:\UGNX75\UGII\load_options.def") Try Dim theDirectory As String = "D:\DATEIPFAD" lw.Open() lw.WriteLine(" ") lw.WriteLine("Directory to process: " & theDirectory) lw.WriteLine(" ") Dim partFlag As Integer = 0 Dim partCount As Integer = 0 For Each fileName As String In My.Computer.FileSystem.GetFiles(theDirectory) Dim extension As String = Right$(fileName, 8) If extension = "_dwg.prt" Or _ extension = "_Dwg.prt" Or _ extension = "_DWG.prt" Or _ extension = "_dwg.PRT" Or _ extension = "_Dwg.PRT" Or _ extension = "_DWG.PRT" Or _ extension = "_dwg.Prt" Or _ extension = "_Dwg.Prt" Or _ extension = "_DWG.Prt" Then partFlag = open_part_file(fileName) partCount = ufs.Part.AskNumParts() End If If partFlag > 0 Then Else If partCount > 0 Then process_each_drawing(s.Parts.Display(), fileName) End If End If If partCount > 0 Then s.Parts.CloseAll(BasePart.CloseModified.CloseModified, Nothing) lw.WriteLine(" ") End If ufs.Undo.DeleteAllMarks() Next Catch ex As Exception Console.OpenStandardOutput() Console.WriteLine(ex.ToString) Console.WriteLine() End Try End Sub Sub process_each_drawing(ByVal thePart As Part, ByVal fileName As String) If thePart.Tag = Tag.Null Then Return End If Dim drawingsheets As DrawingSheet() = thePart.DrawingSheets.ToArray If drawingsheets.Length() > 0 Then lw.WriteLine(" Sheets found: " & drawingsheets.Length().ToString()) End If Dim mySheet As DrawingSheet = Nothing Dim partName As String = thePart.Leaf.ToString() For Each mySheet In drawingsheets lw.WriteLine(" Processing Sheet: " & mySheet.Name()) mySheet.Open() s.Parts.Work.DraftingViews.UpdateViews(DraftingViewCollection.ViewUpdateOption.All, mySheet) 'Dim SHEET_SIZE As String 'SHEET_SIZE = s.Parts.Work.GetStringAttribute("SH_SHEET_SIZE") Dim pdf_output_name As String = "" pdf_output_name = fileName.ToLower() pdf_output_name = pdf_output_name.Replace(".prt", "") Dim sheetName As String = mySheet.Name.ToLower() 'pdf_output_name = String.Concat(pdf_output_name, "_", SHEET_SIZE, ".PDF") pdf_output_name = String.Concat(pdf_output_name, "_", sheetName, ".PDF") lw.WriteLine("PDF: " & pdf_output_name) Dim workPart As Part = s.Parts.Work() Dim printPDFBuilder1 As PrintPDFBuilder printPDFBuilder1 = workPart.PlotManager.CreatePrintPdfbuilder() Dim dwgUnits As DrawingSheet.Unit = mySheet.Units If dwgUnits = DrawingSheet.Unit.Inches Then printPDFBuilder1.Units = PrintPDFBuilder.UnitsOption.English End If If dwgUnits = DrawingSheet.Unit.Millimeters Then printPDFBuilder1.Units = PrintPDFBuilder.UnitsOption.Metric End If printPDFBuilder1.Scale = 1.0 printPDFBuilder1.Action = PrintPDFBuilder.ActionOption.New printPDFBuilder1.Colors = PrintPDFBuilder.Color.BlackOnWhite printPDFBuilder1.Widths = PrintPDFBuilder.Width.StandardWidths printPDFBuilder1.Size = PrintPDFBuilder.SizeOption.ScaleFactor printPDFBuilder1.XDimension = mySheet.Length() printPDFBuilder1.YDimension = mySheet.Height() printPDFBuilder1.RasterImages = True printPDFBuilder1.ImageResolution = PrintPDFBuilder.ImageResolutionOption.High printPDFBuilder1.ShadedGeometry = True Dim sheets1(0) As NXObject sheets1(0) = mySheet printPDFBuilder1.SourceBuilder.SetSheets(sheets1) printPDFBuilder1.Filename = pdf_output_name Dim nxObject1 As NXObject nxObject1 = printPDFBuilder1.Commit() printPDFBuilder1.Destroy() Next End Sub Public Function open_part_file(ByVal fileName As String) As Integer Dim loadStatus As NXOpen.PartLoadStatus = Nothing Dim currentPart As Part = s.Parts.OpenBaseDisplay(fileName, loadStatus) If loadStatus.NumberUnloadedParts < 1 Then lw.WriteLine(" Processing Part File: " & fileName) Else For inx As Integer = 0 To loadStatus.NumberUnloadedParts - 1 lw.WriteLine(loadStatus.GetStatus(inx).ToString()) Dim errno As Integer = CInt(loadStatus.GetStatus(inx)) Dim errmsg As String = "" ufs.UF.GetFailMessage(errno, errmsg) lw.WriteLine("Error: " & errmsg & " in: " & fileName) lw.WriteLine(" ") Next End If Return loadStatus.NumberUnloadedParts() End Function End Module