Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  PTC Creo Elements/Programmierung
  System-Variablen - Abfrage nicht aktuell ?

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 PTC CREO
Autor Thema:  System-Variablen - Abfrage nicht aktuell ? (293 mal gelesen)
Seele
Mitglied
Konstrukteur


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

Beiträge: 350
Registriert: 11.06.2003

Intel Xeon CPU E5-1650 v3@3,50 GHz, 32GB RAM
NVidia Quadro K4200
Win10-64Bit
Elements/Direct v20.4.1.0
PartLibrary, Surfacing, 3D-PDF,
3D-Access, Unigraphics-Schnittstelle

erstellt am: 20. Okt. 2021 09:41    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 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


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

Beiträge: 350
Registriert: 11.06.2003

Intel Xeon CPU E5-1650 v3@3,50 GHz, 32GB RAM
NVidia Quadro K4200
Win10-64Bit
Elements/Direct v20.4.1.0
PartLibrary, Surfacing, 3D-PDF,
3D-Access, Unigraphics-Schnittstelle

erstellt am: 20. Okt. 2021 12:16    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, 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



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

Beiträge: 656
Registriert: 16.01.2001

erstellt am: 20. Okt. 2021 13:24    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 Seele 10 Unities + Antwort hilfreich

Hallo,

rufst du Modeling aus einem Shellscript (Bat, oder cmd) auf?

Roman

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

Seele
Mitglied
Konstrukteur


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

Beiträge: 350
Registriert: 11.06.2003

Intel Xeon CPU E5-1650 v3@3,50 GHz, 32GB RAM
NVidia Quadro K4200
Win10-64Bit
Elements/Direct v20.4.1.0
PartLibrary, Surfacing, 3D-PDF,
3D-Access, Unigraphics-Schnittstelle

erstellt am: 20. Okt. 2021 14:23    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

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
Tastenhauer


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

Beiträge: 1841
Registriert: 3.20.

● PEnix@home
● W10 Pro Build19041.1237
● Drafting V17~V20.4.0
● Modeling V17~V20.4.0c
● @Scirotec201804

erstellt am: 22. Okt. 2021 15:51    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 Seele 10 Unities + Antwort hilfreich

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


  • "setx ichbins Wolfgang"
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 ESRJava 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
Tastenhauer


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

Beiträge: 1841
Registriert: 3.20.

● PEnix@home
● W10 Pro Build19041.1237
● Drafting V17~V20.4.0
● Modeling V17~V20.4.0c
● @Scirotec201804

erstellt am: 22. Okt. 2021 15:58    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 Seele 10 Unities + Antwort hilfreich

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 ESRJava 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
Tastenhauer


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

Beiträge: 1841
Registriert: 3.20.

● PEnix@home
● W10 Pro Build19041.1237
● Drafting V17~V20.4.0
● Modeling V17~V20.4.0c
● @Scirotec201804

erstellt am: 22. Okt. 2021 16: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 Nur für Seele 10 Unities + Antwort hilfreich

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 ESRJava 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


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

Beiträge: 350
Registriert: 11.06.2003

Intel Xeon CPU E5-1650 v3@3,50 GHz, 32GB RAM
NVidia Quadro K4200
Win10-64Bit
Elements/Direct v20.4.1.0
PartLibrary, Surfacing, 3D-PDF,
3D-Access, Unigraphics-Schnittstelle

erstellt am: 05. Nov. 2021 15:02    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


RefreshEnv-DOS-Test.cmd.txt

 
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.



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

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 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 Seele 10 Unities + Antwort hilfreich

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
Tastenhauer


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

Beiträge: 1841
Registriert: 3.20.

● PEnix@home
● W10 Pro Build19041.1237
● Drafting V17~V20.4.0
● Modeling V17~V20.4.0c
● @Scirotec201804

erstellt am: 19. Nov. 2021 19:38    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 Seele 10 Unities + Antwort hilfreich

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 ESRJava 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 >>)

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)2021 CAD.de | Impressum | Datenschutz