script

Buch – EPLAN Scripting – 4. Auflage

Mein Herzensprojekt geht in die vierte Runde 💖

Da ich das Buch nun selbst vertreibe, bieten sich mehr Möglichkeiten:

  • Am meisten freut es mich, dass ich nun den kompletten Beginner-Teil kostenlos zur Verfügung stellen kann 👨‍🏫
  • Auf einer interaktiven Website wird nun der Code mit schönem Syntax-Highlighting dargestellt 🧑‍💻
  • Lange erwartet und nun endlich da: Englische Version 🇬🇧

Alles rund um das Buch findet Ihr hier: eplan-scripting.suplanus.de.

Changelog

  • Verfügbar in English

  • Digitale Version auf interaktiven Website

  • Kompletter Inhalt Beginner kostenfrei

  • ListSelectDecisionContext

  • Remote Client komplett an das neue Framework angepasst

  • XML Kapitel optimiert

  • Debug Kapitel überarbeitet und Settings-Script hinzugefügt

  • Anpassungen an die EPLAN Version 2026

Von |2025-06-30T14:12:27+02:002025-06-30|EPLAN, EPLAN-Scripts|

DeletePages

Mit diesem Script kann man beliebige Seiten im Projekt löschen. Es können mehrere Seiten mit Pipe | getrennt angegeben werden. Beispiel-Aufruf:

DeletePages /Pages:"=TEST/11|=TEST/12"

Ist eine angegebene Seite im Projekt nicht vorhanden, wird eine Systemmeldung ausgegeben.

using Eplan.EplApi.ApplicationFramework;
using Eplan.EplApi.Base;
using Eplan.EplApi.Scripting;

public class DeletePages
{
  [DeclareAction("DeletePages")]
  public void Action(ActionCallingContext acc)
  {
    string pagesString = null;
    acc.GetParameter("Pages", ref pagesString);
    if (string.IsNullOrEmpty(pagesString))
    {
      new Decider().Decide(EnumDecisionType.eOkDecision, "Parameter 'Pages' missing.", "DeletePages",
                           EnumDecisionReturn.eOK, EnumDecisionReturn.eOK, null, false, EnumDecisionIcon.eFATALERROR);
      return;
    }
    
    var pages = pagesString.Split('|');
    foreach (var page in pages)
    {
      DeletePage(page);
    }
  }

  private void DeletePage(string page)
  {
    ActionCallingContext accPage = new ActionCallingContext();
    accPage.AddParameter("PAGENAME", page);
    var isPageValid = new CommandLineInterpreter().Execute("edit", accPage);
    if (isPageValid)
    {
      using (new QuietModeStep(QuietModes.ShowNoDialogs))
      {
        new CommandLineInterpreter().Execute("XGedSelectPageAction");
        new CommandLineInterpreter().Execute("GfDlgMgrActionIGfWindDelete");
      }
    }
    else
    {
      new BaseException("Page not found: " + page, MessageLevel.Error).FixMessage();
    } 
  }
}
Von |2025-03-13T06:41:51+01:002025-03-12|EPLAN, EPLAN-Scripts|

EPLAN legacy Menü einblenden

Selbst in 2025 ist das Menü nicht ganz verschwunden. In älteren Versionen konnte man es über den Arbeitsbereich einblenden. Der Menüpunkt ist verschwunden, aber über die Action mfToggleMainMenuAction kann das Menü auch in EPLAN 2025 eingeblendet werden.

Von |2025-02-13T07:58:39+01:002025-02-13|EPLAN|

“Wörter nicht übersetzen” in die Datenbank einlesen

Leider geht das nicht direkt über das Datenmodell.
Aber mein grandioser Kollege Daniel hatte die Idee es über den XML Import des Wörterbuchs mal zu probieren. Siehe da, dies funktioniert.

Somit brauchen wir eine DTO-Klasse für das Import-Format:

<?xml version="1.0" encoding="utf-8"?>
<EplanLanguageDbRoot>
  <NonTranslateSection>
    <NTW>Foo</NTW>
    <NTW>Bar</NTW>
  </NonTranslateSection>
</EplanLanguageDbRoot>
[XmlRoot("EplanLanguageDbRoot")]
public class EplanTranslationsDto
{
  [XmlArray("NonTranslateSection")]
  [XmlArrayItem("NTW")]
  public List<string> NonTranslatedWords { get; set; } = new();
}

Das ganze speichern wir als XML und importieren es über die Standard-Action, welche auch im Scripting verfügbar ist:

private static void ImportXmlToTranslations(string filename)
{
  ActionCallingContext acc = new ActionCallingContext();
  acc.AddParameter("TYPE", "IMPORTTOTRANSDB");
  acc.AddParameter("IMPORTFILE", filename);
  acc.AddParameter("CONVERTER", "XTrLanguageDbXmlConverterImpl");
  new CommandLineInterpreter().Execute("translate", acc);
}
Von |2025-02-12T08:03:36+01:002024-10-28|EPLAN, EPLAN-Scripts|

EPLAN 2025: Scripting Neuerungen

Folgende Änderungen gab es im Scripting:

  • XCCreateGravingtextAction Erzeugt einen Graviertext aus den BMK von Quelle und Ziel des Kabels. Die Bezeichnung wird entsprechend dem VASS-Standard (Volkswagen Audi Seat Skoda) gekürzt.
  • XCabCalculateEnclosureTotalWeightAction Berechnet das Gesamtgewicht eines Schrankes und schreibt es in die Eigenschaft „Gesamtgewicht“ (#36108 – FUNCTION3D_CABINET_TOTALWEIGHT)
Von |2024-10-17T06:56:57+02:002024-10-16|EPLAN, EPLAN-Scripts|
Nach oben