Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  EPLAN Electric P8
  Pulldown Menü in Script abfragen

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für EPLAN
Autor Thema:  Pulldown Menü in Script abfragen (4283 mal gelesen)
pegu
Mitglied
Elektrotechniker


Sehen Sie sich das Profil von pegu an!   Senden Sie eine Private Message an pegu  Schreiben Sie einen Gästebucheintrag für pegu

Beiträge: 941
Registriert: 27.04.2007

P8 Prof. 2.9 SP1 Update 4

erstellt am: 22. Jul. 2015 15:17    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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



Sehen Sie sich das Profil von F.S. an!   Senden Sie eine Private Message an F.S.  Schreiben Sie einen Gästebucheintrag für F.S.

Beiträge: 1815
Registriert: 23.04.2003

EPLAN Electric P8
2023 Prof.

erstellt am: 22. Jul. 2015 15:43    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für pegu 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von pegu an!   Senden Sie eine Private Message an pegu  Schreiben Sie einen Gästebucheintrag für pegu

Beiträge: 941
Registriert: 27.04.2007

P8 Prof. 2.9 SP1 Update 4

erstellt am: 22. Jul. 2015 15:47    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Frank,

danke für die Antwort!

Eine Frage noch:

wie müsst das als Code aussehen?

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

pegu
Mitglied
Elektrotechniker


Sehen Sie sich das Profil von pegu an!   Senden Sie eine Private Message an pegu  Schreiben Sie einen Gästebucheintrag für pegu

Beiträge: 941
Registriert: 27.04.2007

P8 Prof. 2.9 SP1 Update 4

erstellt am: 22. Jul. 2015 15:52    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

bzw. würde das so passen und gehen:

string strSprache = string.Empty;

strSprache= comboBox1.Text;

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

F.S.
Moderator



Sehen Sie sich das Profil von F.S. an!   Senden Sie eine Private Message an F.S.  Schreiben Sie einen Gästebucheintrag für F.S.

Beiträge: 1815
Registriert: 23.04.2003

EPLAN Electric P8
2023 Prof.

erstellt am: 23. Jul. 2015 07:06    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für pegu 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von pegu an!   Senden Sie eine Private Message an pegu  Schreiben Sie einen Gästebucheintrag für pegu

Beiträge: 941
Registriert: 27.04.2007

P8 Prof. 2.9 SP1 Update 4

erstellt am: 23. Jul. 2015 08:08    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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



Sehen Sie sich das Profil von F.S. an!   Senden Sie eine Private Message an F.S.  Schreiben Sie einen Gästebucheintrag für F.S.

Beiträge: 1815
Registriert: 23.04.2003

EPLAN Electric P8
2023 Prof.

erstellt am: 23. Jul. 2015 08:24    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für pegu 10 Unities + Antwort hilfreich

Sieht gut aus, und wenn es funktioniert ist doch alles Paletti.

------------------
grüße
FrankS

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

ENPaddern
Mitglied



Sehen Sie sich das Profil von ENPaddern an!   Senden Sie eine Private Message an ENPaddern  Schreiben Sie einen Gästebucheintrag für ENPaddern

Beiträge: 15
Registriert: 07.05.2015

erstellt am: 29. Jul. 2015 14:22    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für pegu 10 Unities + Antwort hilfreich

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



Sehen Sie sich das Profil von F.S. an!   Senden Sie eine Private Message an F.S.  Schreiben Sie einen Gästebucheintrag für F.S.

Beiträge: 1815
Registriert: 23.04.2003

EPLAN Electric P8
2023 Prof.

erstellt am: 29. Jul. 2015 14:59    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für pegu 10 Unities + Antwort hilfreich

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



Sehen Sie sich das Profil von ENPaddern an!   Senden Sie eine Private Message an ENPaddern  Schreiben Sie einen Gästebucheintrag für ENPaddern

Beiträge: 15
Registriert: 07.05.2015

erstellt am: 29. Jul. 2015 15:11    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für pegu 10 Unities + Antwort hilfreich

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



Sehen Sie sich das Profil von F.S. an!   Senden Sie eine Private Message an F.S.  Schreiben Sie einen Gästebucheintrag für F.S.

Beiträge: 1815
Registriert: 23.04.2003

EPLAN Electric P8
2023 Prof.

erstellt am: 29. Jul. 2015 15:48    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für pegu 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von Jonny Wire an!   Senden Sie eine Private Message an Jonny Wire  Schreiben Sie einen Gästebucheintrag für Jonny Wire

Beiträge: 786
Registriert: 08.12.2008

EPLAN Electric P8
... in allen Versionen/Varianten

erstellt am: 30. Jul. 2015 13:27    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für pegu 10 Unities + Antwort hilfreich

Hatte das fertig rumliegen  (Ohne XML Export)... sollte schneller sein:
Code:
List<string> languages = new List<string>();
Settings setting = new Settings();
string stringSetting = setting.GetStringSetting("USER.TRANSLATE.TRANSLATE_LANGUAGES", 0);
string[] split = stringSetting.Split(';');
Array.Sort(split);
languages = split.ToList();

------------------
Scripting in EPLAN ist einfach (toll)!

Scripte & Anwendungen rund um EPLAN!

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

F.S.
Moderator



Sehen Sie sich das Profil von F.S. an!   Senden Sie eine Private Message an F.S.  Schreiben Sie einen Gästebucheintrag für F.S.

Beiträge: 1815
Registriert: 23.04.2003

EPLAN Electric P8
2023 Prof.

erstellt am: 30. Jul. 2015 13:52    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für pegu 10 Unities + Antwort hilfreich

@Jonny
das sind dann aber nicht die Projektsprachen, oder?

------------------
grüße
FrankS

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

ENPaddern
Mitglied



Sehen Sie sich das Profil von ENPaddern an!   Senden Sie eine Private Message an ENPaddern  Schreiben Sie einen Gästebucheintrag für ENPaddern

Beiträge: 15
Registriert: 07.05.2015

erstellt am: 30. Jul. 2015 13:52    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für pegu 10 Unities + Antwort hilfreich

Das sind aber dann nicht die im Projekt hinterlegten Sprachen 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Jonny Wire
Mitglied
Script-Troll


Sehen Sie sich das Profil von Jonny Wire an!   Senden Sie eine Private Message an Jonny Wire  Schreiben Sie einen Gästebucheintrag für Jonny Wire

Beiträge: 786
Registriert: 08.12.2008

EPLAN Electric P8
... in allen Versionen/Varianten

erstellt am: 31. Jul. 2015 09:04    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für pegu 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von Jonny Wire an!   Senden Sie eine Private Message an Jonny Wire  Schreiben Sie einen Gästebucheintrag für Jonny Wire

Beiträge: 786
Registriert: 08.12.2008

EPLAN Electric P8
... in allen Versionen/Varianten

erstellt am: 04. Aug. 2015 07:28    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für pegu 10 Unities + Antwort hilfreich

Ich hab mal die Lösung bisschen komprimiert und in ein eigenes Script gepackt.
Dadurch kann man von verschiedenen Scripten auf die Projektsprachen zugreifen.
http://suplanus.de/getprojectlanguages/

------------------
Scripting in EPLAN ist einfach (toll)!

Scripte & Anwendungen rund um EPLAN!

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz