Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  NX Programmierung
  Expressions automatisch erzeugen

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:  Expressions automatisch erzeugen (2270 mal gelesen)
christian muc
Mitglied
Student


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

Beiträge: 18
Registriert: 20.10.2010

Windows XP 64bit
UG NX 7.5

erstellt am: 17. Dez. 2010 17:15    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,

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.


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

Beiträge: 528
Registriert: 17.11.2000

erstellt am: 17. Dez. 2010 18:25    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 christian muc 10 Unities + Antwort hilfreich

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 ansehenArchitektur
christian muc
Mitglied
Student


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

Beiträge: 18
Registriert: 20.10.2010

Windows XP 64bit
UG NX 7.5

erstellt am: 20. Dez. 2010 22:17    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 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 >>)

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