ExecuteEplanAction 4.0
Frank Schöneck hat mehrere Features mit eingebaut 💖. Unteranderem auch Support für 2022. Dort ist auch ExtendedActionList enthalten um eine Action auszuwählen:

Frank Schöneck hat mehrere Features mit eingebaut 💖. Unteranderem auch Support für 2022. Dort ist auch ExtendedActionList enthalten um eine Action auszuwählen:

In der Beta von EPLAN 2022 hatte ich hier schon beschrieben, wie man eigene Befehle im Menüband erzeugt.
Ab EPLAN 2022 Update 1 ist es nun möglich auch eigene Icons zu definieren. Ich habe mal ein erweitertes Beispiel erstellt auch mit Muli-Language-Support:

Bei Laden eines Scriptes via Add-On oder Action RegisterScript gibt es Stand EPLAN 2022 Update 1 Probleme. Hier sollte der Tab in [DeclareEventHandler("Eplan.EplApi.OnMainStart")] hinzugefügt und in [DeclareEventHandler("Eplan.EplApi.OnMainEnd")] entfernt werden.
using System.Windows.Forms;
using Eplan.EplApi.Base;
using Eplan.EplApi.Gui;
using Eplan.EplApi.Scripting;
class Example
{
private const string ACTION_NAME = "RibbonAction";
private MultiLangString TAB_NAME
{
get
{
MultiLangString tabName = new MultiLangString();
tabName.AddString(ISOCode.Language.L_de_DE, "Mein Tab");
tabName.AddString(ISOCode.Language.L_en_US, "My Tab");
return tabName;
}
}
[DeclareRegister]
public void Register()
{
RibbonBar ribbonBar = new RibbonBar();
RibbonTab ribbonTab = ribbonBar.GetTab(TAB_NAME, true);
if (ribbonTab == null)
{
ribbonTab = ribbonBar.AddTab(TAB_NAME);
}
// Simple
RibbonCommandGroup ribbonCommandGroup1 = ribbonTab.AddCommandGroup("My group 1");
RibbonIcon ribbonIcon1 = new RibbonIcon(CommandIcon.Accumulator);
ribbonCommandGroup1.AddCommand("My action 1", ACTION_NAME, ribbonIcon1);
// Extended
MultiLangString groupText = new MultiLangString();
groupText.AddString(ISOCode.Language.L_de_DE, "Meine Gruppe 2");
groupText.AddString(ISOCode.Language.L_en_US, "My group 2");
RibbonCommandGroup ribbonCommandGroup2 = ribbonTab.AddCommandGroup(groupText);
MultiLangString commandText = new MultiLangString();
commandText.AddString(ISOCode.Language.L_de_DE, "Meine Aktion 2");
commandText.AddString(ISOCode.Language.L_en_US, "My action 2");
MultiLangString tooltip = new MultiLangString();
tooltip.AddString(ISOCode.Language.L_de_DE, "Mein ToolTip");
tooltip.AddString(ISOCode.Language.L_en_US, "My tooltip");
MultiLangString description = new MultiLangString();
description.AddString(ISOCode.Language.L_de_DE, "Meine Beschreibung");
description.AddString(ISOCode.Language.L_en_US, "My description");
string imagePath = @"C:\test\test.svg";
RibbonIcon ribbonIcon2 = ribbonBar.AddIcon(imagePath);
ribbonCommandGroup2.AddCommand(commandText, ACTION_NAME, tooltip, description, ribbonIcon2);
}
[DeclareUnregister]
public void UnRegister()
{
RibbonBar ribbonBar = new RibbonBar();
RibbonTab ribbonTab = ribbonBar.GetTab(TAB_NAME, true);
if (ribbonTab != null)
{
ribbonTab.Remove();
}
}
[DeclareAction(ACTION_NAME)]
public void Function()
{
MessageBox.Show("Action wurde ausgeführt!");
}
}
Ein kleiner Schritt in der EPLAN Versionsnummer, ein großer Schritt im Scripting. Ab Version EPLAN 2022 Update 1 ist es nun möglich auf fast alle Klassen in Eplan.EplApi.MasterData im Scripting zuzugreifen. Ausnahmen (inkl. Unterklassen):
MDSymbolLibraryMDSymbolLibraryPropertyListMDSymbolMDSymbolPropertyListMDSymbolVariantMDTranslationDatabaseEPLAN hat dem Thema auch ein kleines Kapitel in der Hilfe gewidmet.
Einige unserer Produkte sind auch mehrsprachig. Einige API-Addins besitzen eine GUI mit WPF, welche die Übersetzungen aus einer Resource-Datei in einer referenzierten Assembly laden.
Leider gibt es beim Öffnen des Windows dann folgenden Fehler:
The file or assembly LocalizationExample.Translations, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null or a dependency of it was not found. Assembly loader: LocalizationExample.Translations, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null not found The file or assembly LocalizationExample.Translations, PublicKeyToken=null or a dependency of it was not found. Assembly loader: LocalizationExample.Translations, PublicKeyToken=null not found The LocalizationExampleAction action with the /_cmdline:LocalizationExampleAction parameters of the LocalizationExample.EplAddIn.Gui module has failed. Could not load file or assembly 'LocalizationExample.Translations, PublicKeyToken=null' or one of its dependencies. Das System kann die angegebene Datei nicht finden.
Ich habe mir mit Fusion++ mal angesehen, was nicht geladen wurde:
LOG: Attempting download of new URL file:///C:/Users/moz/AppData/Roaming/EPLAN/ShadowCopyAssemblies/8980/LocalizationExample.EplAddIn.Gui/bin/en-US/LocalizationExample.EplAddIn.Gui.resources.DLL. LOG: Attempting download of new URL file:///C:/Users/moz/AppData/Roaming/EPLAN/ShadowCopyAssemblies/8980/LocalizationExample.EplAddIn.Gui/bin/en-US/LocalizationExample.EplAddIn.Gui.resources/LocalizationExample.EplAddIn.Gui.resources.DLL. LOG: Attempting download of new URL file:///C:/Users/moz/AppData/Roaming/EPLAN/ShadowCopyAssemblies/8980/LocalizationExample.EplAddIn.Gui/bin/en-US/LocalizationExample.EplAddIn.Gui.resources.EXE. LOG: Attempting download of new URL file:///C:/Users/moz/AppData/Roaming/EPLAN/ShadowCopyAssemblies/8980/LocalizationExample.EplAddIn.Gui/bin/en-US/LocalizationExample.EplAddIn.Gui.resources/LocalizationExample.EplAddIn.Gui.resources.EXE.
Der Assembly-Loader sucht nach der falschen Datei… mhh, komisch. Denn der Zugriff außerhalb von WPF, sprich im C# Code, funktioniert ohne Probleme.
Meine Vermutung, dass WPF die Resource-Datei nicht findet hat sich betätigt. Darum greife ich nun BEVOR ich ein WPF-Control erstelle, einmal auf die Assembly zu.
Hab das die Lösung auf GitHub mit einem Beispielprojekt dokumentiert.
2021-06-04
Die Betaversion von EPLAN 2022 ist nun verfügbar. Folgende Änderungen an den Actions habe ich aus den News entnommen.
2021-08-05
Die API-Hilfe ist nun auch verfügbar und ich habe die Listen ergänzt.
EPLAN 2022 ist noch in Beta. Die Actions könnten sich noch ändern.
Entfernt
Hinzugefügt