Continue to Site

Eng-Tips is the largest engineering community on the Internet

Intelligent Work Forums for Engineering Professionals

  • Congratulations GregLocock on being selected by the Eng-Tips community for having the most helpful posts in the forums last week. Way to Go!

export drawing sheets to PDF help

Status
Not open for further replies.

JAYDEE66

Aerospace
Jan 6, 2020
13
I have Found a great journal online that creates a PDF of all the drawing sheets in the current part file. What I would like to have is a journal that will pause and let me select which sheets I want in the PDF file. example. If there are 8 sheets and I only want sheet 2 and 4 to be in the PDF file I would like to be able to select only sheets 2 and 4. I have limited journal experience and could use the help. if anyone knows where there might be a journal like this online I would appreciate it if you could share it.

thank you

 
Replies continue below

Recommended for you

Try this:

Code:
Option Strict Off
Imports System
Imports System.IO
Imports System.Collections
Imports System.Collections.Generic
Imports System.Windows.Forms
Imports System.Windows.Forms.MessageBox
Imports NXOpen
Imports NXOpen.UF
 
Module NXJournal
 
Dim theSession As Session = Session.GetSession()
Dim workPart As Part = theSession.Parts.Work
Dim displayPart As Part = theSession.Parts.Display
Dim shts As New ArrayList()
Dim myForm1 As New Form1
	
'**********************************************************
 
Sub Main
 
Dim dwgs As Drawings.DrawingSheetCollection
dwgs = workPart.DrawingSheets
Dim sheet As Drawings.DrawingSheet
Dim i As Integer
Dim pdfFile As String
Dim currentPath As String
Dim currentFile As String
Dim exportFile As String
Dim partUnits As Integer
Dim strOutputFolder As String
Dim strRevision As String
Dim rspFileExists
Dim rspAdvancePrint
 
'determine if we are running under TC or native
Dim IsTcEng As Boolean = False
Dim UFSes As UFSession = UFSession.GetUFSession()
UFSes.UF.IsUgmanagerActive(IsTcEng)
 
partUnits = displayPart.PartUnits
'0 = inch
'1 = metric
 
If IsTcEng Then
   currentFile = workPart.GetStringAttribute("DB_PART_NO")
   strRevision = workPart.GetStringAttribute("DB_PART_REV")
 
Else 'running in native mode
   'currentFile = GetFilePath() & GetFileName() & ".prt"
   currentPath = GetFilePath()
   currentFile = GetFileName()
 
   Try
       strRevision = workPart.GetStringAttribute("REVISION")
       strRevision = Trim(strRevision)
   Catch ex As Exception
       strRevision = ""
   End Try
End If
exportFile = currentFile
 
strOutputFolder = OutputPath()
'if we don't have a valid directory (ie the user pressed 'cancel') exit the journal
If Not Directory.Exists(strOutputFolder) Then
   Exit Sub
End If
strOutputFolder = strOutputFolder & "\"
 
rspAdvancePrint = MessageBox.Show("Add advance print watermark?", "Add Watermark?", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
 

For Each sheet in dwgs
shts.Add(sheet.Name)
Next
shts.Sort()

if shts.count() > 1 then 
	
	myform1.shts = shts
	myForm1.ShowDialog()
	
	If myForm1.Canceled Then

		'Exit sub
		Return

	End If
		
	shts = myform1.shts
		
end if
	
i = 0
Dim sht As String
For Each sht in shts
 
   For Each sheet in dwgs
       If sheet.name = sht Then
           i = i + 1
 
           If rspAdvancePrint = vbyes Then
               pdfFile = strOutputFolder & exportFile & "_advance" & ".pdf"
           Else
               If strRevision <> "" Then
                   pdfFile = strOutputFolder & exportFile & "_" & strRevision & ".pdf"
               Else
                   pdfFile = strOutputFolder & exportFile & ".pdf"
               End If
           End If
 
           'the pdf export uses 'append file', if we are on sheet 1 make sure the user wants to overwrite
           'if the drawing is multisheet, don't ask on subsequent sheets
           If i = 1 Then
               If File.Exists(pdfFile) Then
                   rspFileExists = msgbox("The file: '" & pdfFile & "' already exists; overwrite?", vbyesno + vbquestion)
                   If rspFileExists = vbYes Then
                       Try
                           File.Delete(pdfFile)
                       Catch ex As Exception
                           msgbox(ex.message & vbcrlf & "Journal exiting", vbcritical + vbokonly, "Error")
                           Exit Sub
                       End Try
                   Else
                       'msgbox("journal exiting", vbokonly)
                       Exit Sub
                   End If
               End If
           End If
 
           'update any views that are out of date
           theSession.Parts.Work.DraftingViews.UpdateViews(Drawings.DraftingViewCollection.ViewUpdateOption.OutOfDate, sheet)
 
           Try
               ExportPDF(sheet, pdfFile, partUnits, rspAdvancePrint)
           Catch ex As exception
               msgbox("Error occurred in PDF export" & vbcrlf & ex.message & vbcrlf & "journal exiting", vbcritical + vbokonly, "Error")
               Exit Sub
           End Try
           Exit For
       End If
   Next
 
Next
 
   If i = 0 Then
       MessageBox.Show("This part has no drawing sheets to export", "PDF export failure", MessageBoxButtons.ok, MessageBoxIcon.Warning)
   Else
       MessageBox.Show("Exported: " & i & " sheet(s) to pdf file" & vbcrlf & pdfFile, "PDF export success", MessageBoxButtons.ok, MessageBoxIcon.Information)
   End If
 
End Sub
'**********************************************************
 
Function GetFileName()
   Dim strPath As String
   Dim strPart As String
   Dim pos As Integer
 
   'get the full file path
   strPath = displayPart.fullpath
   'get the part file name
   pos = InStrRev(strPath, "\")
   strPart = Mid(strPath, pos + 1)
 
   strPath = Left(strPath, pos)
   'strip off the ".prt" extension
   strPart = Left(strPart, Len(strPart) - 4)
 
   GetFileName = strPart
End Function
'**********************************************************
 
Function GetFilePath()
   Dim strPath As String
   Dim strPart As String
   Dim pos As Integer
 
   'get the full file path
   strPath = displayPart.fullpath
   'get the part file name
   pos = InStrRev(strPath, "\")
   strPart = Mid(strPath, pos + 1)
 
   strPath = Left(strPath, pos)
   'strip off the ".prt" extension
   strPart = Left(strPart, Len(strPart) - 4)
 
   GetFilePath = strPath
End Function
'**********************************************************
 
Function OutputPath()
'Requires:
'    Imports System.IO
'    Imports System.Windows.Forms
'if the user presses OK on the dialog box, the chosen path is returned
'if the user presses cancel on the dialog box, 0 is returned
 
Dim strLastPath As String
Dim strOutputPath As String
 
'Key will show up in HKEY_CURRENT_USER\Software\VB and VBA Program Settings
Try
  'Get the last path used from the registry
  strLastPath = GetSetting("NX journal", "Export pdf", "ExportPath")
  'msgbox("Last Path: " & strLastPath)
  Catch e As ArgumentException
  Catch e As Exception
  msgbox (e.GetType.ToString)
  Finally
End Try
 
Dim FolderBrowserDialog1 As New FolderBrowserDialog
 
' Then use the following code to create the Dialog window
' Change the .SelectedPath property to the default location
With FolderBrowserDialog1
    ' Desktop is the root folder in the dialog.
    .RootFolder = Environment.SpecialFolder.Desktop
    ' Select the D:\home directory on entry.
   If Directory.Exists(strLastPath) Then
       .SelectedPath = strLastPath
   Else
       .SelectedPath = "D:\home"
   End If
    ' Prompt the user with a custom message.
    .Description = "Select the directory to export .pdf file"
    If .ShowDialog = DialogResult.OK Then
       ' Display the selected folder if the user clicked on the OK button.
       OutputPath = .SelectedPath
       ' save the output folder path in the registry for use on next run
       SaveSetting("NX journal", "Export pdf", "ExportPath", .SelectedPath)
   Else
       'user pressed 'cancel', exit the subroutine
       OutputPath = 0
       'exit sub
    End If
End With
 
End Function
'**********************************************************
 
Sub ExportPDF(dwg As Drawings.DrawingSheet, outputFile As String, units As Integer, advancePrint As Integer)
 
   Dim printPDFBuilder1 As PrintPDFBuilder
 
   printPDFBuilder1 = workPart.PlotManager.CreatePrintPdfbuilder()
   printPDFBuilder1.Scale = 1.0
   printPDFBuilder1.Action = PrintPDFBuilder.ActionOption.Native
   printPDFBuilder1.Colors = PrintPDFBuilder.Color.BlackOnWhite
   printPDFBuilder1.Size = PrintPDFBuilder.SizeOption.ScaleFactor
   If units = 0 Then
       printPDFBuilder1.Units = PrintPDFBuilder.UnitsOption.English
   Else
       printPDFBuilder1.Units = PrintPDFBuilder.UnitsOption.Metric
   End If
   printPDFBuilder1.XDimension = dwg.height
   printPDFBuilder1.YDimension = dwg.length
   printPDFBuilder1.OutputText = PrintPDFBuilder.OutputTextOption.Polylines
   printPDFBuilder1.RasterImages = True
   printPDFBuilder1.ImageResolution = PrintPDFBuilder.ImageResolutionOption.Medium
   printPDFBuilder1.Append = True
   If advancePrint = vbyes Then
       printPDFBuilder1.AddWatermark = True
       printPDFBuilder1.Watermark = "ADVANCE PRINT NOT TO BE USED FOR PRODUCTION " & Today
   Else
       printPDFBuilder1.AddWatermark = False
       printPDFBuilder1.Watermark = ""
   End If
 
   Dim sheets1(0) As NXObject
   Dim drawingSheet1 As Drawings.DrawingSheet = CType(dwg, Drawings.DrawingSheet)
 
   sheets1(0) = drawingSheet1
   printPDFBuilder1.SourceBuilder.SetSheets(sheets1)
 
   printPDFBuilder1.Filename = outputFile
 
   Dim nXObject1 As NXObject
   nXObject1 = printPDFBuilder1.Commit()
 
   printPDFBuilder1.Destroy()
 
End Sub
'**********************************************************
 
End Module

'*************************************************************************************************
'* FORM1
'*************************************************************************************************
Public Class Form1

	Public shts As New ArrayList()
	Public shts2 As New ArrayList()

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

	
	for each shtname as string in shts

		ListBox1.Items.Add(shtname)	
			
	next
	
	
End Sub


Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

	shts = shts2
	
	Me.Close()
	
End Sub


Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click

	_canceled = True
	Me.Close()

End Sub


Private Sub ListBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListBox1.SelectedIndexChanged

	shts2.Clear()
	
    For Each Item As Object In ListBox1.SelectedItems
	
		shts2.add(Item)
		
    Next
	
End Sub


Private _canceled As Boolean = False

Public ReadOnly Property Canceled() As Boolean

	Get
	
		Return _canceled
			
	End Get

End Property


End Class

<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class Form1
Inherits System.Windows.Forms.Form


<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
	
	Try
		
		If disposing AndAlso components IsNot Nothing Then
			
			components.Dispose()
				
		End If
			
	Finally
		
		MyBase.Dispose(disposing)
			
	End Try
		
End Sub


Private components As System.ComponentModel.IContainer

<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()

	Me.Button1 = New System.Windows.Forms.Button()
	Me.Button2 = New System.Windows.Forms.Button()
	Me.ListBox1 = New System.Windows.Forms.ListBox()
	Me.Label1 = New System.Windows.Forms.Label()
	Me.SuspendLayout()
	'
	'Button1
	'
	Me.Button1.Location = New System.Drawing.Point(36, 205)
	Me.Button1.Name = "Button1"
	Me.Button1.Size = New System.Drawing.Size(75, 23)
	Me.Button1.TabIndex = 0
	Me.Button1.Text = "Ok"
	Me.Button1.UseVisualStyleBackColor = True
	'
	'Button2
	'
	Me.Button2.Location = New System.Drawing.Point(149, 205)
	Me.Button2.Name = "Button2"
	Me.Button2.Size = New System.Drawing.Size(75, 23)
	Me.Button2.TabIndex = 1
	Me.Button2.Text = "Cancel"
	Me.Button2.UseVisualStyleBackColor = True
	'
	'ListBox1
	'
	Me.ListBox1.FormattingEnabled = True
	'Me.ListBox1.Items.AddRange(New Object() {"A", "B", "V", "X", "D"})
	Me.ListBox1.Location = New System.Drawing.Point(12, 30)
	Me.ListBox1.Name = "ListBox1"
	'Me.ListBox1.SelectionMode = System.Windows.Forms.SelectionMode.MultiSimple
	Me.ListBox1.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended
	Me.ListBox1.Size = New System.Drawing.Size(240, 160)
	Me.ListBox1.TabIndex = 2
	'
	'Label1
	'
	Me.Label1.AutoSize = True
	Me.Label1.Location = New System.Drawing.Point(12, 10)
	Me.Label1.Name = "Label1"
	Me.Label1.Size = New System.Drawing.Size(72, 13)
	Me.Label1.TabIndex = 4
	Me.Label1.Text = "Choose Sheets to exsport: "
	'
	'Form1
	'
	Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
	Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
	Me.ClientSize = New System.Drawing.Size(280, 280)
	Me.Controls.Add(Me.Label1)
	Me.Controls.Add(Me.ListBox1)
	Me.Controls.Add(Me.Button2)
	Me.Controls.Add(Me.Button1)
	Me.AcceptButton = Button1	
	Me.CancelButton = Button2 
	Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Sizable
	Me.MaximumSize = New System.Drawing.Size(280, 280)
	Me.MinimumSize = New System.Drawing.Size(280, 280)
	Me.MaximizeBox = False
	Me.MinimizeBox = False
	Me.Name = "Form1"
	Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen
	Me.Text = "Sheets to exsport:"
	Me.ResumeLayout(False)
	Me.PerformLayout()

End Sub

	Friend WithEvents Button1 As Button
	Friend WithEvents Button2 As Button
	Friend WithEvents ListBox1 As ListBox
	Friend WithEvents Label1 As System.Windows.Forms.Label
	
End Class

With best regards
Michael
 
This is the file I found.

The journal you sent works great thank you very much.

Do you know if the journal you sent can be changed to automatically select the folder that the part file is in and the ability to change the PDF name?

'Programmed on 02-05-2010 by cowski
'This journal was created to automate exporting drawings to .pdf format

Option Strict Off
Imports System
Imports System.IO
Imports NXOpen

Module NXJournal

Dim theSession As Session = Session.GetSession()
Dim workPart As Part = theSession.Parts.Work
Dim displayPart As Part = theSession.Parts.Display

'***********************************************************************

Sub Main

Dim dwgs as Drawings.DrawingSheetCollection
dwgs = workPart.DrawingSheets
Dim sheet As Drawings.DrawingSheet
Dim i as integer
Dim pdfFile as string
Dim currentPath as string
Dim currentFile as string
Dim partUnits as integer

'currentFile = GetFilePath() & GetFileName() & ".prt"
currentPath = GetFilePath()
currentFile = GetFileName()

partUnits = displayPart.PartUnits
'0 = inch
'1 = metric

i = 0
For Each sheet in dwgs
'msgbox (sheet.name)
i = i + 1

pdfFile = GetFilePath() & GetFileName() & ".pdf"

try
ExportPDF(sheet, pdfFile, partUnits)
catch ex as exception
msgbox("Error occurred in PDF export" & vbcrlf & ex.message & vbcrlf & "journal exiting", vbcritical + vbokonly)
exit sub
end try

Next

if i = 0 then
msgbox("This part has no drawing sheets to export")
else
msgbox("Exported: " & i & " sheet(s) to pdf file" & vbcrlf & pdfFile, vbokonly + vbinformation)
end if

End Sub
'***********************************************************************

Function GetFileName()
Dim strPath as String
Dim strPart as String
Dim pos as Integer

'get the full file path
strPath = displayPart.fullpath
'get the part file name
pos = InStrRev(strPath, "\")
strPart = Mid(strPath, pos + 1)

strPath = Left(strPath, pos)
'strip off the ".prt" extension
strPart = Left(strPart, Len(strPart) - 4)

GetFileName = strPart
End Function
'***********************************************************************

Function GetFilePath()
Dim strPath as String
Dim strPart as String
Dim pos as Integer

'get the full file path
strPath = displayPart.fullpath
'get the part file name
pos = InStrRev(strPath, "\")
strPart = Mid(strPath, pos + 1)

strPath = Left(strPath, pos)
'strip off the ".prt" extension
strPart = Left(strPart, Len(strPart) - 4)

GetFilePath = strPath
End Function
'***********************************************************************

Sub ExportPDF(dwg as Drawings.DrawingSheet, outputFile as string, units as integer)

Dim printPDFBuilder1 As PrintPDFBuilder

printPDFBuilder1 = workPart.PlotManager.CreatePrintPdfbuilder()
printPDFBuilder1.Scale = 1.0
printPDFBuilder1.Colors = PrintPDFBuilder.Color.BlackOnWhite
printPDFBuilder1.Size = PrintPDFBuilder.SizeOption.ScaleFactor
if units = 0 then
printPDFBuilder1.Units = PrintPDFBuilder.UnitsOption.English
else
printPDFBuilder1.Units = PrintPDFBuilder.UnitsOption.Metric
end if
printPDFBuilder1.XDimension = dwg.height
printPDFBuilder1.YDimension = dwg.length
printPDFBuilder1.OutputText = PrintPDFBuilder.OutputTextOption.Polylines
printPDFBuilder1.RasterImages = True
printPDFBuilder1.ImageResolution = PrintPDFBuilder.ImageResolutionOption.Medium
printPDFBuilder1.Append = True
printPDFBuilder1.Watermark = ""

Dim sheets1(0) As NXObject
Dim drawingSheet1 As Drawings.DrawingSheet = CType(dwg, Drawings.DrawingSheet)

sheets1(0) = drawingSheet1
printPDFBuilder1.SourceBuilder.SetSheets(sheets1)

printPDFBuilder1.Filename = outputFile

Dim nXObject1 As NXObject
nXObject1 = printPDFBuilder1.Commit()

printPDFBuilder1.Destroy()

End Sub
'***********************************************************************

End Module
 
Change:

Code:
strOutputFolder = OutputPath()

to

Code:
strOutputFolder = CurrentPath

What do You mean by "ability to change PDF name"?

With best regards
Michael
 
I changed the journal as follows

1. removed the option for the watermark.
2. included the ability to name the PDF a name of your choice. The file is put in the folder that the .prt file is located.

I am new to the eng tips, can you tell me how you add the code box?

Code:
Option Strict Off
Imports System
Imports System.IO
Imports System.Collections
Imports System.Collections.Generic
Imports System.Windows.Forms
Imports System.Windows.Forms.MessageBox
Imports NXOpen
Imports NXOpen.UF
 
Module NXJournal
 
Dim theSession As Session = Session.GetSession()
Dim workPart As Part = theSession.Parts.Work
Dim displayPart As Part = theSession.Parts.Display
Dim shts As New ArrayList()
Dim myForm1 As New Form1
	
'**********************************************************
 
Sub Main
 
Dim dwgs As Drawings.DrawingSheetCollection
dwgs = workPart.DrawingSheets
Dim sheet As Drawings.DrawingSheet
Dim i As Integer
Dim pdfFile As String
Dim currentPath As String
Dim currentFile As String
Dim exportFile As String
Dim partUnits As Integer
Dim strOutputFolder As String
Dim strRevision As String
Dim rspFileExists
 
'determine if we are running under TC or native
Dim IsTcEng As Boolean = False
Dim UFSes As UFSession = UFSession.GetUFSession()
UFSes.UF.IsUgmanagerActive(IsTcEng)
 
partUnits = displayPart.PartUnits
'0 = inch
'1 = metric
 
If IsTcEng Then
   currentFile = workPart.GetStringAttribute("DB_PART_NO")
   strRevision = workPart.GetStringAttribute("DB_PART_REV")
 
Else 'running in native mode
   'currentFile = GetFilePath() & GetFileName() & ".prt"
   currentPath = GetFilePath()
   currentFile = GetFileName()
 
   Try
       strRevision = workPart.GetStringAttribute("REVISION")
       strRevision = Trim(strRevision)
   Catch ex As Exception
       strRevision = ""
   End Try
End If
exportFile = currentFile
 
strOutputFolder = OutputPath()
'if we don't have a valid directory (ie the user pressed 'cancel') exit the journal
If Not Directory.Exists(strOutputFolder) Then
   Exit Sub
End If
strOutputFolder = strOutputFolder & "\"
 
Dim userSelectedFileName = exportFile & ".pdf"
userSelectedFileName = InputBox("Enter File Name", "NAME OF FILE", userSelectedFileName)
If String.ReferenceEquals(userSelectedFileName, String.Empty) Then
    Exit Sub

End If

pdfFile = strOutputFolder & userSelectedFileName


For Each sheet in dwgs
shts.Add(sheet.Name)
Next
shts.Sort()

if shts.count() > 1 then 
	
	myform1.shts = shts
	myForm1.ShowDialog()
	
	If myForm1.Canceled Then

		'Exit sub
		Return

	End If
		
	shts = myform1.shts
		
end if
	
i = 0
Dim sht As String
For Each sht in shts
 
   For Each sheet in dwgs
       If sheet.name = sht Then
           i = i + 1
 


 
           'the pdf export uses 'append file', if we are on sheet 1 make sure the user wants to overwrite
           'if the drawing is multisheet, don't ask on subsequent sheets
           If i = 1 Then
               If File.Exists(pdfFile) Then
                   rspFileExists = msgbox("The file: '" & pdfFile & "' already exists; overwrite?", vbyesno + vbquestion)
                   If rspFileExists = vbYes Then
                       Try
                           File.Delete(pdfFile)
                       Catch ex As Exception
                           msgbox(ex.message & vbcrlf & "Journal exiting", vbcritical + vbokonly, "Error")
                           Exit Sub
                       End Try
                   Else
                       'msgbox("journal exiting", vbokonly)
                       Exit Sub
                   End If
               End If
           End If
 
           'update any views that are out of date
           theSession.Parts.Work.DraftingViews.UpdateViews(Drawings.DraftingViewCollection.ViewUpdateOption.OutOfDate, sheet)
 
           Try
               ExportPDF(sheet, pdfFile, partUnits)
           Catch ex As exception
               msgbox("Error occurred in PDF export" & vbcrlf & ex.message & vbcrlf & "journal exiting", vbcritical + vbokonly, "Error")
               Exit Sub
           End Try
           Exit For
       End If
   Next
 
Next
 
   If i = 0 Then
       MessageBox.Show("This part has no drawing sheets to export", "PDF export failure", MessageBoxButtons.ok, MessageBoxIcon.Warning)
   Else
       MessageBox.Show("Exported: " & i & " sheet(s) to pdf file" & vbcrlf & pdfFile, "PDF export success", MessageBoxButtons.ok, MessageBoxIcon.Information)
   End If
 
End Sub
'**********************************************************
 
Function GetFileName()
   Dim strPath As String
   Dim strPart As String
   Dim pos As Integer
 
   'get the full file path
   strPath = displayPart.fullpath
   'get the part file name
   pos = InStrRev(strPath, "\")
   strPart = Mid(strPath, pos + 1)
 
   strPath = Left(strPath, pos)
   'strip off the ".prt" extension
   strPart = Left(strPart, Len(strPart) - 4)
 
   GetFileName = strPart
End Function
'**********************************************************
 
Function GetFilePath()
   Dim strPath As String
   Dim strPart As String
   Dim pos As Integer
 
   'get the full file path
   strPath = displayPart.fullpath
   'get the part file name
   pos = InStrRev(strPath, "\")
   strPart = Mid(strPath, pos + 1)
 
   strPath = Left(strPath, pos)
   'strip off the ".prt" extension
   strPart = Left(strPart, Len(strPart) - 4)
 
   GetFilePath = strPath
End Function
'**********************************************************
 
Function OutputPath()
'Requires:
'    Imports System.IO
'    Imports System.Windows.Forms
'if the user presses OK on the dialog box, the chosen path is returned
'if the user presses cancel on the dialog box, 0 is returned
 
Dim strLastPath As String
Dim strOutputPath As String
 
'Key will show up in HKEY_CURRENT_USER\Software\VB and VBA Program Settings
Try
  'Get the last path used from the registry
  strLastPath = GetSetting("NX journal", "Export pdf", "ExportPath")
  'msgbox("Last Path: " & strLastPath)
  Catch e As ArgumentException
  Catch e As Exception
  msgbox (e.GetType.ToString)
  Finally
End Try
 
 OutputPath = GetFilePath()

 
End Function
'**********************************************************
 
Sub ExportPDF(dwg As Drawings.DrawingSheet, outputFile As String, units As Integer)
 
   Dim printPDFBuilder1 As PrintPDFBuilder
 
   printPDFBuilder1 = workPart.PlotManager.CreatePrintPdfbuilder()
   printPDFBuilder1.Scale = 1.0
   printPDFBuilder1.Action = PrintPDFBuilder.ActionOption.Native
   printPDFBuilder1.Colors = PrintPDFBuilder.Color.BlackOnWhite
   printPDFBuilder1.Size = PrintPDFBuilder.SizeOption.ScaleFactor
   If units = 0 Then
       printPDFBuilder1.Units = PrintPDFBuilder.UnitsOption.English
   Else
       printPDFBuilder1.Units = PrintPDFBuilder.UnitsOption.Metric
   End If
   printPDFBuilder1.XDimension = dwg.height
   printPDFBuilder1.YDimension = dwg.length
   printPDFBuilder1.OutputText = PrintPDFBuilder.OutputTextOption.Polylines
   printPDFBuilder1.RasterImages = True
   printPDFBuilder1.ImageResolution = PrintPDFBuilder.ImageResolutionOption.Medium
   printPDFBuilder1.Append = True
   printPDFBuilder1.AddWatermark = False
   printPDFBuilder1.Watermark = "" 
   Dim sheets1(0) As NXObject
   Dim drawingSheet1 As Drawings.DrawingSheet = CType(dwg, Drawings.DrawingSheet)
 
   sheets1(0) = drawingSheet1
   printPDFBuilder1.SourceBuilder.SetSheets(sheets1)
 
   printPDFBuilder1.Filename = outputFile
 
   Dim nXObject1 As NXObject
   nXObject1 = printPDFBuilder1.Commit()
 
   printPDFBuilder1.Destroy()
 
End Sub
'**********************************************************
 
End Module

'*************************************************************************************************
'* FORM1
'*************************************************************************************************
Public Class Form1

	Public shts As New ArrayList()
	Public shts2 As New ArrayList()

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

	
	for each shtname as string in shts

		ListBox1.Items.Add(shtname)	
			
	next
	
	
End Sub


Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

	shts = shts2
	
	Me.Close()
	
End Sub


Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click

	_canceled = True
	Me.Close()

End Sub


Private Sub ListBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListBox1.SelectedIndexChanged

	shts2.Clear()
	
    For Each Item As Object In ListBox1.SelectedItems
	
		shts2.add(Item)
		
    Next
	
End Sub


Private _canceled As Boolean = False

Public ReadOnly Property Canceled() As Boolean

	Get
	
		Return _canceled
			
	End Get

End Property


End Class

<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class Form1
Inherits System.Windows.Forms.Form


<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
	
	Try
		
		If disposing AndAlso components IsNot Nothing Then
			
			components.Dispose()
				
		End If
			
	Finally
		
		MyBase.Dispose(disposing)
			
	End Try
		
End Sub


Private components As System.ComponentModel.IContainer

<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()

	Me.Button1 = New System.Windows.Forms.Button()
	Me.Button2 = New System.Windows.Forms.Button()
	Me.ListBox1 = New System.Windows.Forms.ListBox()
	Me.Label1 = New System.Windows.Forms.Label()
	Me.SuspendLayout()
	'
	'Button1
	'
	Me.Button1.Location = New System.Drawing.Point(36, 205)
	Me.Button1.Name = "Button1"
	Me.Button1.Size = New System.Drawing.Size(75, 23)
	Me.Button1.TabIndex = 0
	Me.Button1.Text = "Ok"
	Me.Button1.UseVisualStyleBackColor = True
	'
	'Button2
	'
	Me.Button2.Location = New System.Drawing.Point(149, 205)
	Me.Button2.Name = "Button2"
	Me.Button2.Size = New System.Drawing.Size(75, 23)
	Me.Button2.TabIndex = 1
	Me.Button2.Text = "Cancel"
	Me.Button2.UseVisualStyleBackColor = True
	'
	'ListBox1
	'
	Me.ListBox1.FormattingEnabled = True
	'Me.ListBox1.Items.AddRange(New Object() {"A", "B", "V", "X", "D"})
	Me.ListBox1.Location = New System.Drawing.Point(12, 30)
	Me.ListBox1.Name = "ListBox1"
	'Me.ListBox1.SelectionMode = System.Windows.Forms.SelectionMode.MultiSimple
	Me.ListBox1.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended
	Me.ListBox1.Size = New System.Drawing.Size(240, 160)
	Me.ListBox1.TabIndex = 2
	'
	'Label1
	'
	Me.Label1.AutoSize = True
	Me.Label1.Location = New System.Drawing.Point(12, 10)
	Me.Label1.Name = "Label1"
	Me.Label1.Size = New System.Drawing.Size(72, 13)
	Me.Label1.TabIndex = 4
	Me.Label1.Text = "Choose Sheets to export: "
	'
	'Form1
	'
	Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
	Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
	Me.ClientSize = New System.Drawing.Size(280, 280)
	Me.Controls.Add(Me.Label1)
	Me.Controls.Add(Me.ListBox1)
	Me.Controls.Add(Me.Button2)
	Me.Controls.Add(Me.Button1)
	Me.AcceptButton = Button1	
	Me.CancelButton = Button2 
	Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Sizable
	Me.MaximumSize = New System.Drawing.Size(280, 280)
	Me.MinimumSize = New System.Drawing.Size(280, 280)
	Me.MaximizeBox = False
	Me.MinimizeBox = False
	Me.Name = "Form1"
	Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen
	Me.Text = "Sheets to export:"
	Me.ResumeLayout(False)
	Me.PerformLayout()

End Sub

	Friend WithEvents Button1 As Button
	Friend WithEvents Button2 As Button
	Friend WithEvents ListBox1 As ListBox
	Friend WithEvents Label1 As System.Windows.Forms.Label
	
End Class
 
Code box? Do You mean text box? If so, the best way is design new form by "visual studio", and after that paste your code to journal below like in my example.

With best regards
Michael
 
To format your code on eng-tips, use the [ignore]
Code:
[/ignore] tags around your code. The question mark icon next to the "preview" button will give you all the available tags (you may need to scroll down to see the help box).

www.nxjournaling.com
 
Thank you cowski. That works great, BTW you probably recognize some or most of the code in the journal. thanks again
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor