| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Creo |
| |
 | Windows Server 2025 - Was ist neu im Microsoft Server-Betriebssystem, eine Pressemitteilung
|
Autor
|
Thema: INPUT Makro (1365 mal gelesen)
|
Ex-Mitglied
|
erstellt am: 03. Jun. 2004 10:33 <-- editieren / zitieren -->
Hallo, hier meine Problemstellung: Es sollen zyklisch Zeichnungen in Form von ME10-Makrodateien mittels INPUT eingelesen, ausgeführt (=Zeichnung auf Bildschirm erstellen)und danach abgespeichert werden (letztlich zur DXF konvertiert werden). Jetzt kann aber nach Ausführen des INPUT -Befehls das eingelesene Makro nicht sofort ausgeführt werden (z.B. in einem Schleifendurchlauf). Gibt es ein workaround zu diesem Problem, was gibt es sonst für Möglichkeiten?
|
Dittrich Mitglied SysAdmin
 
 Beiträge: 388 Registriert: 06.06.2000 Wenn es nicht geht, probier was anderes, vielleicht geht es dann auch nicht.
|
erstellt am: 03. Jun. 2004 10:37 <-- editieren / zitieren --> Unities abgeben:         
Ich hatte noch nie Probleme damit, wenn die Ausführung des Makros aus dem Inputfile kam. Bsp: Das steht in einer Datei die per Input geladen wird DEFINE Mal_ma_was_schoenes ... END_DEFINE Mal_ma_was_schoenes Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 03. Jun. 2004 10:47 <-- editieren / zitieren -->
Hallo und Danke für die promte Reaktion. Hab ich auch gleich ausprobiert, funktioniert aber leider auch nicht. Was hat es mit dem Schlüsselwort "IMMEDIATE" aufsich. hilft das vielleicht werter?. Da hatte ich aber schon eine MEldung beim Laden des Makros (mit diesem Befehl), offentsichtlich versucht ME10, diesen Befehl bereits beim Laden auszuführen.
|
rhoffmann Mitglied Techniker

 Beiträge: 58 Registriert: 22.01.2003
|
erstellt am: 03. Jun. 2004 11:01 <-- editieren / zitieren --> Unities abgeben:         
Hallo Björn, mit untenstehendem Makro lade ich Zeichnungen. Die Parameter werden in einem Windowsprogramm festgelegt. Danach schreibt das Windows-Programm untenstehendes Makro. Dieses wird bei mir dann per Funktionstaste aufgerufen. Denkbar ist auch, diesem Makro fortlaufend neue Parameter mitzugeben und dementsprechend neu aufzurufen. DEFINE EVA_AUTOMACRO PARAMETER SUB PARAMETER Dateiname TRAP_ERROR IF (SUB=1) LOAD SUBPART Dateiname ELSE LOAD Dateiname END_IF IF (CHECK_ERROR) DISPLAY('Datei '+Dateiname+' nicht gefunden oder ist keine ME10-Datei') CANCEL END_IF END_DEFINE Der Aufruf sieht im ersten Fall so aus: EVA_AUTOMACRO 0 "D:\Zchng\schaefers\G_0134-1_02.mi" MfG Robert Hoffmann http://home.t-online.de/home/eva-hoffmann
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 03. Jun. 2004 11:15 <-- editieren / zitieren -->
Hallo und erstmal danke für die schnellen Antworten. Den Trick über ein zusätzliches Makro, in dem die Zeichnung geladen wird, hab ich auch schon ausprobiert. Aber leider kann ich auch dann im aufrufenden Makro die Zeichnung nicht auf dem Bildschirm aufbauen lassen. Das geht nur, wenn ich nach dem INPUT bzw. nach dem Rücksprung ins aufrufende Makro dieses aufrufende Makro abbreche und von der Konsole aus das neu geladene Makro aufrufe. |
Dittrich Mitglied SysAdmin
 
 Beiträge: 388 Registriert: 06.06.2000 Wenn es nicht geht, probier was anderes, vielleicht geht es dann auch nicht.
|
erstellt am: 03. Jun. 2004 11:26 <-- editieren / zitieren --> Unities abgeben:         
vielleicht kannst Du ja mal ein kleines Beispiel posten. Man kann in Makros keine Makros verwenden, die noch nicht definiert sind. Man kann aber den Namen als Dummy vordefinieren und in der Inputdatei "umdefinieren", sodaß im auf den Input folgenden Aufruf nicht der Dummy, sondern das umdefinierte Makro ausgeführt wird.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 03. Jun. 2004 11:33 <-- editieren / zitieren -->
Hallo, hier ein Auszug aus dem Makro: let zaehler 0 REPEAT let zaehler (zaehler+1) let datei_name (READ_LTAB 'dateien' zaehler 1) let mi_datei (mi_datei_pfad + '/' + datei_name + '.mi') display ('Dateiname='+datei_name) DELETE ALL CONFIRM INPUT verzeichnis + '/' + datei_name) display ('Platte geladen ') platte {Aufruf des Makros hier } display ('Platte aufgerufen') { DELETE_MACRO platte } WINDOW FIT STORE MI ALL DEL_OLD mi_datei UNTIL (zaehler = anz_zeilen) Die zu ladende Makrodatei hat den aufbau: DEFINE Platte ... ... END_DEFINE Das mit dem Dummy hab ich vorhin auch ausprobiert, hat aber nicht funktioniert, wie sollte denn so eine Dummydefinition aussehen? |
Dittrich Mitglied SysAdmin
 
 Beiträge: 388 Registriert: 06.06.2000 Wenn es nicht geht, probier was anderes, vielleicht geht es dann auch nicht.
|
erstellt am: 03. Jun. 2004 11:50 <-- editieren / zitieren --> Unities abgeben:         
Einfach nur ein Makro namens Platte DEFINE Platte LOCAL P0 LET P0 1 END_DEFINE Definiert irgendwo in den Makros. Nach dem Input der Datei wird es durch den dortigen Inhalt überschrieben. Wenn nach dem Input Platte ausgeführt wird sollte es der neue Inhalt sein. Ist nur ein Platzhalter, und wenn ich es mir rechtüberlege vielleicht garnicht nötig. Welche Fehlermeldung erhältst Du denn, wenn du so eine Datei interaktiv "inputtest". Ohne dein Obermakro. Wenn du das per cut&paste eingefügt hast, fehlt da aber die eine oder andere Klammer. DEFINE Platte .. END_DEFINE Platte
[Diese Nachricht wurde von Dittrich am 03. Jun. 2004 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 03. Jun. 2004 11:55 <-- editieren / zitieren -->
Die Fehlermeldung OHNE Dummydatei lautet: *** Makro Platte ist nicht definiert Ich hab jetzt aber das mit dem Dummymakro ausprobiert. Da kam dann zwar keine Fehlermeldung, aber der Inhalt des Dummymakros wurde NICHT durch den Dateiinhalt überschrieben, so das der Aufruf vom Makro "Platte" nicht das gewünschte Ergebnis erzielte. |
Dittrich Mitglied SysAdmin
 
 Beiträge: 388 Registriert: 06.06.2000 Wenn es nicht geht, probier was anderes, vielleicht geht es dann auch nicht.
|
erstellt am: 03. Jun. 2004 11:58 <-- editieren / zitieren --> Unities abgeben:         
Bist Du sicher das der Input klappt? schreib doch mal in die datei ein DISPLAY rein. Ich habe das gerade mal probiert, um sicher zu gehen, das ich dir keinen Quatsch erzähle. Eine Schleife habe ich nicht gemacht, aber das funktioniert. Egal ob der Aufruf von Platte in der Inputdatei stand oder im Obermakro. Und auch ohne Dummy. Ich vermute bei deinem Input geht was schief. Entweder er findet die Datei nicht, vielleicht hast Du ja TRAP_ERROR an, sodaß du keine Fehlermeldung bekommst. Oder die Definition des Makros Platte ist nicht korrekt.
[Diese Nachricht wurde von Dittrich am 03. Jun. 2004 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
H.annes Mitglied CAD-Pfriemler
 
 Beiträge: 482 Registriert: 02.07.2001 OSDD 8.7 - 13.20 ; OSDM 13.00
|
erstellt am: 03. Jun. 2004 12:10 <-- editieren / zitieren --> Unities abgeben:         
Mahlzeit! Ein Problem vom OSDD ist, daß die deutsche Doku nicht immer komplett bzw. nicht auf dem neuesten Stand ist. In der englischen Doku steht zu INPUT IMMEDIATE: Zitat: For option IMMEDIATE, the <filename> must not be a variable, and the file <filename> must exist at the time of call to INPUT IMMEDIATE.
Außerdem steht zu INPUT: Zitat: The INPUT function should be used inside macros only with the IMMEDIATE option.
Damit fällt für Dein Problem die Option IMMEDIATE weg. Es gibt aber einen Schmäh dabei: das INPUT wird erst dann ausgefüht, wenn NACH dem INPUT irgendein Wert eingelesen wird, und dieser Wert VOR dem INPUT geliefert wird. Wir lösen das immer so: INPUT "dummyfile" INPUT "richtigesMakro.mac" READ Dummywert Der "dummyfile" enthält nur eine Zeile: Zitat: 0
Alle INPUT-Befehle, die hintereinander stehen, werden in umgekehrter Reihenfolge ausgeführt. Das READ erwartet eine Eingabe - die INPUT liefern Daten - daherwerden die INPUT der Reihe nach so lange ausgeführt, bis das READ befriedigt ist  Kling blöd - ist es auch. Aber es funktioniert  Hannes ------------------ undmiadanwosmadan undmiadadnawosondasoisdeswosmadan undwosondasdammara
[Diese Nachricht wurde von H.annes am 03. Jun. 2004 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 03. Jun. 2004 13:35 <-- editieren / zitieren -->
Hallo und Danke an alle, die geholfen haben. Der Tip von H.annes hat tatsächlich funktioniert.
|
H.annes Mitglied CAD-Pfriemler
 
 Beiträge: 482 Registriert: 02.07.2001 OSDD 8.7 - 13.20 ; OSDM 13.00
|
erstellt am: 03. Jun. 2004 14:26 <-- editieren / zitieren --> Unities abgeben:         
Zitat: Original erstellt von bduebler: Hallo und Danke an alle, die geholfen haben. Der Tip von Hannes hat tatsächlich funktioniert.
ist auch altbewährt ...  es ist zwar immer wieder schwierig zu erklären (auch mein Gehirn sträubt sich noch, diese Funktionalität zu kapieren), aber das ist schon Routine, um nicht zu sagen "Dogma": INPUT "dummy", INPUT makrofiles, READ Dummy. In UNIX hats noch ohne "dummyfile" funktioniert: INPUT "| echo 0" INPUT Makrofiles READ Dummywert aber am PC geht das nicht mehr. Gruß, Hannes PS: und die Probleme mit der deutschen Doku werden hoffentlich ENDLICH in der Version 13 beseitigt! Bis dahin gilt: wenn ich im deutschen Manual nichts finde, schau ich im englischen Handbuch nach. ------------------ undmiadanwosmadan undmiadadnawosondasoisdeswosmadan undwosondasdammara Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 03. Jun. 2004 15:35 <-- editieren / zitieren -->
Hallo, jetzt hatte ich schon gedacht, ich hab die Katze im Sack, aber sofort das nächste Problem. Ab dem 26ten Schleifendurchlauf kommt beim INPUT plötzlich die Meldung "´Dateiname´ für Input eingeben". Ein Test mit Diyplay hat aber ergeben, das die Variable sehrwohl den korrekten 26ten Dateinamen enthält, Plattenplatz ist auch genug da und das 26te Makrofile läßt sich von der Konsole aus problemlos einlesen. Was ist jetzt wieder Los? Danke und Grüße Björn |
Dieter Kotsch Mitglied
 
 Beiträge: 311 Registriert: 10.08.2002
|
erstellt am: 03. Jun. 2004 16:02 <-- editieren / zitieren --> Unities abgeben:         
|
Ex-Mitglied
|
erstellt am: 03. Jun. 2004 16:20 <-- editieren / zitieren -->
Hallo, hat jemand eine Idee, welche Variable das sein kann und wo ich diese finde? Danke und Grüße Björn
|