OBD自定义Mechanical组件


OBD自定义Mechanical组件

 

OBD软件含有四大模块,其中的Mechanical(暖通)模块可以说是设计得最好的。从CE版开始,该模块自定义组件的开发语言由原来的VBA改成了C#,本文以一个简单的组件为例展示了整个自定义的过程。

自定义组件包括两方面的内容:

 

下面以自定义ExampleScript为例,介绍定义新组件的基本步骤。

定义Schema

使用DataSet Tools创建新组件的定义

OBD提供的图形化工具可以方便地定义新组件。下面介绍使用工具Definition Editor和Catalog Editor来添加定义的方法。

  1. 在Definition Editor中新建定义CustomParamExampleScript.xsd

 

 

添加Property定义:

 

文件位于C:\Program Files\Bentley\OpenBuildings Designer CONNECT Edition\OpenBuildingsDesigner\datagroupsystem\

 

  1. 在Catalog Editor中新建Catalog Type

 

 

 

 

       Destination有三个选项,分别对应以下目录,根据选项的不同,新的ExampleScript.xml文件会在不同目录下创建:

C:\ProgramData\Bentley\OpenBuildingsDesigner\Configuration\Datasets\Dataset_CN\DataGroupSystem\

C:\ProgramData\Bentley\OpenBuildingsDesigner\Configuration\WorkSpaces\Building_Examples\Standards\DataGroupSystem\

C:\ProgramData\Bentley\OpenBuildingsDesigner\Configuration\WorkSpaces\Building_Examples\WorkSets\BuildingTemplate_CN\Standards\DataGroupSystem\

 

【注】:这三个选项决定了您创建的自定义组件在哪个层级可见。如果是想让整个组织机构的人员都可见的话,需要选Organization;如果是想让某类项目或某些部门的人员可见的话,选Workspace(当然,具体是什么决定于您对Workspace的理解和应用);如果仅想让某个项目人员可见的话,选WorkSet(同理,决定于您对WorkSet的理解和应用)。总之,这三个级别的可见范围是从大到小的。

 

ClassName为将要编写的实现组件图形代码的类名,如果下拉列表中没有,可以手工修改如下xml:

 

 

还可以看到,新的Catalog Type被添加到C:\ProgramData\Bentley\OpenBuildings Designer CONNECT Edition\Configuration\Datasets\Dataset_CN\DataGroupSystem\CatalogTypeGroups.xml中相应节点下:

 

 

  1. 在Catalog Editor中创建Catalog Item,可以为Property指定Default值

 

 

 

 

新ExampleScript_Default.xml文件位于

C:\ProgramData\Bentley\OpenBuildingsDesigner\Configuration \Datasets\Dataset_CN\DataGroupCatalogs\目录下,

 

利用工具创建新组件定义完成。

 

手工编辑XML文件

用户还可以采用手工编辑XML方式定义新组件的Schema,方法如下:

  1. 创建Schema定义xsd,该文件用于创建图形等的属性。

新建文件C:\Program Files\Bentley\OpenBuildings Designer CONNECT Edition\OpenBuildingsDesigner\datagroupsystem\CustomParamExampleScript.xsd

                 

 

  1. 添加catalog Type的定义到C:\Program Files\Bentley\OpenBuildings Designer CONNECT Edition\OpenBuildingsDesigner\datagroupsystem\mechanicalcatalogtypes.xml 中:

   

 

如果是Plumbing,则添加定义到C:\Program Files\Bentley\OpenBuildings Designer CONNECT Edition\OpenBuildingsDesigner\datagroupsystem\PlumbingTypes.xml 。

 

也可以创建新的XML文件,放在…\datagroupsystem\这个目录下即可。

 

  1. 按需添加Default值到中文数据集C:\Program Files\Bentley\OpenBuildings Designer CONNECT Edition\OpenBuildingsDesigner\Datasets\Dataset_CN\DataGroupCatalogs\HVAC_Fittings.xml中或英文数据集

C:\ProgramData\Bentley\AECOsim CONNECT Edition\Configuration\Datasets\Dataset_US\DataGroupCatalogs\HVAC_Fittings.xml

 

 

也可以创建新的XML文件,放在…\DataGroupCatalogs\这个目录下即可。

 

 

  1. 新组件的catalog Type属于HVAC group的“圆形-风管配件”,将其放在这个SubGroup下,C:\ProgramData\Bentley\OpenBuildings Designer CONNECT Edition\Configuration\Datasets\Dataset_CN\DataGroupSystem\CatalogTypeGroups.xml

 

 

也可以创建新的XML文件,放在…\ DataGroupSystem\这个目录下即可。

 

至此,定义Schema部分完成。下面编写绘制图形的代码。

 

编写C# 绘制图形

在开始编写C#代码前当然首先需要安装OBD产品,如OBD Update7以及微软的Visual Studio产品,如VS2017。

  1. 在Visual Studio 2017中新建或打开CustomScript.sln,添加如下Reference(一些DLL文件)。也可以在Project Properties中添加Reference。



  2. 编写代码OBDSDK\examples\CustomScript\ExampleScript.cs,编译工程。

     代码要重载以下几个函数:

public override bool OnInitialize ()

说明:组件初始化,一般从DataGroup属性集中获取/设置属性值

public override bool OnCreateEndlets ()

说明:创建组件的端口或接头部分

public override bool OnRunScript ()

说明:绘制组件图形部分,在放置组件时会调用此函数

  1. CustomScript.dll会在CustomScript\src\bin\Release\ 目录下生成;也可以在工程属性的“build”中Output路径指向OBD安装目录的Assemblies目录,编译后,直接放在Assemblies下。
  2. 运行ODB Update 7,将CustomScript\src\bin\Release 路径添加到 MS_ADDINPATH 和 MS_ADDIN_DEPENDENCYPATH 配置变量中或将CustomScript.dll拷贝至C:\Program Files\Bentley\OpenBuildings Designer CONNECT Edition\OpenBuildingsDesigner\Assemblies下
  3. 根据代码所添加组件的Catalog Type,在相应的XML文件中添加新项。

对于手工编辑XML文件方式,添加C#代码与类型关联到C:\Program Files\Bentley\OpenBuildings Designer CONNECT Edition\OpenBuildingsDesigner\datagroupsystem\mechanicalcatalogtypes.xml 中:

 

 

如果是Plumbing,则添加关联到C:\Program Files\Bentley\OpenBuildings Designer CONNECT Edition\OpenBuildingsDesigner\datagroupsystem\PlumbingTypes.xml 。其中“BMVCategory_Coupling”预定义的categories 可以到文件 C:\Program Files\Bentley\OpenBuildings Designer CONNECT Edition \OpenBuildingsDesigner\DataGroupSystem\DialogOptions.xml中查询。如果是Catalog Item Manager方式,则自定义组件完成。

运行测试

下面,运行测试刚刚创建的自定义组件:

在 KEY-IN栏输入 如下命令:

对于 HVAC 组件

BMECH PLACE COMPONENTBYNAME CatalogItem Type "CatalogItem name" dsc=HVAC

对于 Plumbing 组件

BMECH PLACE COMPONENTBYNAME CatalogItem Type "CatalogItem name" dsc=Plumbing

在这里,我们输入:

BMECH PLACE COMPONENTBYNAME ExampleScript Default dsc=HVAC

 

出现以下放置窗口,编辑参数值为期望值,就可以生成新组件了

 

说明:缩略图可以在Catalog Item Manager中创建:

参看

ComponentApiNet.chm