| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für NX |
Autor
|
Thema: Expressions automatisch erzeugen (2270 mal gelesen)
|
christian muc Mitglied Student
Beiträge: 18 Registriert: 20.10.2010 Windows XP 64bit UG NX 7.5
|
erstellt am: 17. Dez. 2010 17:15 <-- editieren / zitieren --> Unities abgeben:
Hallo, mache gerade erste Programmierversuche mit KF. Bei folgendem Problem komme ich nicht weiter: Ich habe eine Excel-Tabelle ausgelesen. Ergebnis sind 2 Listen. Eine Liste (list) enthält die Namen für Expressions. Die Zweite Liste enthält die zugehörigen Werte. Nun soll für jedes Element der ersten Liste eine Expression mit dem entsprechenden Namen erzeugt und ein Wert aus der zweiten Liste zugewiesen werden. Da die dfa auch für Tabellen mit anderer Expression- und Werteanzahl funktionieren soll, kann ich die Expressions nicht manuell erzeugen und die Werte manuell zuweisen, sondern muss wohl mit einer Schleife arbeiten. Aber genau hier komme ich nicht weiter. Als Code sieht das momentan so aus:
Code: (List) expressions: subList( excel_data_bereinigt:, 1, Anzahl_Spalten:value: ); (List) Werte: sublist(excel_data_bereinigt:, Anzahl_Spalten:value:+1, Anzahl_Spalten:value:*2); # Erzeugen der Expression und zuweisen eines Werts (Any) value_3: MakeNumber( nth(3, Konfiguration_1:) ); (Child) new_ug_expression: { Class, ug_expression; Name, nth( 3, expressions: ); value, value_3:; };
Ich würde also gerne abhängig von der Tabelle eine variable Anzahl Expressions erstellen und diesen die dazugehörigen Werte zuweisen. Wie kann man das umsetzen? In der Hilfe für Loops habe ich schon nachgesehen, hilft mir aber nicht wirklich weiter. Vielen Dank und Gruß Christian Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MAhrens Mitglied Dipl.-Ing.
Beiträge: 528 Registriert: 17.11.2000
|
erstellt am: 17. Dez. 2010 18:25 <-- editieren / zitieren --> Unities abgeben: Nur für christian muc
Hallo Christian, das Stichwort für mehrfach Objekte im Knowledge Fusion ist "Child List". Eine Child List ist nichts anderes als ein Baustein der eine sonstige KF Objektklasse mehrfach wiederholt. Wenn Du zum Beispiel ein Child List mit UG_expression oder ug_component verwendest, wird ein zusätzliche Quantity Parameter hinzugefügt. Dieser gibt steuert dann, wie oft das KF Objekt instanziert wird. Wenn Du diesen dann in Abhängigkeit der Anzahl Deiner Steuerliste setzt, werden genau so viele Expressions erzeugt, wie Element in Deiner anderen Liste sind. Ich verwende eine Child List, wenn ich unregelmäßige Komponentenmengen steuern will (ug_component). Du musst natürlich bei der Expression auf eindeutige bzw. indizierte Namen achten. Versuche mal im NX interaktiven KF Editor eine Child List vom Typ ug_expression zu erzeugen. In etwa so...: (Child list) new_ug_expression: { Class, ug_expression; Name, nth( 3, expressions: ); value, value_3:; quantity, ???; }; Gruß Matthias [Diese Nachricht wurde von MAhrens am 17. Dez. 2010 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Werkstudent Bautechnik / CAD (m/w/d) | Du hast viel Energie ? wir bieten Dir Zukunft! Energieversorgung in Deutschland gestalten, heute und im Energiemix der Zukunft ? das gelingt nur mit OGE. Wir haben die Infrastruktur, mit der heute Erdgas und künftig auch grüne Gase transportiert werden. Mit unserem rund 12.000 km langen Leitungsnetz gehören wir zu den führenden europäischen Fernleitungsnetzbetreibern. ... | Anzeige ansehen | Architektur |
|
christian muc Mitglied Student
Beiträge: 18 Registriert: 20.10.2010 Windows XP 64bit UG NX 7.5
|
erstellt am: 20. Dez. 2010 22:17 <-- editieren / zitieren --> Unities abgeben:
Hallo Matthias, konnte es heute erst ausprobieren. Hat einwandfrei geklappt, vielen Dank! Eine Frage hätte ich momentan noch. Vielleicht hast Du (oder jemand anders natürlich) dafür auch eine Lösung. Ich habe mittels der ui_comp-Klasse ein UI erzeigt, dass den Nutzer verschiedene Expressions auswählen lässt. Diese Expressions werden aus einer Excel-Datei gelesen. Nun muss soweit ich das bisher verstanden habe die ui_comp als erste Klasse in der dfa definiert werden. Das Auslesen der Excel erfolgt somit erst später. Also ist das Auswahlfeld beim ersten instanzieren der Klasse natürlich leer. Nur ein Schönheitsfehler, nach dem ersten Update (for external change) werden die Werte angezeigt. Hätte das aber trotzdem ganz gerne behoben. Mit demandValue komme ich nicht weiter. Wie könnte man hier die Reihenfolge der Regelausführung beeinflussen? Die Liste expressions: soll quasi vor der Ausführung des UI erstellt werden. Der Code sieht ungefähr so aus:
Code:
Defclass: ui_variante (%ui_comp) ; .... #GUI-Erzeugung .... (Child) new_%ui_comp_list_box: { Class, %ui_comp_list_box; ListItems, expressions:; SelectedItems, {}; SingleSelect, false; ShowMoveUpDownButtons, false; DisplayRows, 3; }; .... # Auslesen der Tabelle .... (List) expressions: subList(... ....
Kann gerne auch den ganzen Code einstellen. Der Übersichtlichkeit wegen hab ich jetzt mal drauf verzichtet Danke und Gruß, Christian Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|