Bentley Substation插件由以下三部分组成:
一个.net的dll文件,作为插件的入口。这个文件中必须包含一个实现插件接口(ECT.ECAD.API.PlugIn.IPlugInBase)的public的类。
Config.xml文件,指定插件入口的dll文件和其中实现插件接口的类的名称。
Description.xml文件,包含插件的描述信息和版本信息。
插件文件放在Bentley Substation安装路径下的plugins目录里的子目录,一个子目录对应一个插件,例如:“C:\Program Files (x86)\Bentley\Substation V8i\Substation\Promise\plugins\PLCGenerator”。
namespace ECT.ECAD.API.PlugIn
{
public interface IPlugInBase
{
void Init();
void OnCustomMenuCommand(string strCommand);
void RegisterCustomMenu(out ArrayList arrMenu, out ArrayList arrMode);
void Unload();
}
}
Init是插件初始化函数,当插件被加载的时候被执行。通常会再这里注册插件菜单。
OnCustomMenuCommand是点击插件菜单项的事件响应函数。strCommand是点击的菜单项的名称。注意:点击任何一个插件菜单项,都会触发该函数。因此,务必要判断strCommand是否是这个插件注册的菜单项。
RegisterCustomMenu是根据Bentley Substation的图纸页模式(Schematic Mode, Panel Layout Mode, etc.)来注册菜单。arrMenu中存放菜单项的名字,arrMode存放菜单项对应的模式的名字,两个ArrayList中的元素是一对一的。目前这个功能不常用,把arrMenu和arrMode设为null就行了。
Unload在插件被卸载的时执行,基本没用。
通常使用C#或VB.net进行开发。以C#为例:
在Bentley Substation安装路径里的如下文件可以被引用:
ECT.ECAD.API.dll,是业务逻辑模块。插件工程必须引用,因为它包含了ECT.ECAD.API.PlugIn.IPlugInBase的定义。
ECT.ECAD.DAL.dll,是数据访问模块。如果需要访问promis-e数据库,则必须引用。
ECT.ECAD.UI.dll,是用户界面模块。
Interop.EctEcad.dll/MicEctEcad.dll, Bentley Substation的图形平台接口的实现。如果需要操作对图形元素,则引用。
插件中,引用Bentley Substation安装路径中的dll文件时,“Copy Local”属性要设成False。因为插件是被Bentley Substation加载的,所以插件用到的dll文件已经被加载到Bentley Substation的进程中。
这里是PlugInDemo.Class1。
using System;
using System.Collections.Generic;
using System.Text;
using ECT.ECAD.API;
namespace PlugInDemo
{
public class Class1 : ECT.ECAD.API.PlugIn.IPlugInBase
{
#region IPlugInBase Members
public void Init()
{
// 注册两个菜单项
Root.App.DrawingTool.RegisterCustomMenu("DemoMenu1");
Root.App.DrawingTool.RegisterCustomMenu("DemoMenu2");
// 完成注册
Root.App.DrawingTool.CustomMenuApplyChanges();
}
public void OnCustomMenuCommand(string strCommand)
{
if (strCommand == "DemoMenu1")
{
// DemoMenu1被点击
}
else if (strCommand == "DemoMenu2")
{
// DemoMenu2被点击
}
}
public void RegisterCustomMenu(out System.Collections.ArrayList arrMenu, out System.Collections.ArrayList arrMode)
{
arrMenu = null;
arrMode = null;
}
public void Unload()
{
}
#endregion
}
}
PlugInDemo.dll是文件名,PlugInDemo.Class1是完整的(实现了插件接口的)类名。
<?xml version="1.0" encoding="utf-8" ?>
<Config Enable="true" EntranceModule="PlugInDemo.dll" EntranceClass="PlugInDemo.Class1">
</Config>
这里可以填写作者(Your Name)、插件名称(PlugInDemo)、版本号(1.0)、发布日期(2009.1.26)等信息。
<?xml version="1.0" encoding="utf-8" ?>
<Descriptions Author="Your Name" Name="PlugInDemo" Version="1.0" ReleaseDate="2009.1.26">
<Desc></Desc>
</Descriptions>
新建一个文件名叫PlugInDemo(名称可以随便起)的文件夹,将编译的dll文件、Description.xml复制进去,然后把这个PlugInDemo文件夹放到Bentley Substation安装路径下的plugins文件夹里。
新建同名文件夹PlugInDemo,将Config.xml复制进去,然后把这个PlugInDemo文件夹放在Bentley Substation的ProgramData路径的plugins文件夹中,如C:\ProgramData\Bentley\Substation V8i\Plugins\PLCGenerator。
启动Bentley Substation后,插件会被自动加载。
下载链接:https://pan.baidu.com/s/1iNFeQYja7dhgf8uppMnqLQ 提取码:b5jx