Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  NX Programmierung
  Komponente zu einer Fläche/einem TaggedObject ermitteln

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:  Komponente zu einer Fläche/einem TaggedObject ermitteln (935 mal gelesen)
DocCleaner
Mitglied
Trainer, Supporter und Programmierer für NX und TC


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

Beiträge: 15
Registriert: 31.01.2012

NX 8.5, TC 8.3, C# oder UserFunction

erstellt am: 15. Aug. 2014 14:31    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 habe ein kleines Problem, für das es sicher eine ganz einfache Lösung gibt, auf die ich aber leider nicht komme.
Ich schreibe an einem Programm, das damit beginnt, das der Nutzer Flächen in einer Baugruppe auswählt. Dies mache ich über einen UI-Styler Dialog und erhalte von dort die Flächen als "TaggedObject" zurück.
Das Programm wird in C# programmiert.

Nun müsste ich im weiteren Verlauf aber wissen, welche Fläche zu welcher Komponente gehört. Leider komme ich an dieser Stelle nicht weiter.
Ich habe zuerst versucht, das TaggedObject nach NXOpen.Face zu casten und dann über ".OwningComponent" an die Komponente zu kommen.
Also etwa so:

Code:

Face bspFace = (Face)bspTaggedObject;
Component bspComponent = bspFace.OwningComponent;


Beim zweiten Schritt gibt es dabei aber eine Exception, dass ich versuche ein nicht aktives Objekt zu nutzen.

Daraufhin habe ich es über die entsprechende UF-Funktion versucht, also etwa so:

Code:

Tag bspComponentTag = Tag.Null;
//ufs ist ein initialisiertes Objekt von Typ UFSession.
ufs.Assem.AskParentComponent(bspTaggedObject.Tag, out bspComponentTag);


Dabei wird aber ebenfalls eine Exception geworfen, die das Gleiche aussagt wie bei Variante 1.

Daher die Frage:
Wie kann ich zu einer Fläche, die als TaggedObject bekannt ist, in einer Baugruppe die Komponente ermitteln, zu der die Fläche gehört?
Da muss es doch was geben. 

Gruß,
Sven

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: 18. Aug. 2014 09:59    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 DocCleaner 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von DocCleaner:

Da muss es doch was geben.  

=> Die .NET-Ref. Unter UF_ASSEM ist ein Beispiel zu finden, das die Zusammenhänge erläutert.

Gruß, Michael

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

DocCleaner
Mitglied
Trainer, Supporter und Programmierer für NX und TC


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

Beiträge: 15
Registriert: 31.01.2012

NX 8.5, TC 8.3, C# oder UserFunction

erstellt am: 29. Aug. 2014 10:44    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

Zitat:
Original erstellt von mseufert:

=> Die .NET-Ref. Unter UF_ASSEM ist ein Beispiel zu finden, das die Zusammenhänge erläutert.

Gruß, Michael


Hallo Michael,

vielen Dank für den Hinweis! So eine Erklärung habe ich vergeblich gesucht, aber durch deinen Hinweis habe ich den im C-Teil der Hilfe gefunden.
Das bringt mich beim Verständnis wie NX Dinge verwaltet weiter.

Leider scheint es nun so, dass es doch schwer bis unmöglich ist von der ausgewählten Fläche zur Komponente zu kommen.
Das TaggedObject, dass der FaceCollector ausgibt, ist nämlich die tatsächliche Fläche und nicht eine Occurence der Fläche.
Von der Fläche aus kann ich problemlos das OwningPart ermitteln, aber das nützt mir nichts, wenn das Teil mehrmals in der Baugruppe vorkommt.
Ich befürchte ich muss mir einen ganz anderen Programmablauf ausdenken oder mich zumindest vom Block UI-Styler lösen. 

Gruß,
Sven

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



Werkstudent Hochbau (w/m/d)

In unseren Bussen und Bahnen bringen wir jeden Tag über eine Million Menschen an ihr Ziel. Und wir bewegen noch mehr: für Hamburg, für die Zukunft und für alle, die bei uns arbeiten.

Werkstudent Hochbau (w/m/d)

Du ? deine Rolle bei uns
Für den Fachbereich Hochbau brauchen wir dich als Unterstützung. Gemeinsam modernisieren wir die U-Bahn-Haltestellen und Busumsteigeanlagen....

Anzeige ansehenBauwesen
DocCleaner
Mitglied
Trainer, Supporter und Programmierer für NX und TC


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

Beiträge: 15
Registriert: 31.01.2012

NX 8.5, TC 8.3, C# oder UserFunction

erstellt am: 29. Aug. 2014 11:21    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

Zitat:

Das TaggedObject, dass der FaceCollector ausgibt, ist nämlich die tatsächliche Fläche und nicht eine Occurence der Fläche.

Ich muss mich korrigieren. Es geht, zumindest mit Umwegen, doch.
Ich habe jetzt im Initialisierungs-Callback des Dialogs die "InterpartSelectionAsString" der Flächensammler auf "Simple" gesetzt. Dann kann der User Flächen aus der gesamten Baugruppe auswählen und die Flächen sind Occurences.

Wenn ich die gleiche Einstellung bereits beim Erstellen des Dialogs auswähle, kann der Nutzer nur Flächen innerhalb des Arbeitsteiles auswählen. Ein Feld für die maximale SelectionScope zeigt der Styler nur für den allgemeinen Objektsammler an.

Ich will nicht ausschließen, dass es auch anders geht, aber ich werde jetzt bei dem Weg bleiben. Für so ein kleines Tool ist jetzt schon genug Zeit reingeflossen... 

Gruß,
Sven

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