EPLAN

SelectLanguage

Wie ihr vielleicht bemerkt habt, habe ich viel mit dem MultiLanguageTool von EPLAN gearbeitet. Ziel war es eine Sprachauswahl zu machen um per Scripting eine Sprache zu wählen.

Ich persönlich benötige des öfteren eine andere Sprache wenn man eine Beschriftung erstellt (z.B. Graviertexte).

Das Script muss geladen werden und kann dann aus jedem anderen Script aufgerufen werden. Man erhält einen Rückgabeparameter mit der ausgewählten Sprache “Language”. Zusätzlich ist es möglich den Dialog-Namen anzugeben (DialogName). Folgende Sprachentypen stehen bereit:

  • Project: Projektsprachen
  • Display: Anzeigesprachen

Anbei ein Beispielvideo. Ich habe auch ein Beispiel angehängt wie man die Action nutzt.

SelectLanguage (1327 Downloads )

 

using System.Windows.Forms;
using Eplan.EplApi.ApplicationFramework;
using Eplan.EplApi.Scripting;

public class SelectLanguage_UsingExample
{
    [Start]
    public void Execute()
    {
        CommandLineInterpreter oCLI = new CommandLineInterpreter();
        ActionCallingContext acc = new ActionCallingContext();
        string ActionReturnParameterValue = string.Empty;

        acc.AddParameter("Language", "Project"); // parameters: "Project" or "Display"
        acc.AddParameter("DialogName", "MyDialogName");
        oCLI.Execute("SelectLanguage", acc);
        acc.GetParameter("Language", ref ActionReturnParameterValue);

        MessageBox.Show("Language from SelectLanguage:\n\n---> " + ActionReturnParameterValue);

    }
}

 

Von |2017-11-09T12:23:49+01:002012-05-06|EPLAN, EPLAN-Scripts|

MultilanguageToolExamples Settings

Weiter gehts mit dem MultilanguageTool von EPLAN. Anbei Beispiele wie man die Übersetzungseinstellungen ändern kann.

  MultilanguageToolExamples Settings (1380 Downloads )

 

using Eplan.EplApi.ApplicationFramework;
using Eplan.EplApi.Scripting;

public class MultilanguageToolExamples_Settings
{
    [Start]
    public void MultilanguageToolExamples_Settings_Void()
    {
        CommandLineInterpreter oCLI = new CommandLineInterpreter();
        ActionCallingContext acc = new ActionCallingContext();

        oCLI.Execute("XTrSettingsDlgAction"); // Settings DEFAULT

        // Bei Eingabe übersetzen
        #region SetTranslationOnInput
        acc.AddParameter("ACTIVE", "YES"); // parameters: YES, NO
        oCLI.Execute("SetTranslationOnInput", acc);
        oCLI.Execute("XTrSettingsDlgAction");
        #endregion

        // Groß- / Kleinschreibung beachten
        #region SetMatchCase 
        acc.AddParameter("ACTIVE", "YES"); // parameters: YES, NO
        oCLI.Execute("SetMatchCase", acc);
        oCLI.Execute("XTrSettingsDlgAction");
        #endregion

        // Bereits übersetzte Texte verändern
        #region SetChangeTranslatedText
        acc.AddParameter("ACTIVE", "YES"); // parameters: YES, NO
        oCLI.Execute("SetChangeTranslatedText", acc);
        oCLI.Execute("XTrSettingsDlgAction");
        #endregion

        // Manuelle Auswahl bei Mehrfachbedeutungen
        #region SetManualSelectionForMultipleMeanings
        acc.AddParameter("ACTIVE", "YES"); // parameters: YES, NO
        oCLI.Execute("SetManualSelectionForMultipleMeanings", acc);
        oCLI.Execute("XTrSettingsDlgAction");
        #endregion

        // Segment
        #region SetTranslationSegment
        acc.AddParameter("SEGMENT", "ENTIRE ENTRY"); // parameters: WORD, SENTENCE, ENTIRE ENTRY
        oCLI.Execute("SetTranslationSegment", acc);
        oCLI.Execute("XTrSettingsDlgAction");
        #endregion

        // Groß- / Kleinschreibung
        #region SetUpperLowerCase
        acc.AddParameter("TYPE", "ALLUPPERCASE"); // parameters: ACCORDINGTODICTIONARY, ALLUPPERCASE, ALLLOWERCASE, CAPITALIZEFIRSTLETTER
        oCLI.Execute("SetUpperLowerCase", acc);
        oCLI.Execute("XTrSettingsDlgAction");
        #endregion

        // Fehlende Übersetzung: Anzeigen
        #region SetShowMissingTranslation
        acc.AddParameter("ACTIVE", "YES"); // parameters: YES, NO
        oCLI.Execute("SetShowMissingTranslation", acc);
        oCLI.Execute("XTrSettingsDlgAction");
        #endregion
    }
}
Von |2017-11-09T12:23:49+01:002012-05-03|EPLAN, EPLAN-Scripts|

MultilanguageToolExamples Set

Anbei wieder ein Beispielscript zum MultilanguageTool von EPLAN.

So kann man per Script die Sprachen setzen und auch umschalten.

 

MultilanguageToolExamples_Set (1307 Downloads )

 

using Eplan.EplApi.ApplicationFramework;
using Eplan.EplApi.Scripting;

public class MultilanguageToolExamples_Set
{
    [Start]
    public void MultilanguageToolExamples_Set_Void()
    {
        CommandLineInterpreter oCLI = new CommandLineInterpreter();
        ActionCallingContext acc = new ActionCallingContext();

        oCLI.Execute("XTrSettingsDlgAction"); // Settings DEFAULT

        #region SetProjectLanguages
        acc.AddParameter("LANGUAGELIST", "de_DE;en_EN;zh_CN;");
        oCLI.Execute("SetProjectLanguages", acc);
        oCLI.Execute("XTrSettingsDlgAction");
        #endregion

        #region ChangeLanguage
        acc.AddParameter("varLANGUAGE","en_EN");
        acc.AddParameter("dispLANGUAGE", "en_EN;zh_CN;");
        oCLI.Execute("ChangeLanguage", acc);
        oCLI.Execute("XTrSettingsDlgAction");
        #endregion

    }
}

 

Von |2017-11-09T12:23:49+01:002012-05-02|EPLAN, EPLAN-Scripts|

MultilanguageToolExamples Get

Für dieses Script ist die Erweiterung MultilanguageTool von EPLAN erforderlich. Diese findet ihr im Support-Bereich bei EPLAN zum Download (Symbolleiste zur Umschaltung der Fremdsprachen).

Anbei ein Beispielscript mit folgenden Funktion:

  • GetProjectLanguages: Projektsprachen
  • GetDisplayLanguages: Anzeigesprachen
  • GetVariableLanguage: Einsprachig variabel

 

MultilanguageToolExamples_Get (1531 Downloads )

 

 

using System.Windows.Forms;
using Eplan.EplApi.ApplicationFramework;
using Eplan.EplApi.Scripting;

public class MultilanguageToolExamples_Get
{
    [Start]
    public void MultilanguageToolExamples_Get_Void()
    {
        CommandLineInterpreter oCLI = new CommandLineInterpreter();
        ActionCallingContext acc = new ActionCallingContext();
        string ActionReturnParameterValue = string.Empty;
        string strMessage = string.Empty;

        #region GetProjectLanguages
        oCLI.Execute("GetProjectLanguages", acc);
        acc.GetParameter("LANGUAGELIST", ref ActionReturnParameterValue);
        string[] ProjectLanguages = ActionReturnParameterValue.Split(';');

        foreach (string s in ProjectLanguages)
        {
            strMessage = strMessage + s + "\n";
        }
        MessageBox.Show(strMessage, "GetProjectLanguages");
        strMessage = string.Empty;
        #endregion

        #region GetDisplayLanguages
        oCLI.Execute("GetDisplayLanguages", acc);
        acc.GetParameter("LANGUAGELIST", ref ActionReturnParameterValue);
        string[] DisplayLanguages = ActionReturnParameterValue.Split(';');

        foreach(string s in DisplayLanguages)
        {
            strMessage = strMessage + s + "\n";
        }
        MessageBox.Show(strMessage, "GetDisplayLanguages");
        strMessage = string.Empty;
        #endregion

        #region GetVariableLanguage
        oCLI.Execute("GetVariableLanguage", acc);
        acc.GetParameter("LANGUAGELIST", ref ActionReturnParameterValue);
        string VariableLanguage = ActionReturnParameterValue;
        strMessage = strMessage + VariableLanguage + "\n";
        MessageBox.Show(strMessage, "GetVariableLanguage");
        strMessage = string.Empty;
        #endregion

    }
}

 

Von |2017-11-09T12:23:49+01:002012-04-30|EPLAN, EPLAN-Scripts|

InsertUniversalPart3D

Update V2

Nairolf hat sich die Mühe gemacht und paar Änderungen am Script gemacht:

  • Anpassung zum Einfügen von wahlweise Schrankbauteil / Artikelplatzierung, normales Bauteil
  • Eingabemöglichkeit einer Bauteilbeschreibung
  • Quellmakros angepasst (Flag “Bauteil benötigt Bohrung auf Montagefläche” = FALSE)
  • Korrektur bei “Stückzahl / Menge”, wenn Artikelnummer leer
  • Verhalten bei fehlender Eingabe B / H / T
Ich hab kurz die Prüfung der Textboxen auf Zahlen geändert (gab Probleme mit benutzerdefinierten Steuerelementen in *.cs-Dateien).

Mit diesem Script kann ähnlich wie in EPLAN Cabinet ein Universalbauteil eingefügt werden.

Leider ist es in Pro Panel nicht möglich freie Geräte mit konfigurierbaren Abmaßen einzufügen. Es wird ein temporäres Makro erzeugt und als Artikelplatzierung normales Bauteil eingefügt.

Zusätzlich kann eine Artikelnummer vergeben werden.

Der Makropfad für die Vorlage muss im Script hinterlegt werden:

public string strMacroFileName1 = @"$(MD_MACROS)\InsertUniversalPart3D_Schrankbauteil.ema";
public string strMacroFileName2 = @"$(MD_MACROS)\InsertUniversalPart3D_Artikelplatzierung.ema";

Das Script laden und es erscheint ein neuer Menüpunkt unter Einfügen:

InsertUniversalPart3D_V2 (1517 Downloads )

InsertUniversalPart3D_Macros (1441 Downloads )

 

//Speicherort der Macro-Templates ggf hier anpassen:
public string strMacroFileName1 = @"$(MD_MACROS)\InsertUniversalPart3D_Schrankbauteil.ema";
public string strMacroFileName2 = @"$(MD_MACROS)\InsertUniversalPart3D_Artikelplatzierung.ema";

#region EPLAN menu
[DeclareMenu]
public void MenuFunction()
{
    Eplan.EplApi.Gui.Menu oMenu = new Eplan.EplApi.Gui.Menu();
    oMenu.AddMenuItem(
        "Freies Gerät...",
        "InsertUniversalPart3D",
        "Freies Gerät in den Bauraum einfügen...",
        37181,
        1,
        false,
        false
        );
}
#endregion

#region EPLAN action
[DeclareAction("InsertUniversalPart3D")]
public void InsertUniversalPart3DVoid()
{
    frmInsertUniversalPart3D_V2 frm = new frmInsertUniversalPart3D_V2();
    frm.ShowDialog();
}
#endregion

private void btnCancel_Click(object sender, System.EventArgs e)
{
    Close();
}

private void btnOk_Click(object sender, System.EventArgs e)
{    
    #region check_macro_to_use

    string sMacroFileName;
    switch (cbFunctionDef.Text)
    {
        case "Artikelplatzierung, normales Bauteil":
            sMacroFileName = strMacroFileName2;
            break;
        case "Schrankbauteil, allgemein":
            sMacroFileName = strMacroFileName1;
            break;
        default:
            sMacroFileName = strMacroFileName1;
            break;
    }
    #endregion

    #region check_user_entries
    if (txtWidth.Text == string.Empty || txtHeight.Text == string.Empty || txtDepth.Text == string.Empty)
    {
        MessageBox.Show("Die folgenden Eingaben müssen gefüllt sein:\n\n'Breite'\n'Höhe'\n'Tiefe'", "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error);
        return;
    }
    #endregion

    #region insert_eplan_macro
    if (File.Exists(PathMap.SubstitutePath(sMacroFileName)))
    {
        // Read Template
        string NewMacro = File.ReadAllText(PathMap.SubstitutePath(sMacroFileName));

        // Replace
        NewMacro = NewMacro.Replace("$(Width)", txtWidth.Text.Replace(",","."));
        NewMacro = NewMacro.Replace("$(Hight)", txtHeight.Text.Replace(",", "."));
        NewMacro = NewMacro.Replace("$(Depth)", txtDepth.Text.Replace(",", "."));
        NewMacro = NewMacro.Replace("$(Partnumber)", txtPartnumber.Text);
        if (txtPartnumber.Text != string.Empty)
        {
            NewMacro = NewMacro.Replace("$(PartnumberCnt)", "1");
        }
        else
        {
            NewMacro = NewMacro.Replace("$(PartnumberCnt)", "0");
        }

        NewMacro = NewMacro.Replace("$(Description)", txtDescription.Text);

        // Macro
        string strMacroPathTemp = PathMap.SubstitutePath("$(TMP)") + @"\" + "InsertUniversalPart3D_TEMP.ema";
        File.WriteAllText(strMacroPathTemp, NewMacro);
        ActionCallingContext acc = new ActionCallingContext();
        acc.AddParameter("Name", "XMIaInsertMacro");
        acc.AddParameter("filename", strMacroPathTemp);
        acc.AddParameter("variant", "0");
        new CommandLineInterpreter().Execute("XGedStartInteractionAction", acc); 
    }
    else
    {
        MessageBox.Show("Vorlage nicht gefunden:\n" + sMacroFileName, "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
    #endregion

    Close();
}

#region NumTextbox
private static void NumTextbox(KeyPressEventArgs e)
{
    if (",.1234567890\b".IndexOf(e.KeyChar.ToString()) < 0)
    {
        e.Handled = true;
    }
}

private void txtWidth_KeyPress(object sender, KeyPressEventArgs e)
{
    NumTextbox(e);
}

private void txtHeight_KeyPress(object sender, KeyPressEventArgs e)
{
    NumTextbox(e);
}

private void txtDepth_KeyPress(object sender, KeyPressEventArgs e)
{
    NumTextbox(e);
}
#endregion

private void frmInsertUniversalPart3D_Load(object sender, System.EventArgs e)
{
    // Standard Werte setzen
    cbFunctionDef.Text = "Artikelplatzierung, normales Bauteil";
}

private void lilblVersion_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
    Process.Start(@"https://www.suplanus.de");
}

 

Von |2017-11-09T12:23:49+01:002012-04-26|EPLAN, EPLAN-Scripts|
Nach oben