| |  | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für EPLAN | | |  | Rittal und Eplan auf der „The Smarter E Europe“ 2025: Wie KI die Energiewende beschleunigt, eine Pressemitteilung
|
Autor
|
Thema: Script in Menü aufrufen (1856 / mal gelesen)
|
DietmarP Mitglied
 Beiträge: 5 Registriert: 18.12.2018
|
erstellt am: 28. Dez. 2020 10:12 <-- editieren / zitieren --> Unities abgeben:         
Hallo zusammen, ich versuche mich gerade ein bißchen in die C# Programmierung einzuarbeiten. Habe ein Script erstellt, womit ich ein Menü erstelle und mir externe Programme und pdf Dateien öffnen kann. Jetzt versuche ich, ein zusätzliches script damit zu starten. Leider habe ich bis jetzt damit noch keinen Erfolg und bekomme Fehlermeldungen, wenn ich das versuche. Ich habe diesen Script aus dem Buch EPLAN Electric P8 automatisieren, den ich dazu einbinden möchte und in einem Menüpunkt aufrufen kann: public class _14_Beispiele_04_ExecuteScript { [Start] public void Function() { CommandLineInterpreter cli = new CommandLineInterpreter(); ActionCallingContext acc = new ActionCallingContext(); acc.AddParameter(“ScriptFile”, @“C:\Test\01_Start.cs”); cli.Execute(“ExecuteScript”, acc); return; Dabei erhalte ich aber Fehlermeldungen. Ich würde das gerne hier integrieren: menuId = menu.AddMenuItem( "Projekt Backup erstellen", // Name: Menüpunkt ====>>>>> // Name: Action "Backup wird erstellt...", // Statustext menuId, // Menü-ID 1, // 1 = hinter Menüpunkt, 0 = vor Menüpunkt false, // Separator davor anzeigen false // Separator dahinter anzeigen ); Kann mir da einer vielleicht auf die Sprünge helfen? Vielen Dank im Voraus.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
F.S. Moderator
    
 Beiträge: 1924 Registriert: 23.04.2003 EPLAN Electric P8 2025 Prof.
|
erstellt am: 28. Dez. 2020 12:20 <-- editieren / zitieren --> Unities abgeben:          Nur für DietmarP
Hallo, probier mal so (ohne Gewähr, da nicht getestet)
Code:
string sScriptFileName = @“C:\Test\01_Start.cs” menuId = menu.AddMenuItem( "Projekt Backup erstellen", // Name: Menüpunkt "ExecuteScript /ScriptFile:\"" + sScriptFileName, // Name: Action "Backup wird erstellt...", // Statustext menuId, // Menü-ID 1, // 1 = hinter Menüpunkt, 0 = vor Menüpunkt false, // Separator davor anzeigen false // Separator dahinter anzeigen );
------------------ grüße FrankS Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DietmarP Mitglied
 Beiträge: 5 Registriert: 18.12.2018
|
erstellt am: 28. Dez. 2020 17:41 <-- editieren / zitieren --> Unities abgeben:         
Hallo, vielen Dank für die Antwort. Ich habe das jetzt soweit ohne Scriptfehler hinbekommen. Der Code Teil: string sScriptFileName = @“C:\Test\01_Start.cs”; bzw: private string sScriptFileName = @“C:\Test\01_Start.cs”; liegt direkt unter public class. Leider aber ohne Funktion, weder Start des Skriptes noch Fehlermeldung. Habe jetzt schon einiges probiert, komme aber noch nicht weiter. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
F.S. Moderator
    
 Beiträge: 1924 Registriert: 23.04.2003 EPLAN Electric P8 2025 Prof.
|
erstellt am: 28. Dez. 2020 17:55 <-- editieren / zitieren --> Unities abgeben:          Nur für DietmarP
Zitat: Original erstellt von DietmarP: Der Code Teil: string sScriptFileName = @“C:\Test\01_Start.cs”;bzw: private string sScriptFileName = @“C:\Test\01_Start.cs”; liegt direkt unter public class.
Hallo, wieso direkt unter public class ?, dies gehört direkt über die Zeile des AddMenuItem. Am besten hier mal das ganze Script hochladen oder zumindest den Abschnitt mit dem [DeclareMenu] ------------------ grüße FrankS Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DietmarP Mitglied
 Beiträge: 5 Registriert: 18.12.2018
|
erstellt am: 28. Dez. 2020 18:08 <-- editieren / zitieren --> Unities abgeben:         
Hallo, habe das jetzt mal soangepasst. Aber nach wie vor ohne Funktion. Hier ist mal das Script: using System; using System.Diagnostics; using System.Windows.Forms; using Eplan.EplApi.Base; using Eplan.EplApi.Scripting; public class _09_Externe_Programme_02_PID_Tools { private object oCLI; [DeclareAction("StartProcess")] public void Function(string processName, string parameter) { try { parameter = PathMap.SubstitutePath(parameter); Process.Start(processName, parameter); } catch (Exception ex) { MessageBox.Show( ex.Message, "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error ); } return; } [DeclareMenu] public void MenuFunction() { Eplan.EplApi.Gui.Menu menu = new Eplan.EplApi.Gui.Menu(); uint menuId; // Menü-ID vom neu erzeugten Menü menuId = menu.AddMainMenu( "Tools", // Name: Menü "Hilfe", // neben Menüpunkt "Taschenrechner", // Name: Menüpunkt "StartProcess /processName:calc /parameter:''", // Name: Action "Taschenrechner öffnen...", // Statustext 1 // 1 = Hinter Menüpunkt, 0 = Vor Menüpunkt ); string quote = "\""; menuId = menu.AddMenuItem( "Zeichentabelle", // Name: Menüpunkt "StartProcess /processName:charmap /parameter:''", // Name: Action "Zeichentabelle öffnen...", // Statustext menuId, // Menü-ID: Einfügen/Fenstermakro... 1, // 1 = Hinter Menüpunkt, 0 = Vor Menüpunkt false, // Separator davor anzeigen false // Separator dahinter anzeigen ); menuId = menu.AddPopupMenuItem( "Projektbearbeitung", // Name: Menü "Projektordner öffnen", // Name: Menüpunkt "StartProcess /processName:explorer /parameter:" + quote + "$(PROJECTPATH)" + quote, // Name: Action "Projektordner im Explorer öffnen...", // Statustext menuId, // Menü-ID: Einfügen/Fenstermakro... 1, // 1 = Hinter Menüpunkt, 0 = Vor Menüpunkt false, // Separator davor anzeigen false // Separator dahinter anzeigen ); string sScriptFileName = @"W:\OneDrive\PID\EPLAN_P8_Script\Code\EPLAN Scripting Project\14_Beispiele\_08_Backup.cs"; menuId = menu.AddMenuItem( "Projektbackup erstellen", // Name: Menüpunkt "ExecuteScript /ScriptFile:\"" + sScriptFileName, // Name: Action "Backup wird erstellt...", // Statustext menuId, // Menü-ID 1, // 1 = hinter Menüpunkt, 0 = vor Menüpunkt false, // Separator davor anzeigen true // Separator dahinter anzeigen ); menuId = menu.AddPopupMenuItem( "Handbücher", // Name: Menü "EPLAN Electric P8 Artikelverwaltung", // Name: Menüpunkt "StartProcess /processName:" + quote + @"H:\\PID\Documentation & Manuals\EPLAN\EPLAN Electric P8 Artikelverwaltung.pdf" + quote + " /PARAMETER:''", // Name: Action "PDF öffnen...", // Statustext menuId, // Menü-ID 1, // 1 = hinter Menüpunkt, 0 = vor Menüpunkt true, // Separator davor anzeigen false // Separator dahinter anzeigen ); menuId = menu.AddMenuItem( "EPLAN Electric P8 automatisieren", // Name: Menüpunkt "StartProcess /processName:" + quote + @"H:\\PID\Documentation & Manuals\EPLAN\EPLAN Electric P8 automatisieren.pdf" + quote + " /PARAMETER:''", // Name: Action "PDF öffnen...", // Statustext menuId, // Menü-ID 1, // 1 = hinter Menüpunkt, 0 = vor Menüpunkt false, // Separator davor anzeigen false // Separator dahinter anzeigen ); return; } } Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
F.S. Moderator
    
 Beiträge: 1924 Registriert: 23.04.2003 EPLAN Electric P8 2025 Prof.
|
erstellt am: 29. Dez. 2020 18:06 <-- editieren / zitieren --> Unities abgeben:          Nur für DietmarP
Hallo, ich habe das Script etwas angepasst und getestet, funktioniert Ich habe natürlich ein bei mir vorhandenes Script in sScriptFileName eingetragen, außerdem verwende ich für jedes Menü und PopupMenü eigene Variablen für die Menü-ID's Code:
using System; using System.Diagnostics; using System.Windows.Forms; using Eplan.EplApi.Base; using Eplan.EplApi.Scripting;public class _09_Externe_Programme_02_PID_Tools { private object oCLI; [DeclareAction("StartProcess")] public void Function(string processName, string parameter) { try { parameter = PathMap.SubstitutePath(parameter); Process.Start(processName, parameter); } catch (Exception ex) { MessageBox.Show( ex.Message, "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error ); } return; } [DeclareMenu] public void MenuFunction() { Eplan.EplApi.Gui.Menu menu = new Eplan.EplApi.Gui.Menu(); uint menuId1; // Menü-ID vom neu erzeugten Menü menuId1 = menu.AddMainMenu( "Tools", // Name: Menü "Hilfe", // neben Menüpunkt "Taschenrechner", // Name: Menüpunkt "StartProcess /processName:calc /parameter:''", // Name: Action "Taschenrechner öffnen...", // Statustext 1 // 1 = Hinter Menüpunkt, 0 = Vor Menüpunkt ); string quote = "\""; menu.AddMenuItem( "Zeichentabelle", // Name: Menüpunkt "StartProcess /processName:charmap /parameter:''", // Name: Action "Zeichentabelle öffnen...", // Statustext menuId1, // Menü-ID: Einfügen/Fenstermakro... int.MaxValue, // 1 = Hinter Menüpunkt, 0 = Vor Menüpunkt false, // Separator davor anzeigen false // Separator dahinter anzeigen ); uint menuId2; // Menü-ID vom neu erzeugten Menü menuId2 = menu.AddPopupMenuItem( "Projektbearbeitung", // Name: Menü "Projektordner öffnen", // Name: Menüpunkt "StartProcess /processName:explorer /parameter:" + quote + "$(PROJECTPATH)" + quote, // Name: Action "Projektordner im Explorer öffnen...", // Statustext menuId1, // Menü-ID: Einfügen/Fenstermakro... int.MaxValue, // 1 = Hinter Menüpunkt, 0 = Vor Menüpunkt false, // Separator davor anzeigen false // Separator dahinter anzeigen ); string sScriptFileName = @"C:\Users\Frank\OneDrive\Eplan\Skripte\Eigene\GetEplanVersion.cs"; menu.AddMenuItem( "Projektbackup erstellen", // Name: Menüpunkt "ExecuteScript /ScriptFile:\"" + sScriptFileName, // Name: Action "Backup wird erstellt...", // Statustext menuId2, // Menü-ID int.MaxValue, // 1 = hinter Menüpunkt, 0 = vor Menüpunkt false, // Separator davor anzeigen false // Separator dahinter anzeigen ); uint menuId3; // Menü-ID vom neu erzeugten Menü menuId3 = menu.AddPopupMenuItem( "Handbücher", // Name: Menü "EPLAN Electric P8 Artikelverwaltung", // Name: Menüpunkt "StartProcess /processName:" + quote + @"H:\\PID\Documentation & Manuals\EPLAN\EPLAN Electric P8 Artikelverwaltung.pdf" + quote + " /PARAMETER:''", // Name: Action "PDF öffnen...", // Statustext menuId2, // Menü-ID int.MaxValue, // 1 = hinter Menüpunkt, 0 = vor Menüpunkt false, // Separator davor anzeigen false // Separator dahinter anzeigen ); menu.AddMenuItem( "EPLAN Electric P8 automatisieren", // Name: Menüpunkt "StartProcess /processName:" + quote + @"H:\\PID\Documentation & Manuals\EPLAN\EPLAN Electric P8 automatisieren.pdf" + quote + " /PARAMETER:''", // Name: Action "PDF öffnen...", // Statustext menuId3, // Menü-ID int.MaxValue, // 1 = hinter Menüpunkt, 0 = vor Menüpunkt false, // Separator davor anzeigen false // Separator dahinter anzeigen ); } }
------------------ grüße FrankS Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DietmarP Mitglied
 Beiträge: 5 Registriert: 18.12.2018
|
erstellt am: 30. Dez. 2020 07:37 <-- editieren / zitieren --> Unities abgeben:         
Hallo Frank, vielen Dank für die Arbeit die du dir gemacht hast. Ich habe das mal alles so übernommen und den Pfad für den sScriptFileName angepasst. Ich habe das jetzt auch bei mir am laufen bekommen. Der Aufbau vom Script ist jetzt auch strukturierter mit den menuId's. Da das jetzt mit den Script Aufrufen funktioniert, werde ich mich mal daran machen, und das passend erweitern. Du hast mir da sehr geholfen. Einen schönen Tag Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
 |