Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  NX Programmierung
  Erstellen eines neuen Parts mit Snap und NXOpen

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
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


Sehen Sie sich das Profil von buecherm83 an!   Senden Sie eine Private Message an buecherm83  Schreiben Sie einen Gästebucheintrag für buecherm83

Beiträge: 78
Registriert: 20.09.2011

erstellt am: 23. Sep. 2016 10:58    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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.Create

Public 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


Sehen Sie sich das Profil von Walter Hogger an!   Senden Sie eine Private Message an Walter Hogger  Schreiben Sie einen Gästebucheintrag für Walter Hogger

Beiträge: 3886
Registriert: 06.10.2000

UG V2 bis UG V18
NX1 bis NX2206 ("NX20")

erstellt am: 23. Sep. 2016 12:10    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für buecherm83 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von mseufert an!   Senden Sie eine Private Message an mseufert  Schreiben Sie einen Gästebucheintrag für mseufert

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für buecherm83 10 Unities + Antwort hilfreich

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 ansehenProjektmanagement
Merlin2001
Mitglied
Sr. Software Engineer


Sehen Sie sich das Profil von Merlin2001 an!   Senden Sie eine Private Message an Merlin2001  Schreiben Sie einen Gästebucheintrag für Merlin2001

Beiträge: 24
Registriert: 13.05.2011

erstellt am: 27. Sep. 2016 11:56    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für buecherm83 10 Unities + Antwort hilfreich

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 >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz