| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für EPLAN |
| |
| Eplan L!ve: Best Practices und mehr in nur zweieinhalb Stunden, eine Pressemitteilung
|
Autor
|
Thema: Konstruktionsmodus beim Schrankaufbau (1540 / mal gelesen)
|
EplanNerd Mitglied Elektrokonstrukteur
Beiträge: 82 Registriert: 17.11.2020
|
erstellt am: 17. Nov. 2020 14:37 <-- editieren / zitieren --> Unities abgeben:
Hallo allerseits, ich bin relativ neu beim Thema Eplan-Script und brauche mal Hilfe von den Spezis. Ziel des Scripts ist es beim Einschalten des 2D-Schaltschrankaufbaunavigators automatisch den Rasterfang aus- / Objektfang ein- / Konstruktionsmodus einzuschalten. Leider bekomme ich es nicht hin den Zustand vom Rasterfang abzufragen. Ich vermute, es ist nicht über "USER.GedViewer.GridSnap" abgefragt. Vorab vielen Dank für die Hilfe! Code:
public class Schrankaufbau { [DeclareEventHandler("onActionStart.String.XplDoPanelLayoutAction")] public long UmschaltungGrafik(IEventParameter iEventParameter) { CommandLineInterpreter CLI = new CommandLineInterpreter(); //MessageBox.Show ("Rasterfang: " + Rasterfang.ToString()); //MessageBox.Show ("Objektfang: " + Objektfang.ToString()); //MessageBox.Show ("Konstruktionsmodus: " + Konstruktionsmodus.ToString()); if (!Rasterfang) CLI.Execute("XGedToggleGridSnapAction"); if (!Objektfang) CLI.Execute("XGedToggleObjectSnapAction"); if (!Konstruktionsmodus) CLI.Execute("XGedActionToggleConstructionMode"); return 0; } private bool Rasterfang { get { return new Eplan.EplApi.Base.Settings().GetBoolSetting("USER.GedViewer.GridSnap", 0); } } private bool Objektfang { get { return new Eplan.EplApi.Base.Settings().GetBoolSetting("USER.GedViewer.ObjectSnap.Active", 0); } } private bool Konstruktionsmodus { get { return new Eplan.EplApi.Base.Settings().GetBoolSetting("USER.GedViewer.ConstructionMode", 0); } } }
------------------ Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt. (Albert Einstein) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
F.S. Moderator
Beiträge: 1881 Registriert: 23.04.2003 EPLAN Electric P8 2024 Prof.
|
erstellt am: 18. Nov. 2020 07:57 <-- editieren / zitieren --> Unities abgeben: Nur für EplanNerd
|
EplanNerd Mitglied Elektrokonstrukteur
Beiträge: 82 Registriert: 17.11.2020
|
erstellt am: 18. Nov. 2020 08:30 <-- editieren / zitieren --> Unities abgeben:
VIELEN VIELEN DANK! Woher weißt du denn sowas? Bin relativ frisch im Thema und mach es eher im Format Try&Error. Eine Dokumentation wäre da vielleicht manchmal hilfreich. Grüße ------------------ Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt. (Albert Einstein) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HOC Ehrenmitglied
Beiträge: 1884 Registriert: 14.06.2004 5.70 Prof P8 2.9.4 Update15
|
erstellt am: 18. Nov. 2020 09:21 <-- editieren / zitieren --> Unities abgeben: Nur für EplanNerd
Zitat: Original erstellt von EplanNerd: ...beim Einschalten des 2D-Schaltschrankaufbaunavigators automatisch den Rasterfang aus- / Objektfang ein- / Konstruktionsmodus einzuschalten...
Daran wäre ich auch interessiert Ich kann aber leider nichts mit (meinen) Script-Kenntnissen beitragen ------------------ Grüße HOC Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
EplanNerd Mitglied Elektrokonstrukteur
Beiträge: 82 Registriert: 17.11.2020
|
erstellt am: 18. Nov. 2020 09:47 <-- editieren / zitieren --> Unities abgeben:
Hallo HOC, weiter unten findest du meinen aktuellen Code. Leider bekomme ich es noch nicht hin, dass beim Schließen des Navigators wieder umgeschaltet werden. Vielleicht könnte uns da noch jemand helfen? Alternativ hatte ich auch schon die Idee irgendwie das Script PageChangeZoomAll von Nairolf zu nutzen. Darin müsste man prüfen, ob die Schaltplanseite grafisch oder Schaltschrankaufbau ist und dann den Konstruktionsmodus einschalten. Ansonsten würde der Konstruktionsmodus abgeschaltet. Alles noch Phantasie. Vielleicht ist ja jemand motiviert zu helfen . Code:
public class Schrankaufbau { [DeclareEventHandler("onActionStart.String.XplDoPanelLayoutAction")] public long UmschaltungGrafik(IEventParameter iEventParameter) { CommandLineInterpreter CLI = new CommandLineInterpreter(); if (Rasterfang) CLI.Execute("XGedToggleGridSnapAction"); if (!Objektfang) CLI.Execute("XGedToggleObjectSnapAction"); if (!Konstruktionsmodus) CLI.Execute("XGedActionToggleConstructionMode"); return 0; } private bool Rasterfang { get { return new Eplan.EplApi.Base.Settings().GetBoolSetting("USER.GedViewer.Grid.Snap", 0); } } private bool Objektfang { get { return new Eplan.EplApi.Base.Settings().GetBoolSetting("USER.GedViewer.ObjectSnap.Active", 0); } } private bool Konstruktionsmodus { get { return new Eplan.EplApi.Base.Settings().GetBoolSetting("USER.GedViewer.ConstructionMode", 0); } } }
------------------ Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt. (Albert Einstein) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
EplanNerd Mitglied Elektrokonstrukteur
Beiträge: 82 Registriert: 17.11.2020
|
erstellt am: 18. Nov. 2020 13:20 <-- editieren / zitieren --> Unities abgeben:
Hallo nochmal, da ich es nicht besser wusste, habe ich Umschaltung jetzt an den Button für den Konstruktionsmodus gehangen. Vorlage dazu war der Thread: Tastenkürzel für Objektfang und Konstruktionsmodus https://ww3.cad.de/foren/ubb/Forum467/HTML/006069.shtml#000001 Code: public class Schrankaufbau { [DeclareEventHandler("onActionStart.String.XGedActionToggleConstructionMode")] public bool ToggleKonstruktionsmodus(IEventParameter iEventParameter) { CommandLineInterpreter CLI = new CommandLineInterpreter(); if (!Konstruktionsmodus) { if (Rasterfang) CLI.Execute("XGedToggleGridSnapAction"); if (!Objektfang) CLI.Execute("XGedToggleObjectSnapAction"); } else { if (!Rasterfang) CLI.Execute("XGedToggleGridSnapAction"); if (Objektfang) CLI.Execute("XGedToggleObjectSnapAction"); } return true; } private bool Rasterfang { get { return new Eplan.EplApi.Base.Settings().GetBoolSetting("USER.GedViewer.Grid.Snap", 0); } } private bool Objektfang { get { return new Eplan.EplApi.Base.Settings().GetBoolSetting("USER.GedViewer.ObjectSnap.Active", 0); } } private bool Konstruktionsmodus { get { return new Eplan.EplApi.Base.Settings().GetBoolSetting("USER.GedViewer.ConstructionMode", 0); } } }
------------------ Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt. (Albert Einstein) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
F.S. Moderator
Beiträge: 1881 Registriert: 23.04.2003 EPLAN Electric P8 2024 Prof.
|
erstellt am: 18. Nov. 2020 15:25 <-- editieren / zitieren --> Unities abgeben: Nur für EplanNerd
Hallo, ich habe etwas gebraucht bis ich auf die Lösung gekommen bin wie man im Scripting den Zustand des Navigator rausbekommen kann. Der folgende Code macht genau das was du möchtest, er bietet aber noch Potenzial. Ich weiss nicht ob es ratsam ist die Einstellungen zu togglen, es wäre bestimmt besser der gewünschten Zustand direkt in die Einstellungen zu schreiben, auch könnte man die Zustände vorher noch speichern und nach schließen des Navigators wieder herstellen.
Code:
public class Class { [DeclareEventHandler("onActionStart.String.XplDoPanelLayoutAction")] public bool Function() { CommandLineInterpreter CLI = new CommandLineInterpreter(); //Prüfen ob Navigator ein oder aus geschaltet wird Eplan.EplApi.Gui.Menu oMenu = new Eplan.EplApi.Gui.Menu(); bool IsActionChecked = oMenu.IsActionChecked("XplDoPanelLayoutAction"); if (!IsActionChecked) //Navigator ist aus und wird eingeschaltet { if (Rasterfang) CLI.Execute("XGedToggleGridSnapAction"); if (!Objektfang) CLI.Execute("XGedToggleObjectSnapAction"); if (!Konstruktionsmodus) CLI.Execute("XGedActionToggleConstructionMode"); } else //Navigator ist ein und wird ausgeschaltet { if (!Rasterfang) CLI.Execute("XGedToggleGridSnapAction"); if (Objektfang) CLI.Execute("XGedToggleObjectSnapAction"); if (Konstruktionsmodus) CLI.Execute("XGedActionToggleConstructionMode"); } return true; } private bool Rasterfang { get { return new Eplan.EplApi.Base.Settings().GetBoolSetting("USER.GedViewer.Grid.Snap", 0); } } private bool Objektfang { get { return new Eplan.EplApi.Base.Settings().GetBoolSetting("USER.GedViewer.ObjectSnap.Active", 0); } } private bool Konstruktionsmodus { get { return new Eplan.EplApi.Base.Settings().GetBoolSetting("USER.GedViewer.ConstructionMode", 0); } } }
------------------ grüße FrankS Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
EplanNerd Mitglied Elektrokonstrukteur
Beiträge: 82 Registriert: 17.11.2020
|
erstellt am: 18. Nov. 2020 15:35 <-- editieren / zitieren --> Unities abgeben:
Vielen vielen Dank, endlich ein Punkt der ewigen ToDo Liste weg. Mal sehen, wie sich das Script so in Zukunft macht. Aber es ist genau das, was ich wollte. Grüße A.T. ------------------ Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt. (Albert Einstein) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |