| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für NX | | | | HBB Engineering: Kostenlose NX Lernvideos auf YouTube (NX) |
Autor
|
Thema: KF hostpointer -> instance (315 mal gelesen)
|
DinnerForOne Mitglied
Beiträge: 62 Registriert: 29.10.2004 UG NX3
|
erstellt am: 21. Dez. 2004 15:56 <-- editieren / zitieren --> Unities abgeben:
Hallo KF Hackers, folgendes Datentyp Problem: Ich baue mit KF Funktionalität (ug_component) Baugruppen. Um diese zu platzieren, nehme ich Bezug auf bereits über KF eingefügte Komponenten. Dafür habe ich den Selektionsdialog von UG, dieser liefert eine Liste der selektierten Objekte, mit dem Datentyp Hostpointer. Nun muss ich bei den Instanzen an das Attribut eines Childs kommen. Dafür gibt es die Funktion: ug_askAttrValue(Instance, $Instance, String, $title ) Diese braucht aber den Datentyp Instance. Wie kann ich den hostpointer in eine Instance umwandeln? Der Instance-name ist variabel, kann also nicht hardcodiert arbeiten, Werte in Liste der Selektion sind variabel... Danke für Tipps! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Joerg.A Mitglied
Beiträge: 86 Registriert: 12.12.2001
|
erstellt am: 21. Dez. 2004 17:03 <-- editieren / zitieren --> Unities abgeben: Nur für DinnerForOne
Hi, interessant, ich hatte gerade vor ein paar Tagen genau das selbe Problem wie Du. Ich habe bis jetzt allerdings nur eine Lösung mit ug_adoptObject() gefunden. Hier bekommst Du bei einem Hostpointer, zu dem eine Instanz existiert, eine Referenz auf die zugehöige Instanz zurück. Nur leider werden dann halt auch alle nicht KF Komponenten nach KF adoptiert, was in meinem Fall nicht so befriedigend war. Interessant ist allerdings, wenn man die Komponente manuell mit "Reference by Select" selektiert, bekommt man die Instanz zurück, nur in den Styler Dialogen bekommt man den Hostpointer. Ich werde mir diese Sache im neuen Jahr nocheinmal genauer ansehen und dann am besten mal einen IR aufmachen. Nur zur Info! ug_askAttrValue(Instance, $Instance, String, $title ) liest UG Objekt Attribute aus und keine KF Attribute. Schöne Grüße Joerg.A Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DinnerForOne Mitglied
Beiträge: 62 Registriert: 29.10.2004 UG NX3
|
erstellt am: 22. Dez. 2004 10:20 <-- editieren / zitieren --> Unities abgeben:
Hallo Joerg, danke für deine Antwort. Ich habe mit der Problematik noch UGS angefragt, mal schauen ob was zurückkommt. Dein Hinweis: Nur zur Info! ug_askAttrValue(Instance, $Instance, String, $title ) liest UG Objekt Attribute aus und keine KF Attribute. Habe da was anderes herausgefunden (NX3), das mit lesen der KF Attribute hat funktioniert (aber nur wenn ich die Instance hardcodiert angegeben habe -> für meine Applikation nicht brauchbar). Zum lesen von Part Attributen: *************UG Help **************************** Defun: ug_askAttrValue_(String, $part_name,String, $object_name,String, $title )@{...} Any; Description: Returns the value of a given attribute of a given object in a given file
Use "PART_ATTRIBUTE" for the $object_name string to get the value of a part attribute. For example, if the title is "my_attr" in the current part (""), use: ug_askAttrValue_("", "PART_ATTRIBUTE", "my_attr"); -- Input Arguments: part_name - Specify the part name object_name - Specify the object name title - Specify the title of the attribute Returns: Any- The value of a given attribute ******************************************************** Wenn ich eine Lösng habe (bin optimistisch), werde ich mich wieder melden. Gruss Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
älg Mitglied CADmin
Beiträge: 403 Registriert: 17.06.2003
|
erstellt am: 22. Dez. 2004 10:58 <-- editieren / zitieren --> Unities abgeben: Nur für DinnerForOne
Um auch hier meinen Senf hinzuzugeben: ug_adoptObject(irgendeinhostpointer ist o.k. - funktioniert bei mir zumindest. ug_askAttrValue_ ... ist auch o.k. - s.o. Selbstverständlich kann ich auch beliebige (nicht hardcodierte) KF-Attribute lesen, indem ich mir in einer prozeduralen Sequenz den Namen bastele und dann hinterfrage, etwa so Defun: KF_att? (integer $i, string $str) @{ $KF_attname << "irgendwas"+format("%d", $i)+"_nochwas"+$str; $KF_att << ref(self:, $KF_attname); ... };
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
älg Mitglied CADmin
Beiträge: 403 Registriert: 17.06.2003
|
erstellt am: 22. Dez. 2004 11:00 <-- editieren / zitieren --> Unities abgeben: Nur für DinnerForOne
|
DinnerForOne Mitglied
Beiträge: 62 Registriert: 29.10.2004 UG NX3
|
erstellt am: 22. Dez. 2004 14:21 <-- editieren / zitieren --> Unities abgeben:
Hallo älg, habe auch noch die ref() Funktion ausprobiert, das Problem ist aber, dass ich bei der Instance nicht "self" angeben kann. Ich möchte das Attribut einer durch den Selektionsdialog definierten KF-Objekts wissen, also nicht self sondern das Objekt definiert durch den HostPointer(aus der Selektion). Und hier loopt das Problem wieder, die Funktion self() motzt wegen der Typenverletzung wenn ich ihr den hostpointer gebe. Habe die Instance schon als String aus dem Hostpointer herausgelesen, aber den String schlucken all die Funktionen auch nicht. Eigentlich brauche ich eine simple HostName_to_instance() Funktion... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
älg Mitglied CADmin
Beiträge: 403 Registriert: 17.06.2003
|
erstellt am: 22. Dez. 2004 15:01 <-- editieren / zitieren --> Unities abgeben: Nur für DinnerForOne
|
DinnerForOne Mitglied
Beiträge: 62 Registriert: 29.10.2004 UG NX3
|
erstellt am: 22. Dez. 2004 15:55 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, endlich klappt es, danke vielmals für die Tipps #zuerst den Hostponiter aus der selektion (die Liste RI_REF_SYMB_FUNC: von der ich das letzte Element nehme) in eine Instance umwandeln (any Modifiable Parameter) ri_instance: ug_adoptObject(last(RI_REF_SYMB_FUNC:)); #dann das Part Attribut (nicht KF Attribut, meine Aussage war falsch, sorry) des gepointeten KF-Objektes lesen (String Modifiable Parameter) ri_attr_symb: ug_askAttrValue(ri_instance:, "RI_FD_PART_NAME" ); Also, machts gut und auf ein andermal! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|