| | | 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
Beiträge: 15 Registriert: 31.01.2012 NX 8.5, TC 8.3, C# oder UserFunction
|
erstellt am: 15. Aug. 2014 14:31 <-- editieren / zitieren --> Unities abgeben:
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
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 / zitieren --> Unities abgeben: Nur für DocCleaner
|
DocCleaner Mitglied Trainer, Supporter und Programmierer für NX und TC
Beiträge: 15 Registriert: 31.01.2012 NX 8.5, TC 8.3, C# oder UserFunction
|
erstellt am: 29. Aug. 2014 10:44 <-- editieren / zitieren --> Unities abgeben:
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 ansehen | Bauwesen |
|
DocCleaner Mitglied Trainer, Supporter und Programmierer für NX und TC
Beiträge: 15 Registriert: 31.01.2012 NX 8.5, TC 8.3, C# oder UserFunction
|
erstellt am: 29. Aug. 2014 11:21 <-- editieren / zitieren --> Unities abgeben:
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 >>)
|