The following journal code will print all drawing sheets from all fully loaded part files to your default printer. This can be useful if you want some quick print outs for reference. It should use the default paper size for your printer. If it does not, or you prefer a different paper size, you can uncomment or add the appropriate paper size in the PrintSheet subroutine.
Points of interest
The code uses some .net framework objects to determine the default printer.
The subroutine ChangeDisplayPart will make the given part the display part. Printing the drawing sheets didn't seem to work unless the part was either the display or work part. This subroutine could come in handy in other journal projects.
This journal also shows how to loop through the drawing sheets and update any views that are out of date.
The Code
Written and tested on NX 8.5; will probably work as far back as NX 6, though I cannot test that.
The "lw" calls are there for debugging only, uncomment them to see additional information.
Option Strict Off Imports System Imports System.Windows.Forms Imports NXOpen Module Module1 Dim theSession As Session = Session.GetSession() Dim defaultPrinterName As String = "" Sub Main() Dim workPart As Part = theSession.Parts.Work Dim lw As ListingWindow = theSession.ListingWindow 'lw.Open() Dim printerSettings As New System.Drawing.Printing.PrinterSettings Try defaultPrinterName = printerSettings.PrinterName Catch ex As System.Exception defaultPrinterName = "" Finally printerSettings = Nothing End Try If String.IsNullOrEmpty(defaultPrinterName) Then MessageBox.Show("No default printer found.", "Printer error", MessageBoxButtons.OK, MessageBoxIcon.Error) Return End If For Each tempPart As Part In theSession.Parts If tempPart.IsFullyLoaded Then 'lw.WriteLine("part: " & tempPart.FullPath) ChangeDisplayPart(tempPart) For Each tempSheet As Drawings.DrawingSheet In tempPart.DrawingSheets 'lw.WriteLine(" sheet: " & tempSheet.Name) tempPart.DraftingViews.UpdateViews(Drawings.DraftingViewCollection.ViewUpdateOption.OutOfDate, tempSheet) PrintSheet(tempPart, tempSheet) Next 'lw.WriteLine("") End If ChangeDisplayPart(workPart) Next 'lw.Close() End Sub Sub PrintSheet(ByVal thePart As Part, ByVal theSheet As Drawings.DrawingSheet) Dim printBuilder1 As PrintBuilder printBuilder1 = thePart.PlotManager.CreatePrintBuilder() printBuilder1.PrinterText = defaultPrinterName 'printer settings, change as desired printBuilder1.Copies = 1 printBuilder1.ThinWidth = 1.0 printBuilder1.NormalWidth = 2.0 printBuilder1.ThickWidth = 3.0 printBuilder1.Output = PrintBuilder.OutputOption.WireframeBlackWhite printBuilder1.RasterImages = True printBuilder1.Orientation = PrintBuilder.OrientationOption.Landscape 'printBuilder1.Paper = PrintBuilder.PaperSize.Letter 'printBuilder1.Paper = PrintBuilder.PaperSize.A4 Dim paper1 As PrintBuilder.PaperSize paper1 = printBuilder1.Paper Dim sheets1(0) As NXObject sheets1(0) = theSheet printBuilder1.SourceBuilder.SetSheets(sheets1) Dim nXObject1 As NXObject Try nXObject1 = printBuilder1.Commit() Catch ex As NXException 'optional: add code to log/display error Finally printBuilder1.Destroy() End Try End Sub Public Sub ChangeDisplayPart(ByVal myPart As Part) 'make the given component the display part Dim markId1 As Session.UndoMarkId markId1 = theSession.SetUndoMark(Session.MarkVisibility.Invisible, "Display Part") Try Dim partLoadStatus1 As PartLoadStatus Dim status1 As PartCollection.SdpsStatus status1 = theSession.Parts.SetDisplay(myPart, False, False, partLoadStatus1) partLoadStatus1.Dispose() Catch ex As NXException 'optional: add code to log/display error theSession.UndoToMark(markId1, "Display Part") Finally theSession.DeleteUndoMark(markId1, "Display Part") End Try End Sub End Module

Comments
Printer paper sizes
This works really nice! I guessed changing (letter) to (tabloid) would get me the 11x17 sheet. Do you know what te command would be for 22X34 or D sheet?
Paul Fillion
re: paper size
Check out the PrintBuilder.PaperSize enumeration in the API documentation; there are dozens of paper sizes listed. The one you ultimately use may also depend on your printer settings.
That said, I'd start by trying the .PaperSize.DSheet constant. If that doesn't work, try recording a journal while printing the desired size to see what gets recorded.