在导出IFC、FBX等文件时,自定义的EC属性导不出来,这个时候我们可以重新定义一套平行的项类型(ItemType),用表达式去读取 EC 属性。
比如下面的"回路信息"不属于项类型,我们试着用项类型取长度信息。
我们看到的自定义属性可以来自于项类型(ItemType)的定义,也可以来自于更底层的 EC 类(ECClass)。
在这里先介绍下 EC 类(ECClass)和项类型(ItemType)的基本概念和关联。
以下面这个元素为例。除了基本的层,颜色等属性外,我们还附加了项类型属性:
上图里面,ECFramework 是 Bentley 定义的一种框架,利用这个框架,我们可以用一种统一的方法去存储,访问各种数据,比如我们可以把 DGN 文件看作是 EC 仓库( EC Repository),里面的数据就会有 EC Schmea,EC Class, Instances 等概念了。
ItemType 用于扩展元素的专业属性,和元素绑定后,元素就成为专业的对象了。 项类型(ItemType)是定义,存的是名字,没有具体的值,它存储在 DGN 的字典模型里,一旦绑定到具体的几何上,就有具体的值了,这就是项(Item),项(Item)存储在DGN里。
项类型(ItemType)存在项类型库(ItemType Library)里,一个项类型库(ItemType Library)里面可以有一个或多个项类型(ItemType)。
项类型(ItemType)本质上和EC类(ECClass)是相对应的。
用键入命令 ECX Schema Export 将您这个 DGN 文件中所有的 ECSchema 导出(一个 Schema 就相当于一个 ItemType Library,内含一个或多个EC类(ECClass)),每个 ECSchema 都会导出一个 xml 文件,导出后能发现有一个 DengGuangCode.01.00.ecschema.xml 的文件,这个"回路信息"恰恰就是在该文件中定义的。如何形成这样的情况呢?推测应该是通过编程做到的。
this.GetItem("项类型库名:项类型名").属性名 this.GetItem("架构名:类名").属性名
用于取文件里某一个项类型库下面某个项类型里面的项的值;扩展到 EC,就是取 EC Schema 里 EC Class 关联的某一个实例的值。
表达式如下:
this.GetItem("DengGuangCode:ShenZhenBaoHuGuanEc").length
操作视频: