Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  NX Programmierung
  Erzeugen mehrerer Teile nacheinander?

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:  Erzeugen mehrerer Teile nacheinander? (631 mal gelesen)
rhonanpaldur
Mitglied
Dipl.-Ing. MB, Druckmaschinen


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

Beiträge: 76
Registriert: 30.10.2007

NX 3.0.3
NX 5.0.2

erstellt am: 15. Jan. 2008 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

Hallo!

Ich lese hier eine Exceltabelle aus, fülle das gerade leere Part über Aufrufen der selbsterstellten Klasse "content_part1" mit Inhalt (Der ist von der Tabelle abhängig und bekommt deshalb die Spalte übergeben) und speichere das als ein Teil mit dem Namen, wie er in der 1. Zeile der Tabelle steht.

Funktioniert. Nur ist jetzt das aktive Teil das gerade erzeugte und in dem steht dann auch die Rule. Die Infos für das nächste Teil stehen in Spalte 8. usw.
Wenn ich jetzt in der Rule die Spaltenzahl auf 8 ändere, habe ich das Problem, dass beim Laden des Teils aus Spalte 7 zwar der Dateiname noch stimmt, aber der Inhalt aus Spalte 8 generiert wird, weil der Wert ja gerade in der dfa steht.

Wie könnte ich hier von einem Ausgangsteil ausgehend nacheinander die Spalten der Tabelle abarbeiten?
Mir fehlt da eine Idee.
Gäbe es die Möglichkeit, erst alle Teile zu erzeugen und zu speichern und dann in einem 2. Durchgang (evtl von einer 2. dfa aus, die ich danach per Hand ausführe) den Inhalt in die Parts zu schaffen?

Code:
#! NX/KF 5.0

DefClass: create_part1 (ug_base_part);

# Verknüpfung zum Spreadsheet. Part mit Spreadsheet muss geladen sein!
(Integer) sheet_row: 7;

(Child) spreadsheet: {
Class, ug_spreadsheet;
part_file, "spreadsheet.prt";
};

(Child) part_info: {
Class, ug_partFile;
part_name, spreadsheet:ask_string:(sheet_row:,1)+"_teil1";
directory, "D:\nxwork\";
};

(Child) part_content:{
Class, content_part1;
row, sheet_row:;
};

(Integer) save_part: ug_savePartAs(part_info:directory:+part_info art_name:, part_to_save, "");
(List) demandValue: {save_part};


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

rhonanpaldur
Mitglied
Dipl.-Ing. MB, Druckmaschinen


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

Beiträge: 76
Registriert: 30.10.2007

NX 3.0.3
NX 5.0.2

erstellt am: 15. Jan. 2008 11:29    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

Anderes Vorgehen, besseres Teilergebnis. Auf diese Weise erstellt er alle Dateien wie gewünscht.
Wie könnte ich jetzt dafür sorgen, dass jedem erzeugten Part ein Attribut übergeben wird (nämlich der aktuelle $row) und eine Child Rule mit einer gewünschten Klasse eingefügt wird? Somit würde beim ersten Öffnen der Datei dann der passende Inhalt generiert und das wäre ok.

Code:
#! NX/KF 4.0
DefClass: loop_part1a (ug_base_part);

(List) schleife: Loop
{ for $row from 7 to 9;
append {ug_createInstance(
{
Class, create_part1a;
sheet_row, $row;
})};
};
(List UnCached) demandValue: {schleife};


Code:
#! NX/KF 5.0
DefClass: create_part1a (ug_base_part);

# Verknüpfung zum Spreadsheet. Part mit Spreadsheet muss geladen sein!
(Integer Parameter) sheet_row: 7;

(Child) spreadsheet: {
Class, ug_spreadsheet;
part_file, "spreadsheet.prt";
};

(Child) part_info: {
Class, ug_partFile;
part_name, spreadsheet:ask_string:(sheet_row:,1)+"_teil1";
directory, "D:\nxwork\";
};

(Boolean) teil_erzeugen: ug_createNewPart(part_info:directory:+part_info art_name:,1);
(Boolean) teil_speichern: part_info:save:();
(List UnCached) demandValue: {teil_erzeugen,teil_speichern};


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



Konstrukteur (m/w/d) Sondermaschinenbau
Leidenschaft für technologischen Fortschritt ausleben? Dabei sein, wenn Innovationen Wirklichkeit werden? Bei FERCHAU suchen wir Menschen mit dem gleichen Anspruch: als Expert:innen für unseren Kunden. Wir realisieren spannende Projekte für namhafte Kunden in allen Technologiebereichen und für alle Branchen und übernehmen Verantwortung für komplexe Entwicklungsprojekte. Als Berufseinsteiger:in unterstützt du deine Kolleg:innen mit neuen Ideen und festigst dein Wissen durch praktische Erfahrungen....
Anzeige ansehenKonstruktion, Visualisierung
rhonanpaldur
Mitglied
Dipl.-Ing. MB, Druckmaschinen


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

Beiträge: 76
Registriert: 30.10.2007

NX 3.0.3
NX 5.0.2

erstellt am: 16. Jan. 2008 08:47    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

So, geschafft.    Des Rätsels Lösung lag in ug_evaluateInPart. Muss man erst mal wissen, dass es so eine Funktion gibt.
Einzig ein Schönheitsfehler ist noch offen. Evtl weiß da jemand Rat?
Code:
(String UnCached) inside_part: ug_evaluateInPart(part_info:directory:+part_info art_name:, "part_content", parameters:);
(String UnCached) parameters: "{ class, content_part1, row, "+ spreadsheet:ask_string:(sheet_row:,4)+"}";

Die Parameter, die ich an die Funktion übergebe ändern sich mit jedem Schleifendurchlauf, weil ja eine andere Tabellenspalte übergeben wird. Der Parameter für evaluateInPart muss als String übergeben werden. Allerdings ist meine Spaltenvariable ein Integer. Und der läßt sich nicht einfach so in den String einbinden. Daher lese ich zur Zeit eine Zelle der Tabelle als String aus, in der die Spaltenzahl steht. Das kann ich dann in den String einbauen mit +. Ist nicht ganz die feine Englische und eigentlich ein sinnloser Umweg.
Wüsste jemand etwas besseres?

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