| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Creo |
Autor
|
Thema: System-Variablen - Abfrage nicht aktuell ? (843 mal gelesen)
|
Seele Mitglied Konstrukteur
Beiträge: 364 Registriert: 11.06.2003 Intel(R) Xeon(R) W-2245 CPU @ 3,90 GHz, 64GB RAM NVidia Quadro RTX A4000 Win10-64Bit Elements/Direct v20.5.1.0 PartLibrary, Surfacing, 3D-PDF, 3D-Access, Unigraphics-Schnittstelle
|
erstellt am: 20. Okt. 2021 09:41 <-- editieren / zitieren --> Unities abgeben:
Hallo ich habe folgendes Problem, setzt man im Windows eine neue Benutzervariable "Testvariable" so kann man diese theoretisch mit (sd-sys-getenv "Testvariable") abfragen. Das ist aber nur die Theorie, denn das geht nur, wenn die Variable seit dem Start des SolidDesigner nicht mehr verändert wurde, bzw. auch schon bei diesem vorhanden war. Ansonsten wird entweder nil angezeigt oder der Wert, den die Variable beim Start des SolidDesigners hatte. Dieses Verhalten ist irgendwie dämlich, ... Da ich über eine Benutzervariable eine Information übergeben möchte, brauche ich aber den wirklich aktuellen Wert. Gibt es einen Befehl, den SolidDesigner dazu zu bringen, die Werte zu aktuallisieren, bzw. wirklich den aktuellen Wert abzufragen? Gruß Wolfgang ------------------ alles ist möglich, nichts funktioniert und trotzdem muß es bis morgen geschafft sein. Werden wir es schaffen? Ja wir schaffen das !!! :-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Seele Mitglied Konstrukteur
Beiträge: 364 Registriert: 11.06.2003
|
erstellt am: 20. Okt. 2021 12:16 <-- editieren / zitieren --> Unities abgeben:
Hallo, es ist noch schlimmer, ... auch ein Neustart vom SolidDesigner hilft nicht, nur nach dem Neustart des PC wird die Variable wieder richtig ausgelesen, ... Gruß Wolfgang ------------------ alles ist möglich, nichts funktioniert und trotzdem muß es bis morgen geschafft sein. Werden wir es schaffen? Ja wir schaffen das !!! :-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Roman Mitglied
Beiträge: 674 Registriert: 16.01.2001 ME10 v20.4.1, Win10 SD v20.4.1, Win10 Windchill 12.02 Creo 8.0.2 in der Einführungsphase
|
erstellt am: 20. Okt. 2021 13:24 <-- editieren / zitieren --> Unities abgeben: Nur für Seele
|
Seele Mitglied Konstrukteur
Beiträge: 364 Registriert: 11.06.2003
|
erstellt am: 20. Okt. 2021 14:23 <-- editieren / zitieren --> Unities abgeben:
Gestartet wurde über eine Startleiste mit Icons, da behielt er die alten Variablen,... WindowsExplorer abgeschossen im Taskmanager und Explorer neu gestartet und von dem aus SolidDesigner, dann werden die Variablen übernommen ohne Neustart, aber ich möchte auch den SolidDesigner nicht neu starten müssen. :-( Gruß Wolfgang ------------------ alles ist möglich, nichts funktioniert und trotzdem muß es bis morgen geschafft sein. Werden wir es schaffen? Ja wir schaffen das !!! :-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
der_Wolfgang Ehrenmitglied V.I.P. h.c. Tastenhauer
Beiträge: 2017 Registriert: 3.20. ● PE60+80@home ● W10 Pro Build19044.2364 ● Drafting V17~V20.5.1 ● Modeling V17~V20.5.1
|
erstellt am: 22. Okt. 2021 15:51 <-- editieren / zitieren --> Unities abgeben: Nur für Seele
Zitat: Original erstellt von Seele: im Windows eine neue Benutzervariable "Testvariable"....aber ich möchte auch den SolidDesigner nicht neu starten müssen.
Geht nicht. PUNKT Die Praxis funktioniert so, wie es gedacht ist (so seit den 70'ern). Deine Theorie ist flashc. Du kannst nicht von aussen Umgebungsvariablen verändern!
Ein Programm sieht die Umgebungsvariablen (deswegen heisst es UMGEBUNG) die beim Start gesetzt sind / gültig waren. Das gilt für jedes Programm! Das Programm wird "in einer Umgebung" gestartet. und nur diese kennt es. Mag sein das das Programm selber seine eigenen Umgebungsvariable ändern kann... aber das kann nicht jede(s|r). ------------------------------ test:
- starte cmd.exe (also eine neue Dos-Shell)
- zeige dir die Umgebungs Vars an " set |sort "
- ändere im Windows UI ein ENV Variable "ichbins -> Wolfgang"
- zeige dir die Umgebungs Vars an " set |sort |findstr ich" --> ichbins gibt es nicht
- starte ein weiteres cmd.exe (also eine neue Dos-Shell)
- zeige dir die Umgebungs Vars an " set |sort |findstr ich" --> ichbins gibt es
- rufe in der soeben geöffneten shell ein weiteres mal cmd.exe auf.. auch diese subshell kennt die Umgebungsvariable. Sie sieht alles was ihre Eltern Shell kennt.
------------------------------ test2: selbst nutzt nix.. das funktioniert nicht mal in der Shell, in der du das ausführst. ------------------------------ Betriesbsystem GrundKurs Kapitel 4.2 - Umgebungsvariablen und Vererbung (oder so, oder ähnlich, oder anders ) ------------------ ● Firefox ESR ● Java Forum Stuttgart JUGS ● OSD Hilfeseite (de) / help page (en) ● NotePad++ ● BuFDi ● Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
der_Wolfgang Ehrenmitglied V.I.P. h.c. Tastenhauer
Beiträge: 2017 Registriert: 3.20. ● PE60+80@home ● W10 Pro Build19044.2364 ● Drafting V17~V20.5.1 ● Modeling V17~V20.5.1
|
erstellt am: 22. Okt. 2021 15:58 <-- editieren / zitieren --> Unities abgeben: Nur für Seele
Zitat: Original erstellt von Seele: Gibt es einen Befehl, den SolidDesigner dazu zu bringen, die Werte zu aktuallisieren, bzw. wirklich den aktuellen Wert abzufragen?
Nein. es würde nicht mal helfen Code: (sd-sys-exec "env |sort")
auszuführen. Denn dieses shell (als Unter-prozess von Modeling) würde wieder nur die Umgebungsvariablen sehen, die sein Elternprozess, also Modeling, kennt. =====================
was hast du vor? Dann können wir alternativen überlegen... ------------------ ● Firefox ESR ● Java Forum Stuttgart JUGS ● OSD Hilfeseite (de) / help page (en) ● NotePad++ ● BuFDi ● Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
der_Wolfgang Ehrenmitglied V.I.P. h.c. Tastenhauer
Beiträge: 2017 Registriert: 3.20. ● PE60+80@home ● W10 Pro Build19044.2364 ● Drafting V17~V20.5.1 ● Modeling V17~V20.5.1
|
erstellt am: 22. Okt. 2021 16:17 <-- editieren / zitieren --> Unities abgeben: Nur für Seele
alternativen.. BATCH
Code: echo (setq mei::my-transfer "%ichbins:\=/%") > %TEMP%\modeling_lies_mich_jetzt.lsp
LISP
Code: (load (format nil "~A/modeling_lies_mich_jetzt.lsp" (sd-sys-getenv "TEMP")) :if-does-not-exist (setq mei::my-transfer nil))
einfacher und sicherer wäre aber: BATCH
Code: echo %ichbins%> %TEMP%\modeling_lies_mich_jetzt.txt
LISP
Code: (setq my-transfer (lese-ascii-file (format nil "~A/modeling_lies_mich_jetzt.txt" (sd-sys-getenv "TEMP"))))
mit der zweiten Variante bräuchtest du auf Batch Ebene keine LISP Syntax umsetzen (Sonderzeichen und co!!) ------------------ ● Firefox ESR ● Java Forum Stuttgart JUGS ● OSD Hilfeseite (de) / help page (en) ● NotePad++ ● BuFDi ● Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Seele Mitglied Konstrukteur
Beiträge: 364 Registriert: 11.06.2003
|
erstellt am: 05. Nov. 2021 15:02 <-- editieren / zitieren --> Unities abgeben:
Hallo Wolfgang, lange ist meine Frage her, aber die Zeit, ... :-) Da ich nur Hobby-Programmierer ohne jegliche Schulungen bin, verzeiht ihr hier meine komische Frage. Der Sinn hinter meiner Frage sollte sein, einen Weg zu finden, wie ich eine kleine Information zwischen verschiedenen Programmen und Anwendungen austauschen kann, ohne diese nochmal in einer Datei abzulegen. Über den Umweg mit einer Datei, bekomme ich das heute schon hin, dass ist nicht das Problem. Ich habe mir nur die Frage gestellt, warum ich diesen Umweg gehen muss, wenn die heutigen PC´s locker 128GB RAM haben. Warum eine winzige Information erst in eine Datei Schreiben, damit sie die nächste Software wieder öffnet um sie auszulesen. Diese Festplattenzugriffe müsste ich mir doch sparen können? Meinem Kollegen würde ich ja auch keinen Brief schreiben, wenn er neben mir sitzt, sondern es ihm direkt mitteilen und mit ihm reden. Deswegen dachte ich, ich könnte mit (oli::sd-sys-exec (format nil "\"setx Testvariable \"Testwert\" " ) ) die "Testvariable" in der Windowsumgebung setzen und benutzen. Aber selbst wenn ich sie im SolidDsigner mit (DISPLAY (sd-sys-getenv "Testvariable")) abrufe, kommt nur nil, weil sie beim Start noch nicht existierte. Erst nach dem PC-Neustart war sie da, dass hatte ich gelernt. Im DOS-Fenster habe ich heraus gefunden, dass man die Aktualisierung erzwingen kann. Hierzu die angehängte Batch-Datei als Beispiel, ... Mir fehlt aber der Weg zurück, deswegen immer noch die Frage, geht das irgendwie im SolidDesigner auch, die Variablen zwangsmäßig aktualisieren zu lassen? Oder muss heute im Jahr 2021 und 128GB RAM die winzige Information die ich brauche wirklich erst in eine Text-Datei auf der Festplatte schreiben? Da wundert es mich dann nicht, warum die heutigen CPU Geschwindigkeiten in der praktischen Anwendung kaum Verbesserungen bringen. Ich dachte am Anfang nur, ich belege eine fliegende Variable im Windows und könnte diese von den Anwendungen aus abrufen. Bin bis jetzt aber gescheitert. Vielleicht gäbe es ja auch einen komplett anderen Ansatz dazu? Gruß Wolfgang ------------------ alles ist möglich, nichts funktioniert und trotzdem muß es bis morgen geschafft sein. Werden wir es schaffen? Ja wir schaffen das !!! :-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
clausb Ehrenmitglied V.I.P. h.c.
Beiträge: 2914 Registriert: 20.12.2000 Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.
|
erstellt am: 19. Nov. 2021 19:00 <-- editieren / zitieren --> Unities abgeben: Nur für Seele
Möglichkeiten der Interprozesskommunikation gibt es zuhauf, in allen gängigen Betriebssystemen und auch schon ziemlich lange. Daran ist kein Mangel. Als Anregung ein paar Beispiele:
- Dateien wie besprochen
- Umgebungsvariablen (unter Beachtung der Vererbungsregeln)
- Sockets
- DDE
- Shared Memory
- Named Pipes
- Events
- Message queues
- Signals
- Atoms
- Clipboard
Welche Methode am besten passt, hängt von der jeweiligen Situation und von den verfügbaren Technologien ab. Aus Lisp heraus wird man eventuell nicht an alles rankommen, was so ein Betriebssystem zu bieten hat, aber "zur Not" hilft man sich dann übers .NET-API.
------------------ CoCreate Modeling FAQ: http://www.clausbrod.de/CoCreateModeling/ - Blog: http://www.clausbrod.de/Blog Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
der_Wolfgang Ehrenmitglied V.I.P. h.c. Tastenhauer
Beiträge: 2017 Registriert: 3.20. ● PE60+80@home ● W10 Pro Build19044.2364 ● Drafting V17~V20.5.1 ● Modeling V17~V20.5.1
|
erstellt am: 19. Nov. 2021 19:38 <-- editieren / zitieren --> Unities abgeben: Nur für Seele
Zitat: Original erstellt von clausb: Möglichkeiten der Interprozesskommunikation gibt es zuhauf
Lach der Claus ... gibt es dich auch noch altes Haus. Schön.. Freut mich Die meisten deiner Vorschläge sind ordentlich "sophisticated" @Wolfgang
Stichwort ist in diesem fall "interprocess communication" SolidDesigner.exe schwätzt mit annotator.exe ( == oli:sd-execute-annotator-command) Das mag für Dich und viele andere einfach klingen. Aber da steckt ne Menge dahinter. Das ist mehr als "Brief schreiben, Briefumschlag beschreiben, Briefmarke kleben, ins Städtle marschieren, gelben Kasten finden, einwerfen" Es gibt einige Kommunikationswege .. (siehe Claus's posting) auch in Modeling++ aber Umgebungsvariablen beschreiben nun mal die AKTUELLE UMGEBUNG in der das Programm XYZ gestartet wurde.
----- Wenn ich dich in den Urlaub schicke nach Italien..... und du bist dort. Was hilft es Dir dann, wenn ich schreibe "Usedom-SandStrand==toll" ... es nützt .. N I X Du siehst es nicht. PUNKT . und selbst wenn du es sehen könntest. Es hilf auch nix. Weil du ja bereits in Italien bist und nicht auf Usedom. Hey Leuts, ich versuche OFT solche Vergleiche ins praktisch NICHT EDV verwandte Leben zu machen.. nicht immer funktioniert es. Aber eine solche Bildersprache hilft hier und da erheblich. Und der o.g. Vergleich Italien-Usedom .. der funktioniert auch im Jahr 1923 daran änderst sich nix. Und es gibt im EDV Wesen auch substantielle Dinge, die sich eben nicht ändern (Stichwort Umgebungsvariablen). Die 'Änderung' ist dann eher eine Erweiterung. der Umstieg auf einen anderen Kommunikationsweg. @Wolfgang Deine Erwartungen sind falsch / nicht mit der Realität gegebem. ------------------ ● Firefox ESR ● Java Forum Stuttgart JUGS ● OSD Hilfeseite (de) / help page (en) ● NotePad++ ● BuFDi ● Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|