Skript

Kurs: EPLAN Scripting

Spiele nun seit ca. 4 Jahren mit dem Gedanken einen Video-Learning-Kurs für das EPLAN Scripting zu erstellen. Ich lerne selbst sehr gut mit Videos. Es ist entspannter als das Lesen, zumindest für mich. Es ist auch super die Leute zu sehen, wie Sie die Software benutzen oder in meinem Fall Code schreiben.
Hilfreich ist auch zu sehen, wie man mit Problemen und Fehlern umgeht. In Text ist das schwer zu beschreiben oder zu zeigen.

Ich habe den Kurs in zwei Teile aufgeteilt. Im Beginner-Kurs erlangt Ihr einen schnellen Einstieg in das Scripting. Im Expert-Kurs wird dann auf verschiedene Bereiche im Scripting eingegangen.

Alles Beispiele sind wie immer kostenlos für alle verfügbar.

Ich hoffe Euch gefallen die Kurse und bin schon gespannt auf Euer Feedback ♥️

Kurse

Von |2022-11-28T13:34:57+01:002022-11-28|EPLAN, EPLAN-Scripts|

PdfsByStructure

Sander Zuur hatte auf Discord einige Fragen wie man denn PDFs pro Strukturkennzeichen exportieren kann. Freundlicherweise hat er das Script für alle bereitgestellt.
Vielen Dank 🍪

Aufrufparameter:

  • sProjectName: The project being processed, If empty it’s expected that its in user GUI mode, at which point it will take the currently selected project and additionally ask for a filter for the structure.
  • sOptionFull: if true/1 then a full PDF of the project is exported
  • sOptionByMountingLocation: if true/1 then a PDF per cabinet of the project, including all pages in an other structure which contain an object of that cabinet is exported.
  • sOptionBySystem: Optional, if true/1 then a PDF per system of the project, including all pages in an other structure which contain an object of that system is exported.
  • sOptionOnlyLastNodes: if true/1 then only the lowest level of a structure node is exported.
  • sDocumentFilterSet: select a datafilter set possible values: ‘ASBUILT’.

Download: PdfsByLocation

 

Von |2022-11-16T12:05:19+01:002022-11-16|EPLAN, EPLAN-Scripts|

ListSelectDecisionContext

Seit EPLAN 2022 gibt es den ListSelectDecisionContext welcher einen Auswahldialog mit unterschiedlichen Werten anzeigt. Gefällt mir super (wusste aber nichts davon).

StringCollection entries = new StringCollection();
entries.Add("Foo");
entries.Add("Bar");
ListSelectDecisionContext listSelectDecision = new ListSelectDecisionContext(entries, "Foo", "List");
listSelectDecision.AllowMultiSelect = false;
    
var result = new Decider().Decide(listSelectDecision);
if (result == EnumDecisionReturn.eOK)
{
  MessageBox.Show(listSelectDecision.SelectedEntry);
}
Von |2022-10-12T11:07:43+02:002022-10-12|EPLAN, 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|

EADN-Signing

Bei der EPLAN API-Entwicklung müssen die DLLs signiert werden. Das manuelle Hochladen im Portal, der Download und die Verteilung der Daten kostet viel Zeit…
Das ist aber nun Geschichte. EPLAN stellt mit der EADN-Signing REST-API eine Schnittstelle bereit mit der dieser Workflow komplett automatisiert werden kann.

In der tollen und interaktiven Doku ist alles zu finden, was das Herz begehrt. Sogar ein fertiges Powershell-Script stellt EPLAN bereit, um z.B. im Post-Build Prozess die Signierung automatisch durchzuführen.

Derzeit gibt es noch keine automatische Freischaltung für diesen Dienst in der EPLAN-Cloud. Für die Freischaltung einfach bei EPLAN im Vertrieb nachfragen.

Von |2022-09-08T10:27:13+02:002022-09-08|EPLAN, EPLAN-API|
Nach oben