Aufgrund der Diskussion hier, hab ich das ganze mal getestet.
Mit dem Script kann man ein Fenstermakro an auf einer bestimmten Seite mit X- & Y-Koordinaten einfügen.
Mir ist nicht ganz klar was passiert wenn das Laden des Makros (übers Netzwerk) länger dauert. Denke aber dann würde es nicht funktionieren.
Hab hier im Beispiel mal eine Sekunde Wartezeit eingebaut.
Und die Maus sollte beim Ausführen nicht bewegt werden. Denke könnte man auch irgendwie blocken.
Mal ne Idee: Man wartet auf das Resultat des CLI fürs einfügen.
Danke an SgbMarkus für das Bereitstellen des Codes.
using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; using Eplan.EplApi.ApplicationFramework; using Eplan.EplApi.Scripting; public class Script { [Start] public void Action() { InsertMacro(@"C:\Test\Test.ema", "/2"); } private void InsertMacro(string macroFileName, string pageName) { Edit(pageName); Parallel.Invoke(() => InsertMacro(macroFileName), KeyPress); } private static void InsertMacro(string macroFileName) { ActionCallingContext acc = new ActionCallingContext(); acc.AddParameter("Name", "XMIaInsertMacro"); acc.AddParameter("filename", macroFileName); acc.AddParameter("variant", "0"); CommandLineInterpreter cli = new CommandLineInterpreter(); cli.Execute("XGedStartInteractionAction", acc); } private static void Edit(string pageName) { ActionCallingContext acc = new ActionCallingContext(); acc.AddParameter("PAGENAME", pageName); // Full page name acc.AddParameter("X", "100"); acc.AddParameter("Y", "100"); CommandLineInterpreter cli = new CommandLineInterpreter(); cli.Execute("edit", acc); } private void KeyPress() { Thread.Sleep(1000); SendKeys.SendWait("{ENTER}"); } }
Hallo Johann,
habe mich auch daran probiert, absetzten funktioniert ja auch, aber wie kann man dann das absetzten beenden um anschließend noch ein anderes Makro zu plazieren???
grüße
Frank
Ich hab kurz getestet mal nen SendKey mit ESC zu machen, aber klappt nicht.
Was gehen könnte aber ich nicht getestet habe ist die Action XGedEscapeAction. Wenn Du in EPLAN die ESC-Taste nach Makro einfügen drückst, wird die Action aufgerufen.
Das Makro wurde nicht von alleine Platziert. Der Befehl “SendKeys.SendWait(“{ENTER}”);” hat irgendwie keine Wirkung. Haben Sie eine Lösung ?
Bei mir funktioniert es. Man darf aber Tastatur und Maus nicht bewegen :)
Hallo Johann
Wir versuchen seit geraumer Zeit Fenstermakros mit Hilfe einer Schleife, auf ein oder mehrere Seitenmakros, zu setzen.
Das Skript funktioniert bei einem einzigen super. sobald aber mehrere in Spiel kommen, funktioniert nur das letzte absetzen. Die vorherigen öffnen die Seite, positioniert das Fenstermakro, bleiben jedoch am Curser hängen. Wir sind uns sicher, dass es eine bestimmte Aktion von Eplan geben muss, die jeden Schleifendurchgang am Ende abschliesst.
Ich hoffe du kennst eine Möglichkeit und würde mich auf deine Hilfe freuen.
Ich denke es ist ein Timing Problem. Eventuell hilft hier ne Pause einzubauen.
Generell empfehle ich aber für solche Vorhaben die EPLAN API