| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Creo |
| |
 | Club Car gewinnt mit Creo Simulation Live, eine Pressemitteilung
|
Autor
|
Thema: wenn externes Ereignis passiert dann... (1340 / mal gelesen)
|
Greskamp Mitglied Ingenieur
  
 Beiträge: 523 Registriert: 12.03.2003 MS: Windows 10 64bit OSD: 20.1 M020 ModelManager: 20.1 M020 NX 1899 TC 12.3
|
erstellt am: 30. Nov. 2018 09:26 <-- editieren / zitieren --> Unities abgeben:         
Hallo, habe mal eine Frage ob sowas generell möglich wäre. Kann man was ausführen lassen, also ein Programm, wenn extern (also irgendwo anders) was passiert? Zum Beispiel, kann ich eine Datei überwachen, und wenn diese sich ändert wird das Programm ausgeführt. Oder kann von extern ein Programm im Creo/Elements anstoßen? Für Tipps wäre ich sehr dankbar. ------------------ Gruß Peter Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
der_Wolfgang Moderator Tastenhauer
     
 Beiträge: 2280 Registriert: 3.20. ● PE60+80@home ● W10 Pro Build10.0.19045.5608 ● Drafting V17~V20.7 ● Modeling V17~V20.7 ● Windchill 12.1.2.6 ● UWGM Client 13.0.0.1
|
erstellt am: 02. Dez. 2018 14:17 <-- editieren / zitieren --> Unities abgeben:          Nur für Greskamp
Zitat: generell möglich wäre
Ja, nein, klaro, kommt drauf an.... Du könntest eine sogenannte geplante Aufgabe in Windows einstellen. Die würde dann vielleicht jede Stunde in ein Verzeichnis x gucken. Dort würde sie gucken ob DateiY neuer ist als DateiZ. Wenn ja würde sie Programm M aufrufen und dessen Start irknwii mit den Dateinamen versorgen. Hier wäre die Powershell zu empfehlen, denke ich, denn die kann mit Zeitstempeln von Dateien umgehen. Mit der .net Technologie kannst Du ein laufendes Modeling (AFAIK) auch von aussen triggern. Dann brauchst Du eine Anwendung, die die Überwachung durchführt und im Falle des Falles dann Modeling 'Bescheid' gibt.
Wenn Modeling läuft könntest du auch eine LISP Funktion in das interactive event hängen (siehe .../OSD_Help20/documentation/integration_kit/reference/events.html#standard-events) . Diese Funktion prüft dann (in Intervallen!!) ob DateiZ jünger als DateiY im Verzeichen X ist und wenn dann...
Das *SD-ENTER-COMMAND-EVENT* klingt auch gut. Aber wegen der (aus Entwickler Sicht döseligen) Preselection bin ich mir nicht nicht sicher wann dieses Event 'gefeuert' wird (nein ich werde jetzt kein Modeling starten und das mal testen!) _______________ Ich wünsche Euch einen netten 1. Advent! ------------------ ● 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 |
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: 02. Dez. 2018 14:35 <-- editieren / zitieren --> Unities abgeben:          Nur für Greskamp
Die Antworten auf die drei Fragen sind: Ja, ja und ja :-) Und es gibt zur Umsetzung viele Ansätze. Zum Beispiel in Windows eingebaute Mechanismen zur Überwachung von Änderungen im Dateisystem ("FileSystemWatcher") oder periodische Dateiüberprüfungen via Windows-Task. Welcher Ansatz zu wählen ist, hängt von den genauen Randbedingungen ab. Zum Beispiel davon, wie verlässlich die Überwachung sein soll, was genau als Reaktion auf Änderungen passieren soll, wieviel Programmierkenntnisse man hat, welche Programmiersprache verwendet werden soll und in diesem Fall auch, ob die Überwachung direkt aus CoCreate Modeling heraus geschehen soll oder muss. Zur Eingrenzung würde es helfen, wenn wir mehr erfahren könnten darüber, welche Datei oder welche Dateien überwacht werden sollen, von was oder wem sie geschrieben werden, und wie auf Änderungen reagiert werden soll. ------------------ CoCreate Modeling FAQ: http://www.clausbrod.de/CoCreateModeling/ - Blog: http://www.clausbrod.de/Blog
[Diese Nachricht wurde von clausb am 02. Dez. 2018 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Greskamp Mitglied Ingenieur
  
 Beiträge: 523 Registriert: 12.03.2003
|
erstellt am: 03. Dez. 2018 07:24 <-- editieren / zitieren --> Unities abgeben:         
Guten Morgen die Herren, erst mal vielen Dank für die Rückmeldung und schön das es machbar ist. 2 Dinge könnte ich mir vorstellen. 1. Ich überwache über lisp eine Datei, und wenn sich diese ändert wird ein anderes lisp Programm gestartet oder das lisp Programm tut dies und das. 2. Ich kann ein lisp Programm extern ansteuern, dann würde ich eine Datei z.B. über Python überwachen, das bekomme ich hin. Dann müsste ich also wissen wie ich extern ein lisp Programm im Modeling anstoße. Im Grund möchte ich, wenn eine Datei z.B. mit Länge, Breite und Höhe eines Bauteils erstellt oder geändert wird, das dann ein Programm im Hintergrund läuft was das Teil entsprechend ändert. Wenn ich über Lisp überwachen kann, brauche ich kein externes Programm, wenn nicht, baue ich mir das Programm zur Überwachung, würde dann aber gerne wissen wie ich dann ein lisp Programm starte. Was ja ginge, einfach das Modeling jedes mal starten und dann das lisp Programm starten wo die Datei ausgelesen wird, aber das finde ich jetzt nicht elegant. Wäre schön wenn mir hier jemand einen Tipp geben könnte. ------------------ Gruß Peter [Diese Nachricht wurde von Greskamp am 03. Dez. 2018 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AlexG Mitglied
 
 Beiträge: 133 Registriert: 05.04.2013 CP/M; 6510@0,985249 MHz; 64KB RAM; 20KB ROM; MOS 6569
|
erstellt am: 03. Dez. 2018 11:42 <-- editieren / zitieren --> Unities abgeben:          Nur für Greskamp
Hallo Peter, anbei mal ein paar Zeilen Lispcode, welcher eine Datei über das Änderungsdatum überwacht. Das ganze hängt am Interactive Event. Es wird also jedes mal bevor der Benutzer eine Eingabe tätigt, geprüft ob sich das Speicherdatum der Datei geändert hat. Alternativ könnte man auch auf die Dateigröße schauen, ist aber relativ sinnfrei und daher auch auskommentiert... Ich hoffe du bekommst eine Idee davon wie man so etwas mittels Lisp überprüfen kann. Wenn ich von aus außerhalb den OSD ansprechen will, dann lässt sich das auch gut via DDE bewerkstelligen. Gruß, Alex ------------------ Computer sind unbrauchbar. Sie können nur Fragen beantworten. Pablo Picasso, Maler [Diese Nachricht wurde von AlexG am 03. Dez. 2018 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Greskamp Mitglied Ingenieur
  
 Beiträge: 523 Registriert: 12.03.2003
|
erstellt am: 03. Dez. 2018 12:47 <-- editieren / zitieren --> Unities abgeben:         
Hallo Alex, auch dir erst mal danke für deine Codezeilen, damit kann man dann schon mal etwas ausprobieren. ABER DDE habe ich vielleicht mal gehört aber wie ich das anwenden soll weiß ich jetzt beim besten wissen nicht. Sorry, aber bin kein Informatiker. Aber DDE habe ich IKIT zumindest mal gefunden. Heißt das, das ich im Excel oder einer .bat Datei den Befehl
Code:
(display "Hallo Welt")
eingeben kann und das wird im Modeling ausgeführt? ------------------ Gruß Peter Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AlexG Mitglied
 
 Beiträge: 133 Registriert: 05.04.2013 CP/M; 6510@0,985249 MHz; 64KB RAM; 20KB ROM; MOS 6569
|
erstellt am: 03. Dez. 2018 13:34 <-- editieren / zitieren --> Unities abgeben:          Nur für Greskamp
Hallo Peter, "verbrennt den Hexer!" "Ich bin Informatiker..." "FORMATIERT IHN!" ... Nein, Informatiker bin ich auch nicht und davon auch sehr weit weg - habe lediglich ein gesundes Interesse. Also DDE steht für Dynamic Data Exchange und ist ein Standard der es Anwendungen erlaubt untereinander zu kommunizieren und dieser Standard wird auch vom Solid Designer unterstützt. Und es ist eben genau für einen solchen Anwendungsfall wie den von dir beschriebenen gedacht. Aber ich fürchte fast, dass die wirklichen Informatiker die das gerade lesen anfangen nach Steinen zu greifen die sie nach mir werfen können, da DDE wohl schon recht veraltet ist. Allerdings hat es mir bis dato immer gute Dienste geleistet. Und weil es vielleicht anderen Menschen weiter bringt, folgt eine kurze Anleitung. 1.) Zunächst benötigen wir ein Tool mit dem sich die DDE Befehle absetzen lassen. Dazu habe ich mir die Datei ddeclient.exe aus der Installation von Emacs (ein kostenfreier Texteditor) "gemopst". Runterladen installieren/entpacken und nach der ddeclient.exe suchen. 2.) Nun kann man exemplarisch über das Konsolenfenster oder via Batchfile die ddeclient.exe ausführen und dem SolidDesigner Lispbefehle ausführen lassen. Im Konsolenfenster einfach mal folgendes eingeben: Code: echo (display "Hallo Welt") | C:\temp\ddeclient.exe PESD GENERAL
Der Teil zwischen dem echo und dem | (Pipe) gibt den auszuführenden Lispbefehl mit. Dieser wird dann an die ddeclient.exe mittels dem Pipe übergeben. Das PESD gibt an mit welchem "Server oder Service" kommuniziert werden soll und PESD steht in diesem Fall für den SolidDesigner und da in diesem Fall mit dem Modeling geredet werden soll muss als "Topic" GENERAL eingegeben werden. Das muss auch in der Regel nicht geändert werden. Sollen mehrere Lisp Befehle hintereinander ausgeführt werden, dann empfiehlt es sich diese in eine eigene Datei zu packen und diese durch das Modeling laden zu lassen. Also in etwa so: Code: echo (load "path/to/lispfile") | C:\temp\ddeclient.exe PESD GENERAL
Für viele (Programmier-)Sprachen stehen allerdings auch eigene DDE Module zur Verfügung. So lässt sich mit Sicherheit auch aus Python direkt ein DDE Aufruf tätigen um dem SolidDesigner zu sagen was er denn nun machen soll. Wollte hier nur mal kurz zeigen wie man auf Windows-Konsolen-Ebene mit dem OSD kommunizieren kann. Gibt auch einen tollen Beitrag über die DDE Kommunikation vom SolidDesigner auf ClausBs Website. Ich hoffe ich darf das hier einfach so verlinken: http://www.clausbrod.de/cgi-bin/view.pl/CoCreateModeling/FaqDde Ich hoffe das nun alle Klarheiten beseitigt sind und wünsche viel Spaß. Gruß, Alex ------------------ Computer sind unbrauchbar. Sie können nur Fragen beantworten. Pablo Picasso, Maler [Diese Nachricht wurde von AlexG am 03. Dez. 2018 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Greskamp Mitglied Ingenieur
  
 Beiträge: 523 Registriert: 12.03.2003
|
erstellt am: 03. Dez. 2018 14:13 <-- editieren / zitieren --> Unities abgeben:         
Hallo Alex, mit einem gesunden Interesse würde ich mich auch bezeichnen, aber vielleicht noch nicht allzu lange. Zwar länger was das programmieren in lisp angeht, aber nicht die Themen daneben. Man super, läuft alles. Auch die Seite von clausb kenne ich schon, aber manchmal ist es einfach leichter wenn man das noch mal etwas genauer erklärt bekommt. Zumal der Emacs Link auf der Seite nicht mehr geht, da verliert man dann schnell den Glauben das es noch geht. @ Clausb: keine Kritik, deine Seite ist super, da ist genau das Thema DDE drin was Alex eben beschrieben hat. Irgendwie hat dein Link auf die Seite nicht geklappt, noch mal der Versuch von mir. http://www.clausbrod.de/cgi-bin/view.pl/CoCreateModeling/FaqDde Man super, dann habe ich jetzt zumindest mal Ideen und Anhaltspunkte wie man sowas umsetzen kann. Leider kann ich wohl nicht mehr als 1x 10 Unities vergeben, sonst hätte es jetzt geregnet. Aber mal danke an alle dir hier immer so bereitwillig ihr Wissen teilen. ------------------ Gruß Peter Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
der_Wolfgang Moderator Tastenhauer
     
 Beiträge: 2280 Registriert: 3.20. ● PE60+80@home ● W10 Pro Build10.0.19045.5608 ● Drafting V17~V20.7 ● Modeling V17~V20.7 ● Windchill 12.1.2.6 ● UWGM Client 13.0.0.1
|
erstellt am: 03. Dez. 2018 16:49 <-- editieren / zitieren --> Unities abgeben:          Nur für Greskamp
Zitat: Original erstellt von Greskamp: Aber mal danke an alle dir hier immer so bereitwillig ihr Wissen teilen.
Dafür ist unser Forum ja da. Wenn Du Modeling von aussen steuerst, must Du Dir ggf. auch Gedanken machen was passieren soll, wenn Modeling gar nicht läuft (Starten, was Ausführen und Beenden?). Ein 'Modeling tut nicht' müsstest du also in den Überwachungszweig einflechten. Wenn du etwas ins interactive event hängst.. überlege dir einen Mechanismus, der dafür sorgt, das der eigentliche Check vielleicht nicht öfter als 1 mal in 10minuten durchgeührt wird (oder so was ähnliches). ------------------ ● 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 |
Greskamp Mitglied Ingenieur
  
 Beiträge: 523 Registriert: 12.03.2003
|
erstellt am: 04. Dez. 2018 08:02 <-- editieren / zitieren --> Unities abgeben:         
die Seite von Wikipedia hatte ich mit als erstes bezügliche DDE durchgelesen, aber dadurch bekommt man es noch nicht zum laufen.  Danke für den Tipp wegen der Überwachung, glaube das würde ich wieder mit Python machen, dort kann man Prozesse mit Namen überwachen, und wenn die nicht laufen dann mach dies oder das.. ------------------ Gruß Peter Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AlexG Mitglied
 
 Beiträge: 133 Registriert: 05.04.2013 CP/M; 6510@0,985249 MHz; 64KB RAM; 20KB ROM; MOS 6569
|
erstellt am: 04. Dez. 2018 08:35 <-- editieren / zitieren --> Unities abgeben:          Nur für Greskamp
1987 think... auf der Welt schon, und zu diesem Zeitpunkt war die Welt sogar noch in Ordnung. Wie das halt so ist, wenn man sich drauf freut bald eingeschult zu werden und man noch zwei Jahre von seinem ersten eigenem C64 entfernt ist. ------------------ Computer sind unbrauchbar. Sie können nur Fragen beantworten. Pablo Picasso, Maler Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Greskamp Mitglied Ingenieur
  
 Beiträge: 523 Registriert: 12.03.2003
|
erstellt am: 04. Dez. 2018 08:44 <-- editieren / zitieren --> Unities abgeben:         
LISPist eine Familie von Programmiersprachen, die 1958 erstmals spezifiziert wurde und am Massachusetts Institute of Technology (MIT) in Anlehnung an den ungetypten Lambda-Kalkül entstand. Es ist nach Fortran die zweitälteste Programmiersprache, die noch verbreitet ist. ------------------ Gruß Peter Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |