Hallo Zusammen!
Bin relativ neu was Scripting in Eplan angeht und direkt erst mal auf ein Problem gestoßen, bei welchem ich mir nicht mehr zu helfen weiß.
Problemstellung:
Durch ein eigenes Tool, werden Schaltpläne automatisch generiert. Beim generieren wird jeder Function ( https://www.eplan.help/en-us/Infoportal/Content/api/2024/DataModelHierarchyOverview.html ) innerhalb des Eplans eine GUID zugewiesen, welche später benötigt wird.
Sollte der Schaltplan manuell geändert werden und man jetzt eine Function kopiert und irgendwo anders einfügt, so habe ich zwei Function, welche die gleiche GUID besitzen.
Das wäre problematisch...
Lösungsansatz:
Ein Script, welches das zu kopierende Objekt bearbeitet und die Eigenschaft (sofern vorhanden) löscht, also auf einen leeren String setzt.
--------------------------------------------------------------------------------------------------------
Sofern ich das nicht falsch interpretiert habe, erstellt Eplan beim kopieren ein Abbild als XML und importiert dieses beim einfügen.
Eplan-Beschreibung Kopiervorgang:
Last called action from (context)menu: GfDlgMgrActionIGfWind /function:Copy
Ordinal: 20
Command text : Start:Zwischenablage:Kopieren
Command Id : 35040
--------------------------------------------------------------------------------------------------------
Eplan-Beschreibung Einfügevorgang:
Last called action from (context)menu: GfDlgMgrActionIGfWind /function:Paste
Ordinal: 20
Command text : Start:Zwischenablage:Einfügen
Command Id : 35037
Current interaction :
- XMIaClipboardPaste
--------------------------------------------------------------------------------------------------------
Das erste Problem ist bereits, das ich nicht spezifizieren kann das die Funktion nur beim Einfüge- oder Kopiervorganges ausgeführt werden soll, da bisher bei meinen Tests nur "GfDlgMgrActionIGfWind" funktioniert hat. Diese Aktion tritt aber beim Kopieren, Ausschneiden, Löschen, Einfügen, ... auf.
Das zweite Problem ist, das ich nicht weiß wie ich auf den Context komme, um mögliche Properties zu bearbeiten.
Code:
[DeclareEventHandler("onActionStart.String.GfDlgMgrActionIGfWind")]
public void Function()
{
MessageBox.Show("Interrupted by CopyHandler");
#if DEBUG
System.Diagnostics.Debugger.Break();
# endif
}
Vielleicht hat jemand ähnliches schon einmal gemacht und kann mir hierbei weiterhelfen
Viele Grüße und Danke!
[Diese Nachricht wurde von CSharper96 am 20. Nov. 2024 editiert.]
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP