OBD自定义Mechanical组件
OBD软件含有四大模块,其中的Mechanical(暖通)模块可以说是设计得最好的。从CE版开始,该模块自定义组件的开发语言由原来的VBA改成了C#,本文以一个简单的组件为例展示了整个自定义的过程。
自定义组件包括两方面的内容:
下面以自定义ExampleScript为例,介绍定义新组件的基本步骤。
OBD提供的图形化工具可以方便地定义新组件。下面介绍使用工具Definition Editor和Catalog Editor来添加定义的方法。
添加Property定义:
文件位于C:\Program Files\Bentley\OpenBuildings Designer CONNECT Edition\OpenBuildingsDesigner\datagroupsystem\
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中相应节点下:
新ExampleScript_Default.xml文件位于
C:\ProgramData\Bentley\OpenBuildingsDesigner\Configuration \Datasets\Dataset_CN\DataGroupCatalogs\目录下,
利用工具创建新组件定义完成。
用户还可以采用手工编辑XML方式定义新组件的Schema,方法如下:
新建文件C:\Program Files\Bentley\OpenBuildings Designer CONNECT Edition\OpenBuildingsDesigner\datagroupsystem\CustomParamExampleScript.xsd
如果是Plumbing,则添加定义到C:\Program Files\Bentley\OpenBuildings Designer CONNECT Edition\OpenBuildingsDesigner\datagroupsystem\PlumbingTypes.xml 。
也可以创建新的XML文件,放在…\datagroupsystem\这个目录下即可。
C:\ProgramData\Bentley\AECOsim CONNECT Edition\Configuration\Datasets\Dataset_US\DataGroupCatalogs\HVAC_Fittings.xml
也可以创建新的XML文件,放在…\DataGroupCatalogs\这个目录下即可。
也可以创建新的XML文件,放在…\ DataGroupSystem\这个目录下即可。
至此,定义Schema部分完成。下面编写绘制图形的代码。
在开始编写C#代码前当然首先需要安装OBD产品,如OBD Update7以及微软的Visual Studio产品,如VS2017。
代码要重载以下几个函数:
public override bool OnInitialize ()
说明:组件初始化,一般从DataGroup属性集中获取/设置属性值
public override bool OnCreateEndlets ()
说明:创建组件的端口或接头部分
public override bool OnRunScript ()
说明:绘制组件图形部分,在放置组件时会调用此函数
对于手工编辑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