Tutorial – Scripting – 04 – Warum das Rad neu erfinden

>>>Tutorial – Scripting – 04 – Warum das Rad neu erfinden

Wir werden ein Script erstellen um automatisch eine Beschriftung zu erzeugen, welche gleich im Projektordner abgespeichert wird.

Hier gibt es eine schöne Funktion in Eplan. Dienstprogramme/Automatisiert bearbeiten/Einstellungen…

In diesem Dialog kann man sich sehr schön seine Beschriftungen zusammen klicken:

Zuerst erstellen wir uns ein Testscript (klicken auf neu)

Hier vergeben wir einen beliebigen Namen

Nun markieren wir „Beschriften“ und fügen es nach rechts ein

Im folgenden Dialog kann man nun eine beliebige Beschriftung zusammenstellen (Speicherort ist zu vernachlässigen, da wir diesen später im Script bestimmen)

Wichtig! Nun muss das Script gespeichert werden (Diskettensymbol).

Danach klicken wir oben auf Bearbeiten (Stiftsymbol).

Siehe da… Wir haben ein (fast) fertiges Script :)

Ein bisschen Nacharbeit ist aber dennoch erforderlich:

Hier Bennenen wir unser Script und unsere Klasse:

In dieser Zeile wird ein String übergeben für den Projektnamen. Dies funktioniert aber im Scripting leider nicht. Darum kann man hier den String löschen und wir bauen uns das ganze selbst zusammen.

Zusammen ergibt das alles:

In der folgenden Zeile wird nur ein Startpunkt festgelegt. Dies dient dazu das Script zu starten über Dienstprogramme/Scripte/Ausführen…

Wir wollen aber das ganze fest einbinden (Laden…). Darum deklarieren wir nun eine neue Action, welche wir dann wie immer in der Toolbar verknüpfen können.

Wird dann zu…

Nun sieht unser Code wie folgt aus:

Nun kommen wir zu der eigentlichen Action:

Hier wird eine Progressbar (Ladebalken) initialisiert (Titelzeile = „Labelling“). Die Action wird ausgeführt wenn nicht der Button Cancel (Deutsch = Abbrechen) gedrückt wird.

Nun kommen wir zur Beschriftungsfunktion:

ActionCallingContext: Sind die Parameter welche der Action “mitgegeben” werden.

AddParameter: fügt Parameter hinzu (Parametername + Wert)

CommandLineInterpreter().Execute: Führt die Action mit den Parametern aus.

Die Parameter wurden von Eplan schon alle gefüllt (nach dem Schema welches wir eingestellt, bzw. konfiguriert haben)

Man kann dies auch nachlesen (in der Suche nach „label“ suchen).

Nun müssen wir aber noch beim Parameter „PROJECTNAME“ unser Projekt irgendwie eintragen, da Eplan so nicht weiß welches Project gemeint ist.

Zusätzlich versuchen wir gleich den aktuellen Projektordner herauszufinden…

Das Ganze ist nicht schwer, wenn man weiß wie ;)

Zuerst eine kurze Erklärung von „String“. Was ist ein String. Einfach gesagt eine Zeichenkette (Zahlen, Buchstaben, usw.)

Nun wollen wir diese Informationen (Projektname und Projektpfad) jeweils in einen String schreiben.

Die meisten von Euch kennen bestimmt die Pfadvariablen in Eplan. Genau diese nutzen wir nun im Scripting auch.

Beim Projektpfad möchte ich aber, dass die Beschriftung im selben Ordner gespeichert wird wie die *.elk-Datei.

Darum fügen wir eine Funktion ein welche den String kürzt. Beispiel:

„C:\Test\Testprojekt.elk“ >>> „C:\Testprojekt.elk“

Nun bauen wir das ganze mal zusammen :)

Wichtig sind die Ergänzungen bei den Parametern DESTINATIONFILE (Zieldatei) und PROJECTNAME!

Falls ihr etwas nicht versteht oder allgemeine Fragen habt, schreibt dies einfach in die Kommentare!

By |2017-11-09T12:30:31+00:002010-07-29|EPLAN, EPLAN-Scripts|

31 Comments

  1. HKXVZBi 2010-12-14 at 14:43

    Hallo, da ich nicht so viel erfahrung habe mit Scripten unter eplan würde ich gern wissen ob ich diese Aktion auch einem eigenen Button hintelegen kann?
    Da mir ja in P8 2.0 die möglichkeit gegeben wird mir eigene Symbolleisten zu erzeugen, allerdings weiß ich nicht genau ob bzw. wie ich jetzt ein Script dort hintelgen kann?

    Folgender Hintergrund: Ich möchte eine Kabelliste per Knopfdruck erzeugen

    Gruß
    Marco

  2. Jonny Wire 2010-12-14 at 14:47

    Klar kannst du … sogar ganz einfach…
    Am Anfang wird der Actionname deklariert:

    In diesem Fall ist es „Beschriftung“. Lege nun eine Toolbar an mit z.B. „Makro einfügen“ (Unter Befehle –> Aktionen). Nun kannst du im Feld „Befehlszeile“ den Text editieren. Lösch alles herraus und gibt nur den Actionnamen ein.
    Nun müsste das ganze funktionieren.

  3. HKXVZBi 2010-12-14 at 16:19

    hmm also irgendetwas mach ich falsch ich habe jetzt ein Script das ziehmlich dem hier beschriebenen ähnelt :biggrin:
    Das Script hab ich gespeichert und auch exportiert!

    dann hab ich mir eine Symbolleiste erstellt (Optionen–> Symbolleiste –> Anpassen), mit dem Namen „Eigene Symbolleiste“, dan zieh ich mir dann aus der Registrierkarte „Befehle“ aus der Kategorie „Aktionen“ die „Schaltfläche: Makro einfügen“ hinein, wähle ein Bild und lösche den Text aus der „Befehlszeile“ herraus und hab nur „Beschriftung“ eingefügt… dann passiert natürlich nichts und ich kann den button nicht drücken!

    sicherlich muss doch hier irgendwo noch auf mein script verwiesen/hinterlegt werden :wassat:

  4. Jonny Wire 2010-12-14 at 16:23

    ist bei dir die Zeile:

    oder ähnlich vorhanden?
    Schick mir mal das Script dann schau ichs mir an …

  5. Peter 2011-04-20 at 15:39

    Hallo, kann es sein, dass dieses Skript nicht mehr unter P8 v2.0 läuft?
    Sobald ich der Zeile

    etwas anderes als einen konstanten String anfüge, sagt ePlan, das Skript könne nicht kompiliert werden. Und wenn ich es trotzdem versuche auszuführen, kommt die Fehlermeldung, das ein „}“ erwartet würde (darüberhinaus an einer schwachsinnigen Stelle).

    Dafür funktioniert jetzt aber die Variablenübergabe von „ProjectName“.

    Danke für ein kleines Feedback
    Peter

  6. Jonny Wire 2011-04-20 at 15:50

    Hab es in der Version 2.0.9 getestet und es funktioniert genau wie in der 1.9.11.
    Du sprichst von ausführen. Dir ist bewusst dass du das Script laden musst?
    Füg dein Script hier in den Kommentaren ein, dann schau ich mir des mal an :sideways:

  7. Peter 2011-04-21 at 11:24

    Hi Jonny Wire,
    danke für Dein Angebot.

    Zunächst einmal: Stimmt, ich hatte es nicht geladen, sondern über „Einstellungen (automatisiertes bearbeiten)“ importiert und dann per „Automatisiert bearbeiten“ ausführen wollen. Das erschien mir in der Testphase einfacher als ständig das Skript zu entladen und wieder neu zu laden.

    Aber jetzt habe ich das Skript auch noch mal angepasst und direkt versucht, es zu laden. Klappt aber leider trotzdem nicht.

    Hier das Skript:

    Eingebunden wird das Skript über ein Menü, welches ich in einer weiteren Skriptdatei definiert habe. Die Aktion wird dabei auch korrekt registriert, was daran zu erkennen ist, das der entsprechende Menüpunkt ausgegraut ist, sobald ich das Skript entlade. Wenn ich das Skript wieder lade, kann ich den Menüpunkt betätigen. Leider passiert dann genau garnix. :sad:

    Danke für Deine Hilfe
    Peter

  8. Jonny Wire 2011-04-21 at 11:47

    entferne die Parameterübergabe von ProjectName.
    Zusätzlich weiß ich nicht ob du DeclareAction und Start zusammen nutzen kannst.

    Schau dir mein Beispiel an. Dort ermittle ich den Projektnamen mit einer Pfadvariable (was aber normal nicht nötig ist aber in der 1.9er gab es einen Bug wenn man nicht den kompletten Namen angab).

    Habe es gemacht und es funktioniert.

  9. Peter 2011-04-21 at 13:26

    Danke, läuft jetzt.

    Wenn ich vorher mein Hirn eingeschaltet hätte, hätte ich auch von selbst drauf kommen müssen :blush: : Natürlich darf da keine Parameterübergabe sein, woher soll die denn auch stammen. Schließlich rufe ich im Menü lediglich den Namen der Aktion auf.

    Das mit dem kombinierten DeclareAction und Start hatte ich irgendwo mal gesehen und einfach ausprobiert, weil ja vorher nix funktionierte. Ich habe jetzt das Start rausgenommen und es funzt.

    Nochmals vielen Dank für die schnelle Hilfe
    Peter

  10. Jeroen DB 2011-12-18 at 13:38

    Dear Johnny Wire;

    I’ll ask you a question in Englisch since i’m dutch and my deutsch is limited to reading only…

    I’ve configured a scheme „compress for backup“ for the compress function, and call for that in a script.
    I can use this script in the selected project (since i created it there) and that works fine…
    Now i want to use this script over several projects, and the problem is, since the scheme „compress for backup“ is not existing in those other projects, Eplan doesn’t recognise it and gives me an error… :getlost:

    Is there any possibility at all to load an XML file with the configured compress scheme in the other projects and then call for the compress function?

    Some background info from what I would like to do:
    I want to compress, archive & create a PDF from all the projects i’ve created in 2010, that’s over 500 projects and i don’t want to do the same repetitive actions in each project (what else is scripting for? :biggrin: )
    So I tought, let’s make an automated action for that! I should then be able to use it in the project management screen on my selected projects, but unfortunatly it doesn’t work that way, with the result described as above :sad:

    Can you help me out with this one?
    Thanks in advance,

    Jeroen

  11. Johann Weiher 2011-12-20 at 07:43

    Hi Jeroen,

    1. You are not able to change project settings. So your can’t import a compress scheme.
    2. What you mean with archive. Do you want to move the project to an other folder? This ist possible with the file methods (System.File)
    3. PDF that’s no problem, use the export action (EPLAN).

    You have to literal over all your Projects. The better way is to use the external comandline.

    Edit this sample for your filesystem and load it as Script (DeclareAction):

    Greets
    Johann

  12. FrankS 2011-12-20 at 15:45

    Hallo,

    erstmal das Comress-Schema einmalig als XML-Datei abspeichern (export),
    danach kann man das Schema einfach mit ‚XSettingsImport‘ in das aktuelle Projekt einladen.

    grüße

  13. Johann Weiher 2011-12-20 at 15:59

    Ich vergesse immer dass EPLAN hier alle Türen aufgemacht hat :sad:

    Danke
    Gruß
    Johann

  14. De Bleecker Jeroen 2011-12-21 at 12:34

    Hi again,

    I’ll try the XSettingsImport!

    Thanks for sharing your knowledge… :smile:

  15. FrankM 2013-10-31 at 14:34

    Das Menu hat sich ab Eplan 2.1.6 geändert ?!?
    Automatisiert bearbeiten
    steht bei 2.1.6 „Schema“
    früher bei 1.9 „Scriptname“

    daher kann hier keine Script mehr erzeugen…es fehlt oben „Bearbeiten“
    oder mach ich was falsch?
    oder wie macht man das ab 2.1.6
    Beschriftungs Vorlage für Script erzeugen…

  16. Johann Weiher 2013-11-05 at 12:14

    Habe gerade unter der 2.2.5 geschaut und ja die Funktion wurde entfernt.
    Schreibe doch bitte dem EPLAN Support dass du dir das Feature zurückwünscht.

  17. Johann Weiher 2013-11-05 at 12:20

    Habe gerade gesehen dass ein Script unter Plattform/BENUTZERKENNUNG/Skripte erstellt wird… das kann verwendet werden :)

  18. deLibe 2014-04-07 at 11:37

    Erstmals bedanke ich mich an Herr Weiher für eine tolle und wertvolle Seite. Dank dieser Seite habe ich einen tollen Einstieg mit dem Scripten in EPLAN bekommen.
    Ich selber bin auch ein leidenschaftlicher Programmierer und frage mich deshalb woher du die ganze Informationen für die Action-Befehle her hasst.
    Ich frage mich immer: Du hast mir geholfen! Aber wer hat dir geholfen?

  19. Johann Weiher 2014-04-07 at 12:10

    Danke!

    Einige Actions sind in der Hilfe von EPLAN beschrieben. Leider nicht alle, hier ist dann die API Dokumentation sehr hilfreich.
    Ich selbst habe eine Scripting-Schulung bei EPLAN gemacht, welche sehr zu empfehlen ist.

  20. econo 2014-07-02 at 10:56

    Hallo Johann,

    gibt es eine Möglichkeit das Schema von einem Beschriftungsmodul extern zu speichern und trotzdem im Script zu benutzen.
    Hintergrund, nutze bereits das „Bschriftungsscript“.
    Wird nun das verwendete Schema von einem Benutzer verändert, funktioniert die Beschriftungsausgabe nicht wie gewohnt sondern mit den veränderten Einstellungen.
    Idee war daher das Schema woanders zu speichern damit der Benutzer dieses nicht editieren kann.

    Gruß
    Torsten

  21. Pepe 2015-09-21 at 15:59

    Hallo Econo

    Vielleicht kannst Du einen Verweis auf die Datei im Script Ordner machen. Und das Script mit einem Schreibschutz versehen.

    Gruss
    Pepe

  22. Johann Weiher 2015-09-23 at 09:43

    Einfach das Beschriftungsschema exportieren und später mit XSettingsImport vor der Label-Action importieren. Damit ist sichergestellt dass immer das gleiche Schema verwendet wird.

  23. Pepe 2015-09-24 at 11:51

    Danke für den Tipp! Hat mir auch weiter geholfen.

    Etwas allgemeineres: Ist es möglich oder bei Eplan erlaubt, so ein Script als Klasse Auszulagern und dann im Script danach zu referenzieren? (So wie im Visual Studio oft gemacht wird)

  24. Johann Weiher 2015-09-24 at 13:15

    Es ist nur möglich Actions mit Parametern aufzurufen und zusätzlich auch möglich einen Rückgabewert (String) zu erhalten.

    Das sharen von Methoden/Klassen/Objekten ist mit Scripting nicht möglich.

  25. Denis 2015-09-25 at 13:58

    Wie kann ich meine .cs auf Syntax überprüfen, ich schreibe nur im Editor(Windows)?

  26. Pepe 2015-09-30 at 10:40

    Hallo Johann

    Ist es nicht so das Eplan ein im Seitennavi markiertes Projekt als das zu auswertende Projekt annimmt? Warum muss ich da die ganzen Pfade und Namen etc. einlesen?

  27. Johann Weiher 2015-09-30 at 10:41

    Es gibt hier immer wieder Probleme mit dem SelectionSet und dann wird das falsche Projekt ausgewertet…

  28. Scholz 2015-12-18 at 13:57

    Hallo,

    ich arbeite mit der Eplan Version

    EPlan Electric P8 – Professional  /  Version 2.3 HF1   –   Buildnummer 7451

    mein Problem ist, das sich das Script nicht im Texteditor öffnen lässt. Bei mir fehlt der obere Bearbeitungsbutton.

    Gibt es bei der Version eine andere Lösung um an die Scripte zu kommen?

    Gruß

    Tobias

  29. Johann Weiher 2015-12-18 at 14:01

    Das Verhalten wurde leider geändert.

    Das Script wird nun unter EPLAN_DATA/Skripte gespeichert.

  30. Marcel 2016-09-28 at 12:26

    Hallo,

    gibt es die Möglichkeit die Beschriftung mit Scripting nicht auf das gesamte Projekt anzuwenden?

    Wenn man eine Beschriftung über Dienstprogramme->Auswertung->Beschriftung durchführt kann man ja auch die markierten verwenden.

     

    Gruß

    Marcel

  31. Johann Weiher 2016-09-28 at 14:03

    Siehe hier. Parameter USESELECTION