Bentley Substation二次开发入门


Bentley Substation插件由以下三部分组成:

插件文件放在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();

   }

}

函数说明

Bentley Substation插件开发示例

通常使用C#VB.net进行开发。以C#为例:

新建一个Class Library类型的工程

添加Bentley Substation的引用

Bentley Substation安装路径里的如下文件可以被引用:

  1. ECT.ECAD.API.dll,是业务逻辑模块。插件工程必须引用,因为它包含了ECT.ECAD.API.PlugIn.IPlugInBase的定义。

  2. ECT.ECAD.DAL.dll,是数据访问模块。如果需要访问promis-e数据库,则必须引用。

  3. ECT.ECAD.UI.dll,是用户界面模块。

  4. Interop.EctEcad.dll/MicEctEcad.dll, Bentley Substation的图形平台接口的实现。如果需要操作对图形元素,则引用。

插件中,引用Bentley Substation安装路径中的dll文件时,“Copy Local”属性要设成False。因为插件是被Bentley Substation加载的,所以插件用到的dll文件已经被加载到Bentley Substation的进程中。

实现ECT.ECAD.API.PlugIn.IPlugInBase的接口

这里是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

   }

}

编写Config.xml

PlugInDemo.dll是文件名,PlugInDemo.Class1是完整的(实现了插件接口的)类名。

<?xml version="1.0" encoding="utf-8" ?>

<Config Enable="true" EntranceModule="PlugInDemo.dll" EntranceClass="PlugInDemo.Class1">

</Config>

编写Description.xml

这里可以填写作者(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>

布置插件到Bentley Substation

新建一个文件名叫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后,插件会被自动加载。

Substation Plugin示例程序下载:SubstationPluginDemo.zip  

Substation Plugin类库说明:Substation_API.chm

下载链接:https://pan.baidu.com/s/1iNFeQYja7dhgf8uppMnqLQ   提取码:b5jx