项类型和Excel的组合使用(Using ItemType and Excel)


【版本要求】:MicroStation CONNECT Edition Update16及以上

【文章难度】:中高级别 (本文章中对一些基本操作没有写出详细步骤。如果在操作过程中遇到问题,欢迎在此添加评论或到优先社区设计平台子论坛发帖提问)

MicroStation CONNECT Edition引入了令人激动的自定义属性功能——项类型(ItemType),通过它我们能定义任意的业务属性框架(Schema),然后填充以具体的值——项(Item)后就可以挂接到任何类型的几何元素上了。从而实现几何+属性的BIM之基本目标。

在设计项类型的属性时,我们支持值的一个选择列表(Picklist),该列表可以定义在当前的DGN文件中,也可以定义在一个DGNLIB库中,甚至可以定义在一个Excel文件中。在对几何元素赋整体多个属性时,当我们选择了一个属性后,其他相关属性还能直接从Excel中取得对应的值。这样,可以大大加快我们对几何元素添加业务属性的工作。下面以一个具体实例讲解详细的操作步骤:

1、在文件夹C:\ProgramData\Bentley\MicroStation CONNECT Edition\Configuration\Organization\Data下创建MyPicklist.xlsx。为简单起见,该Excel的列名都采用了英文,当然,使用中文也是没有任何问题的。

 communities.bentley.com/.../MyPicklist.xlsx

2、定义配置变量ITEMTYPE_LOOKUP指向$(_USTN_ORGANIZATION)data\MyPicklist.xlsx。这里我们借用了系统的隐藏配置变量_USTN_ORGANIZATION以简化路径的写法,同时还能适应MSCE安装在不同位置的情况。【注】:配置变量ITEMTYPE_PICKLIST_EXCELPATH仅能控制Picklist的选取,无法控制后期LookUp函数的查找,因此在此一定要选用ITEMTYPE_LOOPUP配置变量,该变量两个功能都具备。

3、创建一个项类型库MyLib,在其下创建一个项类型MyItemType,然后再创建三个属性:门编号、厂家、材质。

4、将“门编号”属性的选择列表选项下的来源设置为Excel,再点击其设置后按钮就能自动设置到我们MyPicklist.xlsx的sheet1中的第一列了。如下图所示。

5、此时一定要点击项类型对话框左上角的保存图标保存一下当前的项类型库定义,并重新启动MSCE。否则接下来的步骤中LoopUp.GetEntry函数有可能不能自动带出中文对应的Unicode编码。

6、对MyItemType中的其他两个属性(厂家和材质)定义表达式LoopUp.GetEntry,使得用户选第一个属性时自动从Excel文件中带出第二和第三个属性的值。这个复杂的表达式可以从表达式创建器的右侧自动选择后构成。因为我们使用了中文的项类型属性,因此,在表达式中会出现__xXXXX__这样的Unicode编码,这种编码靠我们自己是很难输入正确的。好在有右侧的选择列表供我们使用。

这一步的操作细节比较多,请看如下短视频获得帮助:

LookUp.GetEntry函数的含义是:

【知识扩展】:在输入LookUp.GetEntry表达式时,对于中文名称的属性,如果您右侧不会出现方便的选项(很有可能是您没有操作第5步的保存导致的),那我们如何知道中文字符串对应的Unicode编码呢?下面介绍一个查找的方法:

① 在命令键入栏输入ECX Schema Export将当前DGN中的所有ECSchema(ItemType是ECSchema的一种)导出到磁盘的某个文件夹下。如下图所示:

② 到这个文件夹下找到自己ItemType对应的ECSchema.xml文件(对于该例子,就是DgnCustomItemTypes_MyLib.01.00.ecschema.xml)。我们能发现ECSchema.xml文件名的规律是:DgnCustomItemTypes_我们定义的ItemType库名称.01.00.ecschema.xml。用记事本打开这个文件,能找到中文属性名对应的Unicode编码,如下图所示:

7、在DGN中做测试,选择门编号前状态如下:

选择门编号为001后状态如下。能看到厂家和材质两个属性自动填充了。

测试用DGN如下,供您参考。

communities.bentley.com/.../ItemType_2600_Excel.dgn

执行效果演示如下:

感谢您的阅读,欢迎批评指正。