In meinem Beitrag zum Erstellen eines Ribbons in EPLAN, gab es mehrfach den Wunsch eigene Untermenüs zu definieren.
Das ist leider so nicht direkt möglich.

Ich habe ein Script gebaut, dass man per Befehl im Menüband aufrufen kann.

 

Befehlszeile:

PopUpMenu /Items:"Item 1;TestAction;Tooltip 1|Item 2;TestAction;Tooltip 2|Item 3;TestAction;Tooltip 3"

Es werden alle Menü-Einträge übergeben, mit Text;Action;Tooltip. In meinem Beispiel drei.

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

internal class PopUpMenu
{
  [DeclareAction("PopUpMenu")]
  public bool ActionPopUpMenu(ActionCallingContext acc)
  {
    // Get items
    string itemsString = null;
    acc.GetParameter("Items", ref itemsString);

    if (string.IsNullOrEmpty(itemsString))
    {
      return false;
    }

    ContextMenuStrip menu = new ContextMenuStrip();
    var itemsSplit = itemsString.Split('|');
    foreach (var itemSplit in itemsSplit)
    {
      var split = itemSplit.Split(';');
      if (split.Length < 2)
      {
        new Decider().Decide(EnumDecisionType.eOkDecision, "Wrong parameter value.", "PopUpMenu",
                             EnumDecisionReturn.eOK, EnumDecisionReturn.eOK, "PopUpMenu", false,
                             EnumDecisionIcon.eFATALERROR);
        return false;
      }

      // Create item
      ToolStripMenuItem menuItem = new ToolStripMenuItem();
      string text = split[0];
      menuItem.Text = text;

      // Action
      string action = split[1];
      menuItem.Click += (sender, args) => { new CommandLineInterpreter().Execute(action); };

      // Tooltip
      if (split.Length > 2)
      {
        string tooltipText = split[2];
        menuItem.ToolTipText = tooltipText;
      }

      menu.Items.Add(menuItem);
    }

    menu.Show(Cursor.Position);

    return true;
  }

  [DeclareAction("TestAction")]
  public void ActionTest()
  {
    MessageBox.Show("Hello!");
  }
}