@ Big King: sorry, dachte die Anfrage wäre eindeutig, da ich nicht wußte das GETENV() auch in der Programmierung verwendet wird.
@ Walter Hogger, 23. Aug: Danke für die Klarstellung, Walter. War mir so nicht bewußt. Da ich mit Programmierung nichts am Hut habe, war mir dieser Sachverhalt nicht klar.
@mseufert, 23. Aug.,2x: Sorry, dachte die Frage wäre eindeutig gestellt. Für mich ist "Ich habe noch nicht herausbekommen, wie man diese Umgebungsvariable anlegt" auch jetzt noch eine eindeutige, klare Frage. Werde mich in Zukunft um noch klarere Fragen bemühen.
Für mich gibt es nur die Benutzer-Umgebungsvariablen und die System-Umgebungsvariablen. Das NX eigene hat leuchtet mir einerseits ein, andererseits verstehe ich nicht weshalb im NX-Protokollfile dann die Variablen unter der Überschrift "System Environment Variables" aufgelistet sind.
@Walter Hogger, 23. Aug.: Sorry für die Verwirrung und Dank für den Buchauszug. Übrigens besitze ich dieses Buch und die Seiten sind mir bereits bekannt gewesen. Im Buch ist eine gute Beschreibung, wie man die vorhandenen Systemvariablen über GETENV() abfragt und in einer Tabelle verwendet. Das ist wahrscheinlich der Knackpunkt meiner Frage: Alle Anwender sehen die GETENV()-Funktion als "passive" Funktion um die vorhandenen Umgebungsvariablen abzufragen - keiner denkt daran evtl. selbst eine solche Variable festzulegen.
@uger,24. Aug.: Das kommt meiner Frage am nächsten. Selbstverständlich habe ich vorab getestet ob das mit den vorhandenen Umgebungsvariablen klappt. Und es hat geklappt. Im Abschluß zu meinen Kommentaren wird klar werden, weshalb meine Vorgehensweise nicht den Erfolg gebracht hat. Das Setzen der Variable in einer Start.bat kann ich nicht ausprobieren da ich kein Systemadmin bin.
Deshalb kann ich auch nicht angeben, ob das funktionieren würde.
Wen es interessiert: Die (unbrauchbare) Lösung: Ich wollte eine Umgebungsvariable setzen über die der Detaillierungsgrad von NX-Teilen und -Baugruppen gesteuert werden sollte. Meine Hoffnung war, dies mit der getenv()-Funktion zu realisieren um unnötige Parameterlinks zwischen den Partfiles zu vermeiden. Z.B. Umgebungsvariable mit dem Namen DoD (Degree of detail). Mit der Zuweisung von (z.B.) "A" erhält man den höchsten Detaillierungsgrad, mit "B" einen geringeren und mit "C" einen groben. Warum ich das nicht mit RefSets mache? 1. kann man sich mit solchen Schaltern das Ergebnis im Einzelteil ansehen und die Konstruktion entsprechend aufbauen, d.h. z.B. die unterschiedlichen Detaillierungsgrade in Formelementgruppen zus.fassen. Das ermöglicht eine einfachere Kontrolle als das Arbeiten mit RefSets. 2. Beabsichtige ich die RefSet-Technik für eine andere Funktion zu verwenden und ich will eine Überschneidung der Funktionen vermeiden.
Man kann die Systemumgebungsvariable über START * Systemsteuerung * System * Erweiterte Systemeinstellungen * Umgebungsvariablen * Systemvariablen definieren und mit einem Inhalt belegen.
Mein Fehler: Ich hatte NX gestartet und dann erst die Syst.Umgebungsvar. definiert. Beim Start von NX scheint sich NX eine eigene Liste der Umg.Var. anzulegen - eine während der NX-Session angelegte Umg.Var. wird von NX auch bei Aktualisierung nicht erkannt.
Wenn die Umg.var. bereits zum Zeitpunkt des NX-Starts existiert wird sie von NX in die Liste aufgenommen inkl. ihrem Wert zum
Zeitpunkt des NX-Starts. Eine nachträgliche Änderung vom "Wert" der Umg.var. wird von NX ignoriert, auch die Aktualisierung externer Ausdrücke hilft da nichts.
Wenn der Wert der Umg.var. geändert wird und NX wird gestartet, dann liefert getenv() nicht automatisch den aktuellen Wert der Umg.var. sondern den Wert der in der letzten NX-Sitzung eingelesen wurde. Erst mit der Aktualisierung externer Ausdrücke wird der Wert aktualisiert.
Fazit: getenv() ist eine passive Funktion mit der nicht flexibel die Konstruktion gesteuert werden kann. Zum Abruf bestimmter Umg.variablenwerte die standardmäßig von NX benutzt werden kann man sie verwenden.
Gruß und Dank in die Runde
P.S. Alles noch in NX85 ausprobiert, (noch) keine Ahnung wie es in NX10 läuft.
------------------
keine
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP