| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für NX |
Autor
|
Thema: Erstellen eines neuen Parts mit Snap und NXOpen (2096 mal gelesen)
|
buecherm83 Mitglied Ingenieur IT Application Software
Beiträge: 78 Registriert: 20.09.2011
|
erstellt am: 23. Sep. 2016 10:58 <-- editieren / zitieren --> Unities abgeben:
Hallo, das programmieren in NX ist für mich ziemlich neu. Bisher habe ich nur in CATIA Makros erstellt. Jetzt wollen wir unsere CATIA Makros in NX nachbauen. Nun möchte ich in NX unsere CATIA Assembly Struktur nachbauen. Da NX neu für mich ist habe ich in der Hilfe von SNAP ein Beispiel gefunden, wie man ein Part neu erzeugen kann. Code: Imports Snap, Snap.CreatePublic Class MyProgram Public Shared Sub Main() ' Create a part, and make it the Work Part Dim dashFileName As String = "dash.prt" Dim dashPart As NX.Part = Part(dashFileName, NX.Part.Templates.Modeling, NX.Part.Units.MilliMeters) Globals.WorkPart = dashPart End Sub End Class
Hier scheitere ich an der Stelle:
Code: Dim dashPart As NX.Part = Part(dashFileName, NX.Part.Templates.Modeling, NX.Part.Units.MilliMeters)
Ich bekomme die folgende Fehlermeldung: An exception of type 'NXOpen.NXException' occurred in NXOpen.dll but was not handled in user code. The selected template doesn't exist. Diese Datei liegt aber im entsprechenden Installationsverzeichnis. Ebenfalls habe ich alle benötigten .dlls als Referenz eingebunden. Die Pfade und Templatenamen sind auch definiert und werden richtig gefunden. Kann mir hier jemand weiterhelfen was ich noch prüfen könnte? Vielen Dank! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Walter Hogger Moderator Maschinenbauingenieur
Beiträge: 3886 Registriert: 06.10.2000 UG V2 bis UG V18 NX1 bis NX2206 ("NX20")
|
erstellt am: 23. Sep. 2016 12:10 <-- editieren / zitieren --> Unities abgeben: Nur für buecherm83
Hallo buecherm83, wie kommst du auf die Wahl von SNAP als Programmiersprache? SNAP ist zwar einfach, kostet aber Lizenzgebühren und ist eingeschränkt. Da gibt es günstigere Einstiegsmöglichkeiten in die NX-Programmierung. Die NX-Onlinehilfe bietet dazu mittlerweile umfangreiche Informationen dazu. Gruß ------------------ Walter Hogger Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mseufert Moderator Freiberuflicher CAD/CAM Ingenieur
Beiträge: 2624 Registriert: 18.10.2005 HP Z420 WIN7 64 Win 10 UG NX6-1980 3D Printer Prusa MK2 S
|
erstellt am: 23. Sep. 2016 14:32 <-- editieren / zitieren --> Unities abgeben: Nur für buecherm83
Hallo buecherm83, mach' dich doch erst mal mit den Möglichkeiten von NXOpen vertraut, statt zu Beginn auf ein, wie Walter schon geschrieben hat, fragwürdiges Pferd zu setzen. Mein Tip, je nach verfügbaren Lizenzen heißt entweder Journal (Lizenzfrei) oder mit Entwicklerlizenz NXOpen .NET, beides in VB oder C# machbar. Das dürfte in der Praxis am häufigsten im Einsatz sein, damit steigt die Chance auf Antworten. SNAP hat m.W. kaum jemand im Einsatz, da kann also auch kaum jemand Tipps abgeben. Noch eine Empfehlung zum "Nachbauen": Versuch' nicht, alles exakt so zu machen wie in CATIA. Es gibt in NX andere Wege und andere Möglichkeiten. Im Zweifelsfall bildet dein Programm sonst nur die Schnittmenge zwischen CATIA Makro und NXOpen ab, ohne den ganzen Funktionsumfang zu nutzen. Gruß, Michael ------------------ Ein Mensch wird laut, wenn er was will; wenn er's erst hat, dann wird er still; Das "Danke" ist, nach alter Sitte, Weit seltner als das "Bitte, Bitte". Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Projektingenieur ? Wasserwirtschaft (m/w/d) | Im Auftrag der Zukunft ? Seit über 40 Jahren arbeiten wir als Experten für Wasserwirtschaft und Umwelttechnik. Unsere Kompetenzen konnten wir in mehr als 1000 erfolgreich abgeschlossenen Projekten stetig erweitern. Neben unserem wissenschaftlichen Hintergrund schätzen unsere Auftraggeber vor allem auch unsere tiefgreifenden praktischen Erfahrungen. Denn Wirtschaftlichkeit und Termintreue sind für unsere Kunden und uns ebenso wichtige Faktoren wie Innovation und Technik.... | Anzeige ansehen | Projektmanagement |
|
Merlin2001 Mitglied Sr. Software Engineer
Beiträge: 24 Registriert: 13.05.2011
|
erstellt am: 27. Sep. 2016 11:56 <-- editieren / zitieren --> Unities abgeben: Nur für buecherm83
Hallo buecherm83, vielleicht kannst du herausfinden, was genau das Problem ist (es könnte bspw. wie oben von den anderen erwähnt die fehlende Snap-Lizenz sein), indem du versuchst, den auftretenden Fehler aufzufangen und dir mehr Infos darüber anzeigen zu lassen. Das kannst du beispielsweise machen, indem du die Exception mit einem Try-Catch-Block auffängst: Code:
Try ' Create a part, and make it the Work Part Dim dashFileName As String = "dash.prt" Dim dashPart As NX.Part = Part(dashFileName, NX.Part.Templates.Modeling, NX.Part.Units.MilliMeters) Globals.WorkPart = dashPart Catch ex As Exception MsgBox(ex.Message & vbNewLine & ex.StackTrace) End Try
Ansonsten kenne ich mich mit Snap leider wie meine Vorredner nicht besonders gut aus, wobei der SNAP Getting Started Guide auch für NXOpen-Programmierer sehr hilfreich sein kann, da er ein paar verwirrende Konzepte insbesondere bei Assemblys anschaulich erklärt. Du findest den Guide hier: NX10: https://docs.plm.automation.siemens.com/data_services/resources/nx/10/nx_api/en_US/graphics/fileLibrary/nx/snap/SNAP_Getting_Started_V10.pdf NX11: https://docs.plm.automation.siemens.com/data_services/resources/nx/11/nx_api/common/en_US/graphics/fileLibrary/nx/snap/SNAP_Getting_Started_V11.pdf Die allgemeine Hilfe zu den Programmierschnittstellen findest du hier: NX10: https://docs.plm.automation.siemens.com/tdoc/nx/10/nx_api/#uid:index NX11: https://docs.plm.automation.siemens.com/tdoc/nx/11/nx_api/#uid:index In NXOpen würde ich ein neues Assembly-Part wie folgt erzeugen:
Code:
Public Class MyProgram Public Shared Sub Main() Try ' Create a part, and make it the Work Part Dim dashFileName As String = "C:\Temp\dash.prt" ' Directory C:\Temp\ must exist! Dim dashPart As NXOpen.Part dashPart = CreateNewAssemblyPart(dashFileName) NXOpen.Session.GetSession().Parts.SetWork(dashPart) Catch ex As Exception MsgBox(ex.Message & vbNewLine & ex.StackTrace) End Try End Sub
''' <summary> ''' Creates a new (empty) assembly part with the given file filePath ''' </summary> ''' <param name="assemblyFileFullPath">The absolute filePath to the file that should be created</param> ''' <returns>A reference to the newly created assembly part</returns> Private Shared Function CreateNewAssemblyPart(ByVal assemblyFileFullPath As String) As NXOpen.Part ' This opens NX' integrated listing window which is nice for debugging :) Dim lw As NXOpen.ListingWindow = NXOpen.Session.GetSession().ListingWindow lw.Open() Dim nxAssemblyPart As NXOpen.Part = Nothing Dim newFile As NXOpen.FileNew Try lw.WriteLine("Creating new assembly file") newFile = NXOpen.Session.GetSession().Parts.FileNew newFile.TemplateFileName = "assembly-mm-template.prt" newFile.ApplicationName = "AssemblyTemplate" newFile.Units = NXOpen.Part.Units.Millimeters newFile.TemplateType = NXOpen.FileNewTemplateType.Item newFile.NewFileName = assemblyFileFullPath newFile.MasterFileName = "" newFile.UseBlankTemplate = False newFile.MakeDisplayedPart = False Catch ex As Exception lw.WriteLine("Create new file failed: " & ex.ToString()) lw.WriteLine(ex.StackTrace) Return Nothing ' Could not create part End Try Try lw.WriteLine("Commiting new assembly file") nxAssemblyPart = CType(newFile.Commit, NXOpen.Part) Catch ex As Exception lw.WriteLine("Commit new file failed: " & ex.ToString()) lw.WriteLine(ex.StackTrace) Return Nothing ' Could not create part Finally newFile.Destroy() End Try Try lw.WriteLine("Saving new assembly file") nxAssemblyPart.Save(NXOpen.BasePart.SaveComponents.False, NXOpen.BasePart.CloseAfterSave.False) Catch ex As Exception lw.WriteLine("Saving new file failed: " & ex.ToString()) lw.WriteLine(ex.StackTrace) Return Nothing ' Could not create part End Try Return nxAssemblyPart ' Part successfully created End Function End Class
Viel Erfolg! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|