Viele Nutzer verwenden Skripts um Arbeitsabläufe zu vereinfachen. Manchmal ist es komfortabler einen direkten Button im Menü zu hinterlegen.

Für diesen Fall haben wir folgenden Beispielcode erzeugt:
download C#-Code

In diesem Beispiel finden Sie zwei Beispiele:

  • ClassPCBIConnection.cs beinhaltet alle notwendigen Schnittstellen Methoden und Variablen
  • CalssScript.cs bietet Variablen, um den Namen und den Anzeigetext des erzeugten Buttons zu steuern, außerdem verfügt diese Klasse über eine Excecute-Methode, in die der Skript Code kopiert werden muss

Nach der Neuerstellung der Klassenbibliothek ist es notwendig die DLL in Ihr Plug-in-Verzeichnis zu kopieren. Um Ihr persönliches Verzeichnis zu finden öffnen Sie am einfachsten die PCB-Investigator Optionen, im Tab Plug-ins finden Sie den Pfad für den Speicherort der Plug-in.dlls.
(siehe angehängtes Bild am Seitenende)

class ClassScript
  {
    internal string NameOfPlugIn = "Unique Name of Script PlugIn or GUID";
    internal string TextOnButton = "Start Demo";
 
    public void Excecute(IPCBIWindow parent)
    {
      parent.UIAction.Execute(ID_ActionItem.ID_JOB_LIBRARY);
 
      parent.UpdateView();
    }
  }
 
[Plugin("RibbonDemo", "Demo", "Demo to show how to add to PCB-Investigator Ribbon menu.", "1.0.0.0")]
  public class ClassPCBIConnection: IPluginRibbonCommand
  {
 
    #region IPluginToolStrip Members
    //On which position should the toolbar dock.
    private ContainerPosition position = ContainerPosition.Left;
    public ContainerPosition Position
    {
      get
      {
        return position;
      }
      set
      {
        position = value;
      }
    }
    #endregion
 
    #region IPlugin Members
    //interface information
    private bool pluginEnabled;
    public bool PluginEnabled
    {
      get
      {
        return pluginEnabled;
      }
      set
      {
        pluginEnabled = value;
      }
    }
    private string assembly;
    public string Assembly
    {
      get
      {
        return assembly;
      }
      set
      {
        assembly = value;
      }
    }
    private string path;
    public string Path
    {
      get
      {
        return path;
      }
      set
      {
        path = Path;
      }
    }
    private Type type;
    public Type Type
    {
      get
      {
        return type;
      }
      set
      {
        type = value;
      }
    }
    IPCBIWindow parent;
    public IPCBIWindow Parent
    {
      get
      {
        return parent;
      }
      set
      {
        parent = value;
      }
    }
    private PluginDestinationWindow pluginDestination = PluginDestinationWindow.MainWindow;
    public PluginDestinationWindow PluginDestination
    {
      get
      {
        return pluginDestination;
      }
      set
      {
        pluginDestination = value;
      }
    }
    public bool IsActionAllowed(ID_ActionItem action)
    {
      return false;
    }
    public void InitEvents(IPCBIWindow Parent)
    {
    }
    #endregion
 
    #region ribbon
    int registerEntryPCBI = -1;
    
    public void OnCommandExecute(int cmdID)
    {
      if (cmdID == registerEntryPCBI)
      {
        try
        {
          if(UsedScriptToStart!=null) UsedScriptToStart.Excecute(parent);
        }
        catch (Exception exceptionInScript)
        {
          //do error handling
 
        }
      }
    }
 
    public void RegisterCommand()
    {
      UsedScriptToStart = new ClassScript();
 
      registerEntryPCBI = Parent.UIAction.RegisterID(new IRegisterItem()
      {
        Category = "Demo",
        EnableOn = Availability.Always,
        GUID = "MustBeUnique!_" + UsedScriptToStart.NameOfPlugIn,
        RegisterType = RegisterItemType.BUTTON,
        Text = UsedScriptToStart.TextOnButton
      });
 
 
    }
 
    #endregion
 
    ClassScript UsedScriptToStart = null;
  }