EPLAN-Scripts

EPLAN Ribbon Icon umschalten

Ich hatte ja hier vorgestellt wie man eigene Tabs zum Ribbon hinzufügen kann. Nicolas hat in den Kommentaren ein tolles Beispiel gepostet wie man ein Icon umschalten kann. Habe das mal in ein Script gepackt und noch eine Farbumschaltung eingebaut.

Vielen Dank Nicolas für das Beispiel und die Idee 💡!
Um das Script nutzen zu können muss unter EPLAN/Data/Bilder ein Bild mit dem Dateinamen Icon_template.svg liegen. In der SVG kann anstatt einer Farbe der Platzhalter icon_color eingetragen werden und die Farbe wechselt dann von rot auf grün. Das Beispiel findet Ihr hier Icon_template.svg.

using System.Drawing;
using System.IO;
using System.Text;
using Eplan.EplApi.Base;
using Eplan.EplApi.Gui;
using Eplan.EplApi.Scripting;

public class ChangeRibbonState
{
  private const string TAB_NAME = "ToogleTab";
  private const string GROUP_NAME = "Group";
  private const string ACTION_NAME = "ToogleAction";
  private static bool _state;

  [DeclareAction(ACTION_NAME)]
  public void Action()
  {
    // Here you can get the state from somewhere else (like settings etc.)
    Set(!_state);
  }

  private static void Set(bool state)
  {
    _state = state;
    Set();
  }
    
  [DeclareUnregister]
  public void Unregister()
  {
    RemoveRibbonTab();
  }

  [DeclareEventHandler("Eplan.EplApi.OnMainEnd")]
  public void OnMainEnd()
  {
    RemoveRibbonTab();
  }
    
  private void RemoveRibbonTab()
  {
    RibbonBar ribbonBar = new RibbonBar();
    RibbonTab ribbonTab = ribbonBar.GetTab(TAB_NAME);
    if (ribbonTab != null)
    {
      ribbonTab.Remove();
    } 
  }

  [DeclareRegister]
  public void Register()
  {
    Set();
  }
    
  [DeclareEventHandler("Eplan.EplApi.OnMainStart")]
  public void OnMainStart()
  {
    Set();
  }

  private static void Set()
  {
    var ribbonBar = SetupRibbonBar();

    // Icon
    string imagePath = Path.Combine(PathMap.SubstitutePath("$(MD_IMG)"), "Icon.svg");
    string imageTemplatePath = Path.Combine(PathMap.SubstitutePath("$(MD_IMG)"), "Icon_template.svg");

    string color = Color.Red.Name;
    if (_state)
    {
      color = Color.DarkGreen.Name;
    }

    string content = File.ReadAllText(imageTemplatePath, Encoding.UTF8);
    content = content.Replace("icon_color", color);
    if (File.Exists(imagePath))
    {
      File.Delete(imagePath);
    }
    File.WriteAllText(imagePath, content, Encoding.UTF8);
    RibbonIcon ribbonIcon = ribbonBar.AddIcon(imagePath);

    // Command
    string commandName = ACTION_NAME;
    var ribbonCommandInfo = new RibbonCommandInfo(commandName, ACTION_NAME);
    ribbonBar.UnregisterCommand(ACTION_NAME, TAB_NAME, GROUP_NAME);
    ribbonBar.RegisterCommand(ribbonCommandInfo, ribbonIcon, TAB_NAME, GROUP_NAME);
  }

  private static RibbonBar SetupRibbonBar()
  {
    var ribbonBar = new RibbonBar();

    // Tab
    var ribbonTab = ribbonBar.GetTab(TAB_NAME);
    if (ribbonTab == null)
    {
      ribbonTab = ribbonBar.AddTab(TAB_NAME);
    }

    // Group
    var ribbonCommandGroup = ribbonTab.GetCommandGroup(GROUP_NAME);
    if (ribbonCommandGroup == null)
    {
      ribbonTab.AddCommandGroup(GROUP_NAME);
    }
    return ribbonBar;
  }
}
Von |2022-09-22T12:46:37+02:002022-09-21|EPLAN, EPLAN-Scripts|

Buch – EPLAN Electric P8 automatisieren – 3. Auflage

Es ist wieder so weit… Nachdem die zweite Auflage ausverkauft ist, durfte ich mich wieder ans Schreiben machen.
Mir war wichtig EPLAN 2022 aufzunehmen, da sich hier im Userinterface viel geändert hat. Somit alle Screenshots neu.

Es ist jedesmal viel Arbeit, aber es macht mich stolz einen Beitrag für die Community zu leisten 💖
Alle Scripte zum Buch findet ihr wie gewohnt auf eep8a.de.

Hier der Changelog die Änderungen im Überblick:

  • Screenshots und Beschreibung
    • EPLAN 2022
    • Windows 11
    • Visual Studio 2022
  • Ribbons erzeugen
  • Artikeldaten lesen und schreiben
  • ActionCallingContext als Parameter
  • uvm.

Somit auch wieder neuer Inhalt für Käufer der ersten und / oder der zweiten Ausgabe.
Eine Leseprobe findet Ihr hier.

Wie gewohnt könnt Ihr das Buch hier kaufen.
Freue mich sehr über eure Rückmeldungen!

Von |2022-06-07T07:21:10+02:002022-06-07|EPLAN, EPLAN-Scripts|

EPLAN Ribbon erstellen

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:

 

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!");
  }
}
Von |2021-12-07T09:05:07+01:002021-12-04|EPLAN, EPLAN-Scripts|

Eplan.EplApi.MasterData in Scripting verfügbar

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):

  • MDSymbolLibrary
  • MDSymbolLibraryPropertyList
  • MDSymbol
  • MDSymbolPropertyList
  • MDSymbolVariant
  • MDTranslationDatabase

EPLAN hat dem Thema auch ein kleines Kapitel in der Hilfe gewidmet.

Von |2021-11-24T14:15:53+01:002021-11-24|EPLAN, EPLAN-Scripts|
Nach oben