Werden Makros in EPLAN über die Funktion “Makro aktualisieren” erneuert, wird leider der Wertesatz auf den Ursprungswert gesetzt.
Mit diesem Script wird der Wertesatz nicht verändert.
Die Action überschreibt die eigentlich EPLAN-Action. Da es hier zu einem Bufferoverflow kommen würde muss die eigentliche Action mit dem ActionCallingContext ausgestattet werden.
XGedUpdateMacroAction (1606 Downloads )
using Eplan.EplApi.ApplicationFramework;
using Eplan.EplApi.Scripting;
namespace ibKastl.Scripts.Global
{
class XGedUpdateMacroAction_Overload
{
[DeclareAction("XGedUpdateMacroAction", 50)] // Overwrite with ordinal
public void Action()
{
ActionCallingContext actionCallingContext = new ActionCallingContext();
actionCallingContext.AddParameter("AutoAssignLastUsedRecord", "1");
Eplan.EplApi.ApplicationFramework.Action action = new ActionManager().FindBaseActionFromFunctionAction(false); // Full Namespace, couse of compiler warning in EPLAN
action.Execute(actionCallingContext);
}
}
}
Toller Ansatz!!! Wusste garnicht, dass das mit Scripting möglich ist. Ich erlaube mir dennoch dich zu Korrigieren: Nicht der fehlende ActionCallingContext führt zum Stapelüberlauf sondern die überlagerte Action ohne oder mit gleichem Ordinal (overload Level), wie du im Code-Kommentar ja auch geschrieben hast.
Das ganze ist erst ab Version 2.3 möglich da ActionManager in 2.2.5 noch keine FindBaseActionFromFunctionAction-Methode hatte. Ist aber auch nicht notwendig, da die Action in der 2.2.5 scheinbar standardmäßig auf AutoAssignLastUsedRecord gesetzt ist.
MfG Daniel
Oooh, damit kann man auch lustig Kollegen trollen wenn man was in bestehende Scripte versteckt…hihi