EPLAN

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|

MacrosInstallationSpaceContextMenu

Mit diesem Script werden die fehlenden Kontextmenüeinträge im Bauraum ergänzt:

  • Fenstermakro erzeugen
  • Symbolmakro erzeugen

EPLAN hat hier keine Durchgängigkeit mit P8 bzw. Stromlaufplan, denn dort sind die Menüeinträge vorhanden. :dizzy:

MacrosInstallationSpaceContextMenu (1400 Downloads )

using Eplan.EplApi.Scripting;

public class MacrosInstallationSpaceContextMenu
{
    [DeclareMenu]
    public void MenuFunction()
    {
        Eplan.EplApi.Gui.ContextMenu oMenu =
            new Eplan.EplApi.Gui.ContextMenu();

        Eplan.EplApi.Gui.ContextMenuLocation oLocation =
            new Eplan.EplApi.Gui.ContextMenuLocation(
                "Editor",
                "Cabinet3D"
                );

        oMenu.AddMenuItem(
            oLocation,
            "Fenstermakro erstellen",
            "StoreWindowMacro",
            true,
            false
            );

        oMenu.AddMenuItem(
            oLocation,
            "Symbolmakro erstellen",
            "StoreSymbolMacro",
            false,
            true
            );
    }
}

 

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

ExtendedSettings

Mit diesem Script kann man Einstellungen setzen, die offiziell von EPLAN nicht in der Oberfläche dargestellt werden. Wenn jemand noch versteckte Einstellungen hat, welche hier nicht aufgeführt sind, einfach mir kurzen sagen, dann erweitere ich das Script  :ninja:

Nach dem Laden des Scriptes wird der Menüpunkt Einstellungen…(erweitert) zum Menü Optionen hinzugefügt.

Funktionen:

  • Copy settings path: Fügt Menüpunkt im Kontextmenü in den Einstellungen hinzu um den Pfad zu kopieren.
  • Menu ID: Fügt Menüpunkt im Kontextmenü hinzu um die Menü ID und Ort anzuzeigen. EPLAN-Neustart erforderlich.

  • Inplace editing: Erweiterung von Direktes Bearbeiten, Weiterschaltung der Properties mit “TAB”-Taste
  • DontChangeSourceText: Großbuchstabenkonvertierung für Quellsprache deaktivieren.

Download

Von |2017-11-09T12:23:50+01:002012-03-29|EPLAN, EPLAN-Scripts|

BackupOnClosingProject

Das Script muss geladen werden. Wird nun ein Projekt geschlossen erscheint eine Messagebox:

  • Ja: Backup im Projektordner
  • Nein: Nix  :tongue:

BackupOnClosingProject (1895 Downloads )

 

public class BackupOnClosingProject
{
	[DeclareEventHandler("onActionStart.String.XPrjActionProjectClose")]
    public void Function()
    {
        string strProjectname = PathMap.SubstitutePath("$(PROJECTNAME)");
		string strFullProjectname = PathMap.SubstitutePath("$(P)");
		string strDestination = strFullProjectname;

        DialogResult Result = MessageBox.Show(
            "Soll eine Sicherung für das Projekt\n'"
            + strProjectname +
            "'\nerzeugt werden?",
            "Datensicherung",
            MessageBoxButtons.YesNo,
            MessageBoxIcon.Question
            );

        if (Result == DialogResult.Yes)

          {

                string myTime = System.DateTime.Now.ToString("yyyy.MM.dd");
                string hour = System.DateTime.Now.Hour.ToString();
                string minute = System.DateTime.Now.Minute.ToString();

                Progress progress = new Progress("SimpleProgress");
                progress.BeginPart(100, "");
                progress.SetAllowCancel(true);

                if (!progress.Canceled())
                {
                    progress.BeginPart(33, "Backup");
                    ActionCallingContext backupContext = new ActionCallingContext();
                    backupContext.AddParameter("BACKUPMEDIA", "DISK");
                    backupContext.AddParameter("BACKUPMETHOD", "BACKUP");
                    backupContext.AddParameter("COMPRESSPRJ", "0");
                    backupContext.AddParameter("INCLEXTDOCS", "1");
                    backupContext.AddParameter("BACKUPAMOUNT", "BACKUPAMOUNT_ALL");
                    backupContext.AddParameter("INCLIMAGES", "1");
                    backupContext.AddParameter("LogMsgActionDone", "true");
                    backupContext.AddParameter("DESTINATIONPATH", strDestination);
                    backupContext.AddParameter("PROJECTNAME", strFullProjectname);
                    backupContext.AddParameter("TYPE", "PROJECT");
                    backupContext.AddParameter("ARCHIVENAME", strProjectname + "_" + myTime + "_" + hour + "." + minute + ".");
                    new CommandLineInterpreter().Execute("backup", backupContext);
                    progress.EndPart();

                }
                progress.EndPart(true);
            }

            return;
        }
    }
Von |2017-11-09T12:23:50+01:002012-03-07|EPLAN, EPLAN-Scripts|

SetUserPaths

Mit diesem Script kann das Schema für die Benutzerverzeichnisse geändert werden.

Script laden und z.B. per Toolbar aufrufen. Hier den Name des Schemas als Parameterwert angeben:

Hier wird z.B: das Schema Test automatisch ausgewählt:

 

SetUserPaths (1641 Downloads )

 

using Eplan.EplApi.Base;
using Eplan.EplApi.Scripting;

public class SetUserPaths
{
    [DeclareAction("SetUserPaths")]
    public void Function(string SchemeName)
    {
        Settings oSettings = new Settings();
        oSettings.SetStringSetting("USER.ModalDialogs.PathsScheme.LastUsed", SchemeName, 0);

        SettingNode Sn = new SettingNode("USER.ModalDialogs.PathsScheme." + SchemeName + ".Data");
        System.Collections.Specialized.StringCollection Sc = new System.Collections.Specialized.StringCollection();
        Sn.GetListOfSettings(ref Sc, false);
        foreach (string s in Sc)
        {
            string sValue = oSettings.GetStringSetting("USER.ModalDialogs.PathsScheme." + SchemeName + ".Data." + s, 0);
            switch (s)
            {
                case "ExternalDocuments":
                case "Scheme":
                case "Scripts":
                case "XML":
                    oSettings.SetStringSetting("USER.SYSTEM.Pathnames." + s, sValue, 0);
                    break;

                default:
                    oSettings.SetStringSetting("USER.TrDMProject.Masterdata.Pathnames." + s, sValue, 0);
                    break;
            }
        }
    }
}

 

Von |2017-11-09T12:23:50+01:002012-02-28|EPLAN, EPLAN-Scripts|
Nach oben