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;
}
![](https://www.pcb-investigator.com/wp-content/uploads/2022/09/PlugInsDirectory.jpg)