Hallo,
im Zuge einer Studienarbeit für die Uni muss ich mithilfe von NX-Journal einen Code schreiben, mit dem ich sowohl eine Operation durchführen als auch diese abspeichern und anschließend als STL-Datei exportieren kann. Nun habe ich sowohl den Code für die Operation als auch für das exportieren als STL, jedoch haben meine Versuche einen funktionierenden Code aus den beiden zu machen nicht funktioniert und eine gewisse Menge an Verzweiflung hinterlassen. Daher wollte ich fragen ob mir jemand helfen kann wie ich es schaffe die beiden zu kombinieren.
Die beiden Codes sind wie folgt:
Code 1:
Option Strict Off
Imports System
Imports System.Collections.Generic
Imports NXOpen
Imports NXOpen.UF
Module NXJournal
Sub Main (ByVal args() As String)
Dim theSession As Session = Session.GetSession()
Dim workPart As NXOpen.Part = theSession.Parts.Work
Dim theUfSession As UFSession = UFSession.GetUFSession()
Dim lw As ListingWindow = theSession.ListingWindow
Dim displayPart As NXOpen.Part = theSession.Parts.Display
Dim markId1 As NXOpen.Session.UndoMarkId
markId1 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Visible, "Unsuppress Feature")
Dim features1(0) As NXOpen.Features.Feature
Dim extrude1 As NXOpen.Features.Extrude = CType(workPart.Features.FindObject("EXTRUDE(43)"), NXOpen.Features.Extrude)
features1(0) = extrude1
Dim errorFeatures1() As NXOpen.Features.Feature
errorFeatures1 = workPart.Features.UnsuppressFeatures(features1)
' ----------------------------------------------
' Menü: Datei->Speichern unter...
' ----------------------------------------------
Dim partSaveStatus1 As NXOpen.PartSaveStatus
partSaveStatus1 = workPart.SaveAs("U:\Studienarbeit\Beckers\Test\Keil\Oberteil_Keil")
partSaveStatus1.Dispose()
' ----------------------------------------------
' Menü: Werkzeuge->Journal->Stopp
' ----------------------------------------------
End Sub
End Module
Code 2:
Option Strict Off
Imports System
Imports System.Collections.Generic
Imports NXOpen
Imports NXOpen.UF
Module Module1
Dim theSession As Session = Session.GetSession()
Dim theUfSession As UFSession = UFSession.GetUFSession()
Dim lw As ListingWindow = theSession.ListingWindow
Sub Main()
If IsNothing(theSession.Parts.BaseWork) Then
'active part required
Return
End If
Dim workPart As Part = theSession.Parts.Work
lw.Open()
Const undoMarkName As String = "export solids to STL"
Dim markId1 As Session.UndoMarkId
markId1 = theSession.SetUndoMark(Session.MarkVisibility.Invisible, undoMarkName)
Dim theSolids As New List(Of Body)
'collect the solid bodies in the work part
For Each temp As Body In workPart.Bodies
If temp.IsSolidBody Then
theSolids.Add(temp)
End If
Next
Try
ExportSTL(workPart.FullPath, theSolids, 0.003, 0.003)
Catch ex As NXException
lw.WriteLine("NX Error: " & ex.Message)
Catch ex As Exception
lw.WriteLine("Error: " & ex.Message)
End Try
lw.WriteLine("NX Export STl ready")
lw.Close()
End Sub
Sub ExportSTL(ByVal FileName As String, ByVal theObjects As List(Of Body), ByVal triangleTolerance As Double, ByVal adjacencyTolerance As Double)
Dim NumErrors As Integer
Dim FileHandle As IntPtr
Dim InfoError() As UFStd.StlError
Dim Header, FileBaseName As String
Dim numNegated As Integer
'Dim Negated() As Tag
'Negated = Nothing
numNegated = 0
InfoError = Nothing
For Each temp As Body In theObjects
If temp.IsSolidBody Then
numNegated = numNegated + 1
FileName = IO.Path.ChangeExtension(FileName, numNegated.ToString & ".stl")
FileBaseName = IO.Path.GetFileName(FileName)
Header = "Header: " & FileBaseName
theUfSession.Std.OpenBinaryStlFile(FileName, False, Header, FileHandle)
theUfSession.Ui.SetPrompt("Creating file ... " & FileBaseName & " ...")
lw.WriteLine("Creating file ... " & FileBaseName & " ...")
theUfSession.Std.PutSolidInStlFile(FileHandle, Tag.Null, temp.Tag, 0.0, 0.0, triangleTolerance, NumErrors, InfoError)
lw.WriteLine("Creating file ... " & FileName & " ..." & numNegated.ToString)
theUfSession.Std.CloseStlFile(FileHandle)
End If
Next
'theUfSession.Std.CloseStlFile(FileHandle)
theUfSession.Ui.SetStatus("File ... " & FileBaseName & " generated ...")
lw.WriteLine("File ... " & FileBaseName & " generated ...")
End Sub
Sub ExportSTL1(ByVal FileName As String, ByVal theObjects As List(Of Body), ByVal triangleTolerance As Double, ByVal adjacencyTolerance As Double)
Dim NumErrors As Integer
Dim FileHandle As IntPtr
Dim InfoError() As UFStd.StlError
Dim Header, FileBaseName As String
Dim numNegated As Integer
'Dim Negated() As Tag
'Negated = Nothing
numNegated = 0
InfoError = Nothing
FileName = IO.Path.ChangeExtension(FileName, ".stl")
FileBaseName = IO.Path.GetFileName(FileName)
Header = "Header: " & FileBaseName
theUfSession.Std.OpenBinaryStlFile(FileName, False, Header, FileHandle)
theUfSession.Ui.SetPrompt("Creating file ... " & FileBaseName & " ...")
lw.WriteLine("Creating file ... " & FileBaseName & " ...")
For Each temp As Body In theObjects
If temp.IsSolidBody Then
numNegated = numNegated + 1
theUfSession.Std.PutSolidInStlFile(FileHandle, Tag.Null, temp.Tag, 0.0, 0.0, triangleTolerance, NumErrors, InfoError)
lw.WriteLine("Creating file ... " & FileName & " ..." & numNegated.ToString)
End If
Next
theUfSession.Std.CloseStlFile(FileHandle)
theUfSession.Ui.SetStatus("File ... " & FileBaseName & " generated ...")
lw.WriteLine("File ... " & FileBaseName & " generated ...")
End Sub
Public Function GetUnloadOption(ByVal dummy As String) As Integer
'Unloads the image immediately after execution within NX
GetUnloadOption = NXOpen.Session.LibraryUnloadOption.Immediately
End Function
End Module
Würde mich freuen wenn mir jemand dabei helfen kann aus den beiden Codes einen zu machen.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP