| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für NX |
Autor
|
Thema: Ein Problem mit DemandValue? (1833 mal gelesen)
|
rhonanpaldur Mitglied Dipl.-Ing. MB, Druckmaschinen
Beiträge: 76 Registriert: 30.10.2007 NX 3.0.3 NX 5.0.2
|
erstellt am: 24. Jan. 2008 09:07 <-- editieren / zitieren --> Unities abgeben:
Hallo! Mit angehängtem Code öffne ich ein Teil, erzeuge darin Inhalt und speichere es dann wieder. Mit demandValue sollte das auch in genau der Reihenfolge passieren. Beim Ausführen sehe ich aber in der Leiste mit den Meldungen, das NX erst öffnet, dann speichert und dann den Inhalt generiert. Das führt dazu, dass ich die Parts danach öffnen kann, den korrekten Inhalt sehe, aber wenn ich sie schließen will gefragt werde, ob ich die Änderungen speichern möchte. Wenn ich das tue, erhöht sich die Dateigröße und ich kann sie später jederzeit wieder öffnen. Wenn ich das Speichern aber ablehne, dann kann ich das Part danach nie wieder öffnen. Mit Fehlermeldungen wie: "Cannot find NX object from Parasolid tag" oder "tool and target do not form a complete intersection" (das könnte von boolschen Operationen von mir kommen, die mit der Regel ausgeführt werden) Es scheint so, als ob NX nur die Regel im Part ablegt, dort aber nicht ausführt und das erst macht, wenn ich das Teil das erste Mal öffne und auch das Speichern zu früh passiert... Code:
(Child) spreadsheet: { Class, ug_spreadsheet; part_file, "spreadsheet_part2.prt"; };(Child) part_info: { Class, ug_partFile; part_name, spreadsheet:ask_string:(sheet_row:,1)+"_teil2"; directory, "D:\nxwork\"; }; (Integer Parameter UnCached) sheet_row: 7; (Integer UnCached) open_part: ug_openPart(part_info:directory:+part_info art_name:); (String UnCached) inside_part: ug_evaluateInPart(part_info:directory:+part_info art_name:, "part_content", parameters:); (String UnCached) parameters: "{ class, content_part2, row, "+ spreadsheet:ask_string:(sheet_row:,2)+"}"; (Boolean UnCached) save_part: part_info:save:(); (List UnCached) demandValue: {sheet_row,open_part,parameters,inside_part,save_part};
vereinfacht:
Code: (Integer Parameter UnCached) zahl: 7; (Integer UnCached) open_part: ug_openPart(dateiname:); (String UnCached) inside_part: ug_evaluateInPart(dateiname, "regelname", regeluebergabe:); (String UnCached) regeluebergabe: "{ class, Klassenname, erwartetezahl, zahl: }"; (Boolean UnCached) save_part: part_info:save:(); (List UnCached) demandValue: {zahl,open_part,regeluebergabe,inside_part,save_part};
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rhonanpaldur Mitglied Dipl.-Ing. MB, Druckmaschinen
Beiträge: 76 Registriert: 30.10.2007 NX 3.0.3 NX 5.0.2
|
erstellt am: 24. Jan. 2008 14:29 <-- editieren / zitieren --> Unities abgeben:
Ganz einfach ausgedrückt: Wie könnte ich per KF ein Teil laden, die Regel darin aktuallisieren und dann wieder speichern? Wenn ich das als Schleife über alle Teile laufen lasse müsste es in Ordnung gehen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
älg Mitglied CADmin
Beiträge: 403 Registriert: 17.06.2003
|
erstellt am: 24. Jan. 2008 14:45 <-- editieren / zitieren --> Unities abgeben: Nur für rhonanpaldur
Ohne sich jetzt tief in die Thematik eingelesen zu haben: Filehandling betreibe ich i.d.R. mit einer prozeduralen Schleife (Öffnen, Behandeln, Schließen des Files). In KF wird dazu eine @{}-Anweisung verwendet. Innerhalb der Schleife wird also alles Schritt für Schritt abgehandelt. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rhonanpaldur Mitglied Dipl.-Ing. MB, Druckmaschinen
Beiträge: 76 Registriert: 30.10.2007 NX 3.0.3 NX 5.0.2
|
erstellt am: 24. Jan. 2008 18:10 <-- editieren / zitieren --> Unities abgeben:
Hallo! Danke für den Tip. Versucht hatte ich es schon einmal so. Hab es jetzt noch einmal gemacht und Ergebnis ist das Gleiche... Oder mach ich da was falsch? Ich probiere auch gerade statt mit ug_evaluateInPart mit ug_Child_in_Part rum. Das ist eine Klasse und die kann ich dann nicht mit demandValue oder mit einer prozeduralen Schleife behandeln. Kann ich in einer Klasse mit demandOrder und demandValue gleichzeitig arbeiten? Code: (Integer Parameter UnCached) sheet_row: 7;(Child) spreadsheet: { Class, ug_spreadsheet; part_file, "spreadsheet_part2.prt"; }; (Child) part_info: { Class, ug_partFile; part_name, spreadsheet:ask_string:(sheet_row:,1)+"_teil2"; directory, "D:\nxwork\"; }; (Boolean UnCached) lala: @{ ug_openPart(part_info:directory:+part_info art_name:); $parameter1 << "{ class, content_part2, row, "+ spreadsheet:ask_string:(sheet_row:,2)+"}"; ug_evaluateInPart(part_info:directory:+part_info art_name:, "part_content", $parameter1); part_info:save:(); }; (List UnCached) demandValue: {sheet_row,lala};
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Konstrukteur - Maschinen- und Sondermaschinenbau (all gender) | Die ALTEN Consulting Services GmbH bietet mit über 20 Jahren Branchenerfahrung ihren namhaften Kunden aus Industrie und Wirtschaft hochspezialisierte Engineering- und IT-Dienstleistungen zur gemeinsamen Realisierung von branchen- und technologieübergreifenden Lösungen an. Kompetenz, Engagement und Leidenschaft verbinden alle unsere Mitarbeiter der ALTEN Consulting Services GmbH. Dabei ... | Anzeige ansehen | Konstruktion, Visualisierung |
|
rhonanpaldur Mitglied Dipl.-Ing. MB, Druckmaschinen
Beiträge: 76 Registriert: 30.10.2007 NX 3.0.3 NX 5.0.2
|
erstellt am: 24. Jan. 2008 18:38 <-- editieren / zitieren --> Unities abgeben:
Weitere Variante: Code: (Integer Parameter UnCached) sheet_row: 7;(Child) spreadsheet: { Class, ug_spreadsheet; part_file, "spreadsheet_part2.prt"; }; (Child) part_info: { Class, ug_partFile; part_name, spreadsheet:ask_string:(sheet_row:,1)+"_teil2"; directory, "D:\nxwork\"; }; (String UnCached) inside_part: ug_evaluateInPart(part_info:directory:+part_info art_name:, "part_content", parameters:); (String UnCached) parameters: "{ class, content_part2, row, "+ spreadsheet:ask_string:(sheet_row:,2)+"}"; (Integer UnCached) save_part: ug_savePartAs(part_info:directory:+part_info art_name:+"_a", part_to_save, part_info:directory:+part_info art_name:); (List UnCached) demandValue: {sheet_row,open_part,parameters,inside_part,save_part};
demandValue funktioniert also, da das Ausgangsteil unangetastet bleibt und dank ugSavePartAs ein Teilename_a.prt erstellt wird, in dem die Regel vorhanden ist. Aber dieses Part hat wieder eine rel. kleine Dateigröße und läßt sich nur einmal öffnen. Nur wenn man es bei diesem einen mal speichert, habe ich wirklich die Features im Teil erzeugt und die Dateigröße ist dann deutlich größer. Ich versteh es nicht... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|