我们知道XAttribute是Mstn中往元素上添加自定义属性的一种方式(有关Mstn中给元素添加自定义属性方式可以参考这篇wiki:https://bentleysystems.service-now.com/community?id=kb_article_view&sysparm_article=KB0092192),通过此方式我们可以往元素上添加一些我们需要的自定义属性。我们在添加自定义属性时通常是需要一个ID来标识我们的自定义属性的,因为我们在添加自定义属性的同时,其他人员开发的插件也可以往元素上添加他们的自定义属性。所以就需要一个ID来区分,不同类型的自定义属性。Mstn SDK中专门定义了一个XAttributeHandlerId类型来代表这个ID,如下所示:
往元素上添加XAttributes自定义属性的接口函数就需要一个这种类型的实例,如下所示:
在这个函数中我们开一个看到有一个名为xAttrId的参数,这个参数又有什么作用呢?我们在往元素上添加自定以属性时,对于同一自定义属性类型,有时候会碰到需要添加多份数据或者说多个属性实例的情况。例如我们有一个表达桌子的图形元素和若干个表达凳子的图形元素,我们定义了一种名为“凳子”的自定义属性类型往桌子这个图形元素上添加以表示哪些凳子是属于这张桌子的,这个自定义属性中包含凳子的图形元素ID。如果一张桌子配有的凳子数量不是固定的,我们就需要根据实际情况往桌子这个图形元素上添加不同数量的“凳子”自定义属性。那么同一桌子上如果添加了多个“凳子”的自定义属性的话,该如何区分这些属性呢?方法就是通过xAttrId这个参数来区分的。可以理解为XAttributeHandlerId用来标识类型,而xAttrId用来标识实例。在获取自定义属性时,也可以通过xAttrId这个ID来指定具体获取哪一份自定义数据。从获取元素自定义属性的函数就可以看到也是需要这样一个参数的,如下所示: