Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  NX Programmierung
  UDF Namenänderung

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:  UDF Namenänderung (11897 mal gelesen)
LauraBehrens
Mitglied
Student

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

Beiträge: 4
Registriert: 25.03.2016

Visual Studio 2015, NX 9.0

erstellt am: 25. Mrz. 2016 15:27    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 zusammen,

ich versuche seit einer ganzen Weile bestimmte Parameter eines UDFs mit Hilfe der NX Open Programmierung aus den Expressions auszulesen. Mit folgendem Code klappt das Ganze, allerdings leider nur bedingt:

theSession.Preferences.Modeling.UpdatePending = False
        Dim markId1 As Session.UndoMarkId
        markId1 = theSession.SetUndoMark(Session.MarkVisibility.Visible, "Expression")

        Dim expression1 As Expression = CType(workPart.Expressions.FindObject("Width_55"), Expression)
        Dim expression2 As Expression = CType(workPart.Expressions.FindObject("LengthClip_55"), Expression)

Mein Problem ist, dass die Objekte nach jedem Öffnen von NX wieder eine neue Bezeichnung haben (z.B. statt Width_55, Width_67). Hat einer von euch eine Idee, wie ich trotzdem die entsprechenden UDF Parameter auslesen kann, ohne nach jedem Öffnen den Programmcode zu ändern?


Tausend Dank und viele Grüße,
Laura

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: 29. Mrz. 2016 18:18    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 LauraBehrens 10 Unities + Antwort hilfreich

Hallo Laura,

Du könntest ff. versuchen:

    Die Expressions z.B. über einen eindeutigen Namen, einen Kommentar etc. identifizieren
    Die Expressions des UDF's abfragen. Da können allerdings auch mehrere zur Auswahl stehen

Gruß, Michael

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

LauraBehrens
Mitglied
Student

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

Beiträge: 4
Registriert: 25.03.2016

Visual Studio 2015, NX 9.0

erstellt am: 30. Mrz. 2016 15:18    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

Hi Michael,

tausend Dank für deine Antwort. Kannst du mir sagen, wie ich einer Expression einen eindeutigen Namen zuordnen kann, bzw. wie ich die Expressions abfragen kann (mit Namen)? Prinzipiell ist der Name ja immer gleich (abgesehen von der Zahl am Ende, die automatisch geändert wird ...  )


Viele Grüße,
Laura

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: 31. Mrz. 2016 08:51    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 LauraBehrens 10 Unities + Antwort hilfreich

Hallo Laura,

die Methoden hierzu heißen Setname bzw. AskUDFDefinition. Falls das nicht hilft ist meine Empfehlung: Lies vorab zumindest die einleitenden Kapitel im NXOpen Programmers Guide und schau' die dort genannten Beispiele an.

Gruß, Michael

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

LauraBehrens
Mitglied
Student

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

Beiträge: 4
Registriert: 25.03.2016

Visual Studio 2015, NX 9.0

erstellt am: 04. Apr. 2016 14: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

Hallo Michael,

vielen Dank für die Hinweise. Ich habe bis jetzt allerdings nichts wirklich Brauchbares zu askUDFDefinition gefunden ... hast du hierzu evtl. ein Beispiel in vb.net?

Tausend Dank! 

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: 05. Apr. 2016 09:13    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 LauraBehrens 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von LauraBehrens:
Ich habe bis jetzt allerdings nichts wirklich Brauchbares zu askUDFDefinition gefunden

Was hast Du denn bisher gefunden ? Die, in der Doku genannten Beispiele helfen nicht ? Lass' mal sehen, vielleicht lässt sich ja da etwas Brauchbares draus machen    ?

p.s.: Daß NX automatisch die Bezeichnung von Ausdrücken ändert, scheint mir äußerst suspekt. Hast Du das vorab verifiziert ?

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

LauraBehrens
Mitglied
Student

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

Beiträge: 4
Registriert: 25.03.2016

Visual Studio 2015, NX 9.0

erstellt am: 05. Apr. 2016 10:06    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

Guten Morgen Michael,

zur Anwendung von askUDFDefinition habe ich in der API Reference den Aufbau des Befehls gefunden... da ich mich mit der Programmierung noch nicht sehr gut auskenne, bekomme ich es leider nicht hin, die Funktion ohne Beispiele zu integrieren 
Im Internet habe ich ein Beispiel in C# gefunden, welches mir aber auch nicht so recht weiter hilft ...
Hier ist der Link dazu:

http://cluster1.cafe.daum.net/_c21_/bbs_search_read?grpid=1DKjB&fldid=7OdW&datanum=8&openArticle=true&docid=1DKjB7OdW820080303164850


Tausend Dank und beste Grüße,
Laura

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP



Projektingenieur Brandschutz (m/w/d)

Werde Teil der Erfolgsgeschichte der James Hardie Europe GmbH. Your Partner in Growth.

Wir sind der Weltmarktführer für Gipsfaser- und Faserzementlösungen mit den Marken fermacell® und James Hardie. Die Marke Aestuver® steht für Lösungen im Bereich des baulichen Brandschutzes sowie für Brandschutzlösungen im Bereich der unterirdischen Verkehrssysteme. Aestuver® ...

Anzeige ansehenProjektmanagement
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: 05. Apr. 2016 13:54    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 LauraBehrens 10 Unities + Antwort hilfreich

Hallo Laura,

das sieht doch schon mal ganz gut aus... muss "nur" noch von C# nach VB übersetzt werden.  

Zitat:
da ich mich mit der Programmierung noch nicht sehr gut auskenne ...

Dann versuch' einfach mal zu verstehen, was das Programm macht. Es beginnt bei public static int Main(string[] args):


    Instanz anlegen und die grundlegenden Variablen (TheSession ...) initialisieren
    Part öffnen
    Alle Features suchen mit CycleObjsInPart
    Featuretyp prüfen mit AskFeatType.
    ggfs. auswerten mit AskUdfDefinition.
    Ergebnisse ausgeben über lw.WriteLine(...)

Punkt 1 lässt sich aus einem aufgezeichneten VB-Journal übernehmen.
Punkt 2 würd' ich weglassen und mit einem geöffneten Part starten.
Punkt 3 geht einfacher, indem man die Features des WorkPart durchsucht.
Für Punkt 4 hat jedes Feature ein Property, das den Typ angibt.
Für Punkt 5 müssen die benötigten Variablen zuvor deklariert werden, dann wird die Funktion aufgerufen. Die Ergebnisse finden sich dann in den Variablen.
Beim letzten Punkt werden die gefundenen Werte ins ListingWindow ausgegeben.

In der Kurzversion:

Code:
dim wp as part = theSession.Parts.work
for each f as feature in wp.Features
   if f.FeatureType = "*UDF*" then
      theUfSession.Modl.AskUdfDefinition(...) ' ... := Parameter in der angegebenen Reihenfolge
      lw.writeline(...)                       ' ... := Beliebige Zusammensetzung aus "TEXT" und den ausgelesenen Werten
   end if
next

Gruß, Michael

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