Export Drawing to .dxf File Using NX Journal

Having engineering drawings in a.dxf file provides a universal exchange format for use in various cad programs. This program is designed to take a drawing and automate it into a .dxf file using NX Journal.

 

Journal Capabilities:

  • Journal automates exporting drawings first to a .cgm files and then to .dxf files.
  • The Journal will automatically iterate through all the sheets in a drawing and convert them to .dxf files.
  • The Journal also has the ability to browse for the output folder for the .dxf file (and its related log file(s)) rather than exporting to same folder as original file.
  • The new files will be output as the form [partname]_[sheet number].dxf; for example if your part is named '12345_dwg.prt' and includes 2 drawing sheets, the output files will be '12345_dwg_1.dxf' and '12345_dwg_2.dxf respectively'.

 

Journal Requirements:

  • Journal assumes you have access to the dxf translator.
  • Native: Journal assumes the new file "blank" template is available, highly customized environments may have removed or renamed this template in which case some modifications to the code will be required.
  • Teamcenter (TC): Create a dedicated dataset and part file for dxf export use, this file will be used to hold the imported cgm data. The dxf information will be exported from this file. Any users who will run this journal must have read/write access to this file. Modify the journal line: Const tempTCDXF = ... to point to this dedicated dataset file.
 
NX Journal: Converting a Drawing into a .dxf File
 

'NXJournaling.com
'NXdwg_to_dxf.vb
'   purpose: this journal automates the tried and true method of exporting a dxf file: export cgm, import cgm, export dxf
'
'   Requirements: This journal will work in Teamcenter (TC) or native environments.
'                   TC:     Create a new dataset and file (in TC) dedicated to cgm import/dxf export, this file will be reused for each dxf export.
'                           All users who will be running this journal must have read/write access to this file.
'                           Modify the line: {Const tempTCDXF = "..."} in Sub Main() to point to this new file
'                   native: No special requirements, but highly customized environments may conflict with some settings in the journal.
'                           In particular, this journal uses the 'blank' template to create a temporary dxf export file;
'                           if this template file has been moved or renamed, errors may occur.
'
'revised on March 7, 2013: updated cgm import to use wrapped UF function rather than .NET version, which is creating a drawing sheet
'		CGM import was flaky under NX8 and NX8.5, works fine with NX7.5 and below
'		reference IR 6848806
'
'   Please send comments, suggestions, and/or bug reports to info@nxjournaling.com
 
Option Strict Off
Imports System
Imports NXOpen
Imports NXOpen.UF
Imports System.IO
Imports System.Windows.Forms
 
Module NXJournal
 
    Dim theSession As Session = Session.GetSession()
    Dim workPart As Part = theSession.Parts.Work
    Dim displayPart As Part = theSession.Parts.Display
    Dim ufs As UFSession = UFSession.GetUFSession()
    Dim dxfSettingsFile As String
    Dim criticalError As Boolean = False
    Dim lw As ListingWindow = theSession.ListingWindow
    Dim lg As LogFile = theSession.LogFile
 
    '**********************************************************
 
    Sub Main()
 
        Dim dwgs As Drawings.DrawingSheetCollection
        dwgs = workPart.DrawingSheets
        Dim sheet As Drawings.DrawingSheet
        Dim i As Integer = 0
        Dim n As Integer = 0
        Dim tempCGMFile As String
        Dim tempNewFile As String
        Dim dxfFile As String
        Dim currentPath As String
        Dim currentFile As String
        Dim originalFile As String
        Dim originalPart As Part
        Dim killList() As String
        Dim partUnits As Integer
        Dim strOutputFolder As String
        Dim rsp
        Dim strRevision As String
        Dim exportFile As String
        lw.Open()
 
        '%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
        'if running Teamcenter, change this to point to your temp import/export dataset file
        Const tempTCDXF = "@DB@123/dwg2dxf@A"
        '%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
        lg.WriteLine("~ Start of drawing to DXF journal ~")
 
        'Get UG install directory using NXOpen API
        Dim DXFDWG_DIR As String = theSession.GetEnvironmentVariableValue("DXFDWG_DIR")
        dxfSettingsFile = IO.Path.Combine(DXFDWG_DIR, "dxfdwg.def")
        lg.WriteLine("looking for dxf settings file: " & dxfSettingsFile)
        'check if the dxfSettingsFile exists
        If Not File.Exists(dxfSettingsFile) Then
            'file does not exist in default directory or user specified directory
            lg.WriteLine("The dxf settings file was not found in the specified location: " & dxfSettingsFile)
            MsgBox("The dxf settings file (dxfdwg.def) was not found." & vbCrLf & _
                "This journal will now exit.", vbOKOnly + vbCritical, "Error")
            Exit Sub
        End If
        lg.WriteLine("DXF settings file found: " & dxfSettingsFile)
 
        'determine if we are running under TC or native
        Dim IsTcEng As Boolean = False
        ufs.UF.IsUgmanagerActive(IsTcEng)
        lg.WriteLine("TC running? " & IsTcEng)
 
        originalPart = displayPart
 
        If IsTcEng Then
            lg.WriteLine("tempTCDXF: " & tempTCDXF)
            currentFile = workPart.GetStringAttribute("DB_PART_NO")
            strRevision = workPart.GetStringAttribute("DB_PART_REV")
            originalFile = "@DB/" & currentFile & "/" & strRevision
 
            currentFile = currentFile.Replace("/", "_")
            currentFile = currentFile & "_" & strRevision
 
        Else 'running in native mode
            currentPath = Path.GetDirectoryName(workPart.FullPath)
            currentFile = Path.GetFileNameWithoutExtension(workPart.FullPath)
            originalFile = currentFile
 
            Try
                strRevision = workPart.GetStringAttribute("REVISION")
                strRevision = Trim(strRevision)
            Catch ex As NXOpen.NXException
                If ex.ErrorCode = 512008 Then
                    lg.WriteLine("Revision attribute not found")
                Else
                    lg.WriteLine("Error: " & ex.ErrorCode & " " & ex.GetType.ToString & " : " & ex.Message)
                End If
                strRevision = ""
            End Try
            If strRevision <> "" Then
                currentFile = currentFile & "_" & strRevision
            End If
        End If
        exportFile = currentFile
 
        lg.WriteLine("workPart.FullPath: " & workPart.FullPath)
        lg.WriteLine("currentFile: " & currentFile)
        lg.WriteLine("strRevision: " & strRevision)
        lg.WriteLine("originalFile: " & originalFile)
        lg.WriteLine("originalPart: " & originalPart.FullPath)
 
        partUnits = workPart.PartUnits
        '0 = inch
        '1 = metric
 
        lg.WriteLine("Part units: " & workPart.PartUnits.ToString)
 
        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 C:\ directory on entry.
            .SelectedPath = "C:\"
            ' Prompt the user with a custom message.
            .Description = "Select the directory to export .dxf file(s)"
            If .ShowDialog = DialogResult.OK Then
                strOutputFolder = .SelectedPath
            Else
                Exit Sub
            End If
        End With
 
        lg.WriteLine("Output folder: " & strOutputFolder)
 
        For Each sheet In dwgs
            i += 1
 
            'in original file, export each drawing sheet as a .cgm file
 
            'prepare for CGM export
            tempCGMFile = Path.Combine(strOutputFolder, currentFile & "_" & i & ".cgm")
            lg.WriteLine("Exporting temp CGM file: " & tempCGMFile)
 
            If File.Exists(tempCGMFile) Then
                lg.WriteLine(tempCGMFile & " already exists, deleting file before export")
                Try
                    File.Delete(tempCGMFile)
                Catch ex As UnauthorizedAccessException
                    lg.WriteLine("Unauthorized access exception, cannot delete file: " & tempCGMFile)
                    lg.WriteLine("Please check permissions on the file and folder(s) and try again")
                    lg.WriteLine("Drawing to DXF journal will now exit")
                    MsgBox("Error: cannot delete file: " & tempCGMFile, MsgBoxStyle.Critical, "Unauthorized access exception")
                    Exit Sub
                Catch ex As ApplicationException
                    lg.WriteLine("Error occurred while attempting to delete file: " & tempCGMFile)
                    lg.WriteLine(ex.GetType.ToString & " : " & ex.Message)
                    MsgBox("Error occurred while attempting to delete file: " & tempCGMFile & vbCrLf & "Drawing to DXF journal will now exit", MsgBoxStyle.Critical, "Error")
                End Try
 
            End If
 
            Try
                ExportCGM(sheet, tempCGMFile, partUnits)
            Catch ex As Exception
                MsgBox("Error occurred in CGM export" & vbCrLf & ex.GetType.ToString & " : " & ex.Message & vbCrLf & "journal exiting", vbCritical + vbOKOnly, "Error")
                lg.WriteLine("Error occurred in CGM export: " & ex.GetType.ToString & " : " & ex.Message)
                Exit Sub
            End Try
 
            'import .cgm file to temporary file in preparation for .dxf export
            If IsTcEng Then
                Dim partLoadStatus1 As PartLoadStatus
 
                Try
                    lg.WriteLine("theSession.Parts.SetNonmasterSeedPartData(" & tempTCDXF & ")")
                    theSession.Parts.SetNonmasterSeedPartData(tempTCDXF)
 
                    Dim basePart1 As BasePart
                    lg.WriteLine("Opening part: " & tempTCDXF)
 
                    basePart1 = theSession.Parts.OpenBaseDisplay(tempTCDXF, partLoadStatus1)
                    lg.WriteLine(tempTCDXF & " load status: " & partLoadStatus1.ToString)
 
                Catch ex As Exception
                    MsgBox("An error occurred while opening the temp dxf import part" & vbCrLf & ex.GetType.ToString & " : " & ex.Message, vbCritical + vbOKOnly, "Error")
                    lg.WriteLine(tempTCDXF & " load status: " & partLoadStatus1.ToString)
                    lg.WriteLine("An error occurred while opening: " & tempTCDXF & " " & ex.GetType.ToString & " : " & ex.Message)
                    Exit Sub
                Finally
                    partLoadStatus1.Dispose()
                End Try
 
            Else
                'create a new file to import the CGM
                tempNewFile = strOutputFolder & "\" & currentFile & "_" & i & ".prt"
 
                lg.WriteLine("tempNewFile: " & tempNewFile)
 
                If File.Exists(tempNewFile) Then
                    lg.WriteLine("tempNewFile already exists: " & tempNewFile)
                    rsp = MsgBox("The file: '" & tempNewFile & "' already exists; overwrite?", vbYesNo + vbQuestion, "File exists")
                    If rsp = vbYes Then
                        lg.WriteLine("user has chosen to overwrite: " & tempNewFile)
                        Try
                            lg.WriteLine("attempting to delete: " & tempNewFile)
                            File.Delete(tempNewFile)
                        Catch ex As UnauthorizedAccessException
                            lg.WriteLine("Unauthorized access exception, check permissions on: " & tempNewFile & " and try again")
                            MsgBox("Unable to delete file: " & tempNewFile & vbCrLf & "Drawing to DXF journal will now exit", MsgBoxStyle.Critical, "Unauthorized Access Exception")
                            Exit Sub
                        Catch ex As ApplicationException
                            lg.WriteLine("An exception occurred while attempting to delete file: " & tempNewFile)
                            lg.WriteLine(ex.GetType.ToString & " : " & ex.Message)
                            lg.WriteLine("Drawing to DXF journal will now exit")
                            MsgBox("An exception occurred while attempting to delete file: " & tempNewFile & vbCrLf & "Drawing to DXF journal will now exit", MsgBoxStyle.Critical, "Error")
                            Exit Sub
                        End Try
 
                    Else
                        lg.WriteLine("User chose not to overwrite the existing file: " & tempNewFile)
                        lg.WriteLine("Drawing to DXF journal will now exit")
                        MsgBox("journal exiting", vbOKOnly, "Export cancelled")
                        Exit Sub
                    End If
                End If
                Try
                    lg.WriteLine("Attempting to create temporary cgm import file: " & tempNewFile)
                    NewFile(tempNewFile, partUnits)
                Catch ex As Exception
                    lg.WriteLine("Error in temporary cgm import file creation: " & tempNewFile)
                    lg.WriteLine(ex.GetType.ToString & " : " & ex.Message)
                    lg.WriteLine("Drawing to DXF journal will now exit")
                    MsgBox("Error occurred in new file creation" & vbCrLf & ex.Message & vbCrLf & "journal exiting", vbCritical + vbOKOnly, "Error")
                    Exit Sub
                End Try
 
            End If
 
            'now in temporary dxf import file
 
            workPart = theSession.Parts.Work
            displayPart = theSession.Parts.Display
            lg.WriteLine("work part: " & theSession.Parts.Work.FullPath)
 
            'turn off the display of the drawing sheet, some users report errors if the sheet is displayed when the view is replaced
            '1 = Modeling view
            '2 = Drawing view
            ufs.Draw.SetDisplayState(1)
            'replace view to "TOP" before importing the CGM
            'this gives better results with fixed view drawing viewers such as edrawings
            Dim layout1 As Layout = CType(theSession.Parts.Work.Layouts.Current, Layout)
            lg.WriteLine("current layout: " & layout1.Name)
            Dim modelingView1 As ModelingView = CType(theSession.Parts.Work.ModelingViews.FindObject("TOP"), ModelingView)
            lg.WriteLine("modelingView1: " & modelingView1.Name)
            layout1.ReplaceView(theSession.Parts.Work.ModelingViews.WorkView, modelingView1, True)
 
            'Call the ImportCGM subroutine
            workPart.Layers.WorkLayer = 1
            lg.WriteLine("Calling the ImportCGM(" & tempCGMFile & ")")
            ImportCGM(tempCGMFile)
            lg.WriteLine("Saving temporary cgm import file: " & tempCGMFile)
            workPart.Save(BasePart.SaveComponents.False, BasePart.CloseAfterSave.False)
 
            If IsTcEng Then
                ReDim Preserve killList(i)
                killList(i) = tempCGMFile
                lg.WriteLine("Adding file to kill list: " & tempCGMFile)
            Else
                'add the temp files to the kill list
                ReDim Preserve killList(i * 2)
                killList(i * 2 - 1) = tempCGMFile
                killList(i * 2) = tempNewFile
                lg.WriteLine("Adding file to kill list: " & tempCGMFile)
                lg.WriteLine("Adding file to kill list: " & tempNewFile)
 
            End If
 
            dxfFile = Path.Combine(strOutputFolder, currentFile & "_" & i & ".dxf")
            lg.WriteLine("DXF file: " & dxfFile)
 
            If File.Exists(dxfFile) Then
                rsp = MsgBox("The file: '" & dxfFile & "' already exists; overwrite?", vbYesNo + vbQuestion, "File exists")
                lg.WriteLine("The specified DXF output file already exists")
                If rsp = vbYes Then
                    lg.WriteLine("user has chosen to overwrite the existing DXF file")
                    Try
                        File.Delete(dxfFile)
                    Catch ex As UnauthorizedAccessException
                        lg.WriteLine("Unauthorized access exception, cannot delete file: " & dxfFile)
                        lg.WriteLine("Please check permissions on the file and folder(s) and try again")
                        lg.WriteLine("Drawing to DXF journal will now exit")
                        MsgBox("Error: cannot delete file: " & dxfFile & vbCrLf & "Please check permissions on the file and try again", MsgBoxStyle.Critical, "Unauthorized access exception")
                        Exit Sub
                    Catch ex As ApplicationException
                        lg.WriteLine("Error occurred while attempting to delete file: " & dxfFile)
                        lg.WriteLine(ex.GetType.ToString & " : " & ex.Message)
                        MsgBox("Error occurred while attempting to delete file: " & dxfFile & vbCrLf & "Drawing to DXF journal will now exit", MsgBoxStyle.Critical, "Error")
                    End Try
                Else
                    lg.WriteLine("user chose not to overwrite existing DXF file")
                    lg.WriteLine("Drawing to DXF journal will now exit")
                    MsgBox("Journal will now exit", MsgBoxStyle.Exclamation, "Export cancelled")
                    Exit Sub
                End If
            End If
 
            Try
                'Call ExportDXF subroutine
                lg.WriteLine("Calling export DXF routine")
                If IsTcEng Then
                    lg.WriteLine("ExportDXF(" & tempTCDXF & ", " & dxfFile & ")")
                    ExportDXF(tempTCDXF, dxfFile)
                Else
                    lg.WriteLine("ExportDXF(" & tempNewFile & ", " & dxfFile & ")")
                    ExportDXF(tempNewFile, dxfFile)
                End If
 
                lg.WriteLine("Waiting on creation of DXF file...")
                While Not File.Exists(dxfFile)
                    Application.DoEvents()
                End While
                lg.WriteLine("DXF file created: " & dxfFile)
 
            Catch ex As Exception
                MsgBox("Error occurred in DXF export" & vbCrLf & ex.Message & vbCrLf & "journal exiting", vbCritical + vbOKOnly, "Error")
                lg.WriteLine("Error in DXF export: " & ex.GetType.ToString & " : " & ex.Message)
                lg.WriteLine("Drawing to DXF journal will now exit")
                Exit Sub
            Finally
                lg.WriteLine("deleting temporary objects from: " & workPart.FullPath)
                Dim markId1 As Session.UndoMarkId
                markId1 = theSession.SetUndoMark(Session.MarkVisibility.Invisible, "Start")
                'delete all imported objects (all objects on layer 1)
                Dim importEntities() As NXObject
                importEntities = workPart.Layers.GetAllObjectsOnLayer(1)
                Dim nErrs1 As Integer
                nErrs1 = theSession.UpdateManager.AddToDeleteList(importEntities)
                Dim nErrs2 As Integer
                nErrs2 = theSession.UpdateManager.DoUpdate(markId1)
                'close the temporary DXF file
                lg.WriteLine("Closing the temporary dxf file")
                workPart.Save(BasePart.SaveComponents.False, BasePart.CloseAfterSave.True)
            End Try
 
            'make the original part the displayed part
            Dim partLoadStatus2 As PartLoadStatus
            Dim status1 As PartCollection.SdpsStatus
            status1 = theSession.Parts.SetDisplay(originalPart, False, True, partLoadStatus2)
            lg.WriteLine("make original part the displayed part")
            lg.WriteLine("status1: " & status1.ToString)
            workPart = theSession.Parts.Work
            displayPart = theSession.Parts.Display
            partLoadStatus2.Dispose()
            lg.WriteLine("current display part: " & displayPart.FullPath)
 
        Next
 
        If i = 0 Then
            lg.WriteLine("This part has no drawing sheets to export")
            MsgBox("This part has no drawing sheets to export", MsgBoxStyle.Exclamation, "Huh?")
        Else
            'cleanup temp files
            lg.WriteLine("Cleaning up temporary files")
            Dim j As Integer
            j = 1
            If IsTcEng Then
                For j = 1 To i
                    File.Delete(killList(j))
                    lg.WriteLine("File deleted: " & killList(j))
                Next
            Else
                For j = 1 To i * 2
                    File.Delete(killList(j))
                    lg.WriteLine("File deleted: " & killList(j))
                Next
 
            End If
            MsgBox("Exported: " & i & " sheets as dxf files", vbOKOnly + vbInformation, "Success!")
            lg.WriteLine("Exported: " & i & " sheets as dxf files")
        End If
 
        lg.WriteLine("~ End of drawing to DXF export journal ~")
 
        lw.Close()
 
    End Sub
 
    '**********************************************************
    Sub ExportCGM(ByVal dwg As Drawings.DrawingSheet, ByVal outputFile As String, ByVal units As Integer)
 
        Dim filenames1(0) As String
        Dim objCGM As CGMBuilder
        objCGM = theSession.Parts.Work.PlotManager.CreateCgmBuilder()
 
        objCGM.Action = CGMBuilder.ActionOption.FileBrowser
 
        objCGM.OutputText = CGMBuilder.OutputTextOption.Polylines
        If units = 0 Then
            objCGM.Units = CGMBuilder.UnitsOption.English
        Else
            objCGM.Units = CGMBuilder.UnitsOption.Metric
        End If
        objCGM.XDimension = dwg.Height
        objCGM.YDimension = dwg.Length
        objCGM.VdcCoordinates = CGMBuilder.Vdc.Real
        objCGM.RasterImages = True
 
        Dim sheets1(0) As NXObject
        sheets1(0) = dwg
        objCGM.SourceBuilder.SetSheets(sheets1)
 
        filenames1(0) = outputFile
        objCGM.SetFilenames(filenames1)
 
        Try
            Dim nXObject1 As NXObject
            nXObject1 = objCGM.Commit()
        Catch ex As Exception
            lg.WriteLine("Error in ExportCGM subroutine: " & ex.GetType.ToString & " : " & ex.Message)
        Finally
            objCGM.Destroy()
        End Try
 
    End Sub
 
    '**********************************************************
    Sub ExportDXF(ByVal inputFile As String, ByVal outputFile As String)
 
        Dim dxfdwgCreator1 As DxfdwgCreator
        dxfdwgCreator1 = theSession.DexManager.CreateDxfdwgCreator()
        dxfdwgCreator1.SettingsFile = dxfSettingsFile
        dxfdwgCreator1.InputFile = inputFile
        dxfdwgCreator1.OutputFile = outputFile
        dxfdwgCreator1.FileSaveFlag = False
        dxfdwgCreator1.ObjectTypes.Curves = True
        dxfdwgCreator1.ObjectTypes.Annotations = True
        dxfdwgCreator1.ObjectTypes.Structures = True
        'next line controls dxf file version
        dxfdwgCreator1.AutoCADRevision = DxfdwgCreator.AutoCADRevisionOptions.R2004
        dxfdwgCreator1.FlattenAssembly = False
        dxfdwgCreator1.ViewEditMode = True
        dxfdwgCreator1.LayerMask = "1-256"
        dxfdwgCreator1.DrawingList = ""
        dxfdwgCreator1.ViewList = "TOP,FRONT,RIGHT,BACK,BOTTOM,LEFT,TFR-ISO,TFR-TRI"
        'dxfdwgCreator1.SetUserCredential("", "", "")
 
        Try
            Dim nXObject1 As NXObject
            nXObject1 = dxfdwgCreator1.Commit()
        Catch ex As Exception
            MsgBox("Error in DXF export subroutine" & vbCrLf & ex.GetType.ToString & " : " & ex.Message, MsgBoxStyle.Critical + MsgBoxStyle.OkOnly, "DXF export error")
            lg.WriteLine("Error in ExportDXF subroutine: " & ex.GetType.ToString & " : " & ex.Message)
        Finally
            dxfdwgCreator1.Destroy()
        End Try
 
    End Sub
 
    '**********************************************************
    Sub NewFile(ByVal fullpath As String, ByVal units As Integer)
 
        Dim fileNew1 As FileNew
        fileNew1 = theSession.Parts.FileNew()
 
        'fileNew1.TemplateFileName = "Blank"
        fileNew1.Application = FileNewApplication.Gateway
        If units = 0 Then
            fileNew1.Units = Part.Units.Inches
        Else
            fileNew1.Units = Part.Units.Millimeters
        End If
        fileNew1.NewFileName = fullpath
        'fileNew1.MasterFileName = ""
        fileNew1.UseBlankTemplate = True
        fileNew1.MakeDisplayedPart = True
 
        Try
            Dim nXObject2 As NXObject
            nXObject2 = fileNew1.Commit()
        Catch ex As Exception
            lg.WriteLine("Error in NewFile subroutine: " & ex.GetType.ToString & " : " & ex.Message)
        Finally
            workPart = theSession.Parts.Work
            displayPart = theSession.Parts.Display
            fileNew1.Destroy()
        End Try
 
    End Sub
 
    '**********************************************************
    Sub ImportCGM(ByVal cgmFile As String)
 
'  The .NET function for cgm import changed in NX8
'  reference IR 6848806
'	
'        Dim importer1 As Importer
'        importer1 = theSession.Parts.Work.ImportManager.CreateCgmImporter()
'        importer1.FileName = cgmFile
'        Try
'            Dim nXObject3 As NXObject
'            nXObject3 = importer1.Commit()
'        Catch ex As Exception
'            lg.WriteLine("Error in ImportCGM subroutine: " & ex.GetType.ToString & ex.Message)
'        Finally
'            importer1.Destroy()
'        End Try
 
		Dim import_options As UFCgm.ImportOptions
		ufs.Cgm.InitImportOptions(import_options)
		import_options.allow_new_drawing = false
		Try
			ufs.Cgm.ImportCgm(cgmFile, import_options )
		Catch ex As Exception
			lg.WriteLine("Error in ImportCGM subroutine: " & ex.GetType.ToString & ex.Message)
		End Try
 
    End Sub
 
    '**********************************************************
    Public Function GetUnloadOption(ByVal dummy As String) As Integer
 
        'Unloads the image when the NX session terminates
        GetUnloadOption = NXOpen.Session.LibraryUnloadOption.AtTermination
 
    End Function
 
End Module

Comments

Hi,
is it possible to export only a one sheet according to the sheet name?

Yes
You will have to modify the code. Instead of iterating through the sheet collection and passing each on to the export routines, iterate until you find the sheet with the name of interest and only pass that one to the export routines.

Hello
Is it possible to create a Loop to run the journal through all drawings on a folder.
Thanks,
 
 

I am trying to use Drawing to DXF and it is locking up after the cgm is imported into the dwg2dxf part file. I see in the code lines of text being written to a log file. I can't seem to find where the file is located to view it. Is it a text file?

Thanks,
Seal Artist

I forgot to add. I only have the locking up problem with Team Center. It works fine with Native.

Thanks,
Seal Artist

In the NX menu, go to Help -> Log file.

The journal doesn't work with my system. It makes the cgm, then it freeze.
I work with an third party PLM System. So it's not possible to make the new Part this way.
How can I write the path of a template part in the journal?

I would suggest that you record a journal while creating a new part in your system. If the returned code successfully creates a new part on replay, you can replace the "new part" code in the DXF journal with your own.