| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für EPLAN |
| |
| Netzinfrastruktur im Fokus: Energiewende umsetzen und jetzt industrialisieren , eine Pressemitteilung
|
Autor
|
Thema: Pulldown Menü in Script abfragen (4364 mal gelesen)
|
pegu Mitglied Elektrotechniker
Beiträge: 941 Registriert: 27.04.2007 P8 Prof. 2.9 SP1 Update 4
|
erstellt am: 22. Jul. 2015 15:17 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich bin mit dem Thema Scripten nicht so bewandert ... Ich habe bei uns in der Firma ein kleines Script geschrieben, mit dem verschiedene Beschriftungsschemats abgearbeitet werden können. Nun würde ich das ganze gerne um ein Pulldown Menü erweitern in dem man die Ausgabesprache steuern kann. Meine Frage: Wie frage ich ab, welcher Eintrag (z.B. Englisch) ausgewählt wurde? Wenn ich die Auswahl ermitteln kann, möchte ich diesen Code labellingContext1.AddParameter("LANGUAGE", "de_DE"); um diesen String anpassen. D.h. der Ausdruck "de_DE" soll durch den String ersetzt werden. Vielen Dank für Eure Hilfe!!
Grüße Sebastian [Diese Nachricht wurde von pegu am 23. Jul. 2015 editiert.] 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: 22. Jul. 2015 15:43 <-- editieren / zitieren --> Unities abgeben: Nur für pegu
Ja kann man machen. Die Auswahl im Pulldown-Menü würde ich in einem Setting speichern. In deinem Beschriftungs-Script kannst du dann dieses Setting auslesen und die Sprache so einstellen. Falls du nicht klar kommst nochmals melden. ------------------ grüße FrankS Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
pegu Mitglied Elektrotechniker
Beiträge: 941 Registriert: 27.04.2007 P8 Prof. 2.9 SP1 Update 4
|
erstellt am: 22. Jul. 2015 15:47 <-- editieren / zitieren --> Unities abgeben:
|
pegu Mitglied Elektrotechniker
Beiträge: 941 Registriert: 27.04.2007 P8 Prof. 2.9 SP1 Update 4
|
erstellt am: 22. Jul. 2015 15:52 <-- editieren / zitieren --> Unities abgeben:
|
F.S. Moderator
Beiträge: 1881 Registriert: 23.04.2003 EPLAN Electric P8 2024 Prof.
|
erstellt am: 23. Jul. 2015 07:06 <-- editieren / zitieren --> Unities abgeben: Nur für pegu
So alleine würde es nicht gehen, du brauchst dafür schon eine Form wo die ComboBox drauf ist, dann würde deine Variablen Zuweisung aber gehen. Ohne deinen Scriptcode zu sehen wird es schwer zu helfen. ------------------ grüße FrankS Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
pegu Mitglied Elektrotechniker
Beiträge: 941 Registriert: 27.04.2007 P8 Prof. 2.9 SP1 Update 4
|
erstellt am: 23. Jul. 2015 08:08 <-- editieren / zitieren --> Unities abgeben:
Hallo Frank, die ComboBox habe ich auf dem Formular. Ich habe auch schon eine Startwert und Auswahlwerte hinterlegt. Mit dem von mir geposteten Code, kann ich die Auswahl auslesen und als Variable an die Beschriftung übergeben. Hier mal die Codeschnipsel: // cobSprachwahl // this.cobSprachwahl.FormattingEnabled = true; this.cobSprachwahl.Items.AddRange(new object[] { "de_DE", "en_US", "fr_FR", "es_ES", "ru_RU", "pl_PL", "it_IT", "cs_CZ", "da_DK", "hu_HU", "ko_KR", "nl_NL", "pt_BR", "pt_PT", "sv_SE", "zh_CN"}); this.cobSprachwahl.Location = new System.Drawing.Point(12, 244); this.cobSprachwahl.Name = "cobSprachwahl"; this.cobSprachwahl.Size = new System.Drawing.Size(121, 21); this.cobSprachwahl.TabIndex = 13; this.cobSprachwahl.Text = "de_DE"; Dann das Auslesen: string strSprache = string.Empty; strSprache = cobSprachwahl.Text; Und noch die Übergabe an die Beschriftung: labellingContext2.AddParameter("LANGUAGE", strSprache); Hoffe das ist so in Ordnung (wie der Code gestalltet ist). Funktionieren tut es auf jedenfall ... 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: 23. Jul. 2015 08:24 <-- editieren / zitieren --> Unities abgeben: Nur für pegu
|
ENPaddern Mitglied
Beiträge: 15 Registriert: 07.05.2015
|
erstellt am: 29. Jul. 2015 14:22 <-- editieren / zitieren --> Unities abgeben: Nur für pegu
Zitat: Original erstellt von pegu:this.cobSprachwahl.Items.AddRange(new object[] { "de_DE", "en_US", "fr_FR", "es_ES", "ru_RU", "pl_PL", "it_IT", "cs_CZ", "da_DK", "hu_HU", "ko_KR", "nl_NL", "pt_BR", "pt_PT", "sv_SE", "zh_CN"});
Wenn du das gerade geöffnete Projekt bearbeiten willst kannst duch auch mit folgendem Code nur die bereits im Projekt vorhandenen Sprachen auslesen.
Damit solltest du es als Array zurückbekommen, so kann keine falsche Sprache ausgewählt werden:
Code:
string[] languages = new ProjectSettings(new ProjectManager().CurrentProject).GetStringSetting("TRANSLATEGUI.TRANSLATE_LANGUAGES", 0).Split(';');
[Diese Nachricht wurde von ENPaddern am 29. Jul. 2015 editiert.] 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: 29. Jul. 2015 14:59 <-- editieren / zitieren --> Unities abgeben: Nur für pegu
Zitat: Original erstellt von ENPaddern:
Wenn du das gerade geöffnete Projekt bearbeiten willst kannst duch auch mit folgendem Code nur die bereits im Projekt vorhandenen Sprachen auslesen.
Damit solltest du es als Array zurückbekommen, so kann keine falsche Sprache ausgewählt werden:
Code:
string[] languages = new ProjectSettings(new ProjectManager().CurrentProject).GetStringSetting("TRANSLATEGUI.TRANSLATE_LANGUAGES", 0).Split(';');
[Diese Nachricht wurde von ENPaddern am 29. Jul. 2015 editiert.]
Dies geht aber nicht im Scripting, geht nur mit API ! ------------------ grüße FrankS Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ENPaddern Mitglied
Beiträge: 15 Registriert: 07.05.2015
|
erstellt am: 29. Jul. 2015 15:11 <-- editieren / zitieren --> Unities abgeben: Nur für pegu
Zitat: Dies geht aber nicht im Scripting, geht nur mit API ! ------------------ grüße FrankS
Code: string save_settings = System.IO.Path.GetTempPath() + "Settings" + settings_filenumber + ".xml"ActionCallingContext oACC = new ActionCallingContext(); oACC.AddParameter("XMLFile", save_settings); oACC.AddParameter("Node", "PROJECT.TRANSLATEGUI.TRANSLATE_LANGUAGES"); new CommandLineInterpreter().Execute("XSettingsImport", oACC);
Geht denn sowas? Ne xml zu durchforsten dürfte ja nicht das Problem darstellen Arbeite grad halt dauernd mit API xD weiß nicht was ohne geht 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: 29. Jul. 2015 15:48 <-- editieren / zitieren --> Unities abgeben: Nur für pegu
XML geht, der Rest passt fast Es müßte so aussehen. Code:
string projectPath = PathMap.SubstitutePath("$(PROJECTPATH)"); string save_settings = System.IO.Path.GetTempPath() + "Settings" + settings_filenumber + ".xml"ActionCallingContext ACC = new ActionCallingContext(); ACC.AddParameter("XmlFile", save_settings); ACC.AddParameter("prj", projectPath); ACC.AddParameter("Node", "TRANSLATEGUI.TRANSLATE_LANGUAGES"); CommandLineInterpreter cmdLineItp = new CommandLineInterpreter(); cmdLineItp.Execute("XSettingsExport", ACC);
------------------ grüße FrankS Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jonny Wire Mitglied Script-Troll
Beiträge: 803 Registriert: 08.12.2008 EPLAN Electric P8 ... in allen Versionen/Varianten
|
erstellt am: 30. Jul. 2015 13:27 <-- editieren / zitieren --> Unities abgeben: Nur für pegu
|
F.S. Moderator
Beiträge: 1881 Registriert: 23.04.2003 EPLAN Electric P8 2024 Prof.
|
erstellt am: 30. Jul. 2015 13:52 <-- editieren / zitieren --> Unities abgeben: Nur für pegu
|
ENPaddern Mitglied
Beiträge: 15 Registriert: 07.05.2015
|
erstellt am: 30. Jul. 2015 13:52 <-- editieren / zitieren --> Unities abgeben: Nur für pegu
|
Jonny Wire Mitglied Script-Troll
Beiträge: 803 Registriert: 08.12.2008 EPLAN Electric P8 ... in allen Versionen/Varianten
|
erstellt am: 31. Jul. 2015 09:04 <-- editieren / zitieren --> Unities abgeben: Nur für pegu
Sorry hat ich überlesen... Hier meine Lösung (sollte da mal was auf Suplanus schreiben, sonst finde ich es selber nicht mehr):
Code: // Loads languages from Project and set the variable language private void LoadLanguages() { ActionCallingContext actionCallingContext = new ActionCallingContext(); actionCallingContext.AddParameter("prj", FullProjectPath()); actionCallingContext.AddParameter("node", "TRANSLATEGUI"); actionCallingContext.AddParameter("XMLFile", PathTempSettingsXml); new CommandLineInterpreter().Execute("XSettingsExport", actionCallingContext); if (File.Exists(PathTempSettingsXml)) { string languagesString = GetValueSettingsXml(PathTempSettingsXml, "/Settings/CAT/MOD/Setting[@name='TRANSLATE_LANGUAGES']/Val"); if (languagesString != null) { string[] languages = languagesString.Split(';'); languages = languages.Where(obj => !obj.Equals("")).ToArray(); // remove empty // ReSharper disable once CoVariantArrayConversion // In EPLAN OK cbbLanguage.Items.AddRange(languages); // Co-variant fix cbbLanguage.SelectedItem = DefaultLanguage; } else { MessageBox.Show("Keine Sprachen gefunden.", "Warnung", MessageBoxButtons.OK, MessageBoxIcon.Warning); } } } // Read EPLAN XML-ProjectInfo and returns the value private static string GetValueSettingsXml(string filename, string url) { XmlDocument xmlDocument = new XmlDocument(); xmlDocument.Load(filename); XmlNodeList rankListSchemaName = xmlDocument.SelectNodes(url); if (rankListSchemaName != null && rankListSchemaName.Count > 0) { // Get Text from MultiLanguage or not :) string value = rankListSchemaName[0].InnerText; return value; } else { return null; } }
------------------ → Scripting in EPLAN ist einfach (toll)!
→ Scripte & Anwendungen rund um EPLAN! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jonny Wire Mitglied Script-Troll
Beiträge: 803 Registriert: 08.12.2008 EPLAN Electric P8 ... in allen Versionen/Varianten
|
erstellt am: 04. Aug. 2015 07:28 <-- editieren / zitieren --> Unities abgeben: Nur für pegu
|