Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  PTC Creo Elements/Programmierung
  wenn externes Ereignis passiert dann...

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 Creo
Autor Thema:  wenn externes Ereignis passiert dann... (1296 mal gelesen)
Greskamp
Mitglied
Ingenieur


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

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

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
Ehrenmitglied V.I.P. h.c.
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: 2017
Registriert: 3.20.

● PE60+80@home
● W10 Pro Build19044.2364
● Drafting V17~V20.5.1
● Modeling V17~V20.5.1

erstellt am: 02. Dez. 2018 14: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 Greskamp 10 Unities + Antwort hilfreich

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



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: 02. Dez. 2018 14:35    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 Greskamp 10 Unities + Antwort hilfreich

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


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

Beiträge: 523
Registriert: 12.03.2003

erstellt am: 03. Dez. 2018 07: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

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



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

Beiträge: 132
Registriert: 05.04.2013

CP/M; 6510@0,985249 MHz; 64KB RAM; 20KB ROM; MOS 6569

erstellt am: 03. Dez. 2018 11:42    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 Greskamp 10 Unities + Antwort hilfreich


watchdog.lsp

 
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


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

Beiträge: 523
Registriert: 12.03.2003

erstellt am: 03. Dez. 2018 12:47    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 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



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

Beiträge: 132
Registriert: 05.04.2013

CP/M; 6510@0,985249 MHz; 64KB RAM; 20KB ROM; MOS 6569

erstellt am: 03. Dez. 2018 13:34    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 Greskamp 10 Unities + Antwort hilfreich

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


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

Beiträge: 523
Registriert: 12.03.2003

erstellt am: 03. Dez. 2018 14:13    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 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
Ehrenmitglied V.I.P. h.c.
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: 2017
Registriert: 3.20.

● PE60+80@home
● W10 Pro Build19044.2364
● Drafting V17~V20.5.1
● Modeling V17~V20.5.1

erstellt am: 03. Dez. 2018 16:49    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 Greskamp 10 Unities + Antwort hilfreich

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


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

Beiträge: 523
Registriert: 12.03.2003

erstellt am: 04. Dez. 2018 08: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

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



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

Beiträge: 132
Registriert: 05.04.2013

CP/M; 6510@0,985249 MHz; 64KB RAM; 20KB ROM; MOS 6569

erstellt am: 04. Dez. 2018 08:35    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 Greskamp 10 Unities + Antwort hilfreich

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


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

Beiträge: 523
Registriert: 12.03.2003

erstellt am: 04. Dez. 2018 08:44    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

LISP
ist 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

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