【C#/C++ ORD中国版】自定义对象EC属性在软件中的显示顺序问题以及bug反馈

1. 左图所示是我通过ORD中果国版创建的自定义的对象的属性,通过查阅官方的帮助文档,没有找到关于属性显示先后顺序的设置,想在此请教通过什么方法可以调整自定义对象的属性显示先后顺序。

2. 这是一个bug反馈,1中的图片在OCCOISub2上单击鼠标右键弹出的菜单,没有右侧的扩展箭头。而问题2中的图片在原生属性的组名上单击鼠标右键,是有右侧扩展箭头,并且可以控制内部每个属性的显示与隐藏的。这应该是自定义对象属性的一个bug。

Parents
  • 关于问题1:设置属性先后顺序,可以通过schema解决,系统内置定义了大量的CustomAttribute,用于精细化控制UI在处理ECSchema、ECClass以及ECProperty时的特定行为,您可通过CustomAttribute来指定。系统内置了大量直接可用的CustomAttribute,包括属性排序等。

    问题2:自定义属性由于实现机制不同,跟原生的是有区别的,包括在界面显示上,想要实现整个EC类隐藏或者某个属性隐藏,有两种方式,一种是静态方式隐藏,也就是在创建EC属性定义的时候,通过使用系统预定义的XML标记或者特定的CustomAttribute来控制特定EC属性的显示状态;

    另一种动态方式隐藏:

    • 创建并实现自定义CIM对象;
    • 实现其中的CimRoot::_OnFilterProperty[C++]或CimRoot.OnFilterProperty[C#]方法来实现自定义过滤逻辑:
      • 当某个属性需要以只读方式显示时,函数返回1;
      • 当某个属性需要隐藏时,函数返回2;
      • 当某个属性需要以定义时的方式显示时,函数返回
    • 在使用前先激活此后过滤机制: CimPropertyManager::EnablePropertyFilter(true);
    • 在完成使用后撤销对此过滤机制的激活: CimPropertyManager::EnablePropertyFilter(false);
  • 首先,谢谢您的答复!

    关于问题1:能否提供一下具体哪个CustomAttribute是用来控制ECProperty顺序的,我在官方的在线帮助里没有找到。

    关于问题2:还有这么一个问题,就是比方说我在自定义对象的某个属性上单击鼠标右键,是可以单独隐藏某个属性的,但我一旦在这个文件中对某个自定义对象的属性采用鼠标右键的方式进行了隐藏,就无法像原生属性那样,在属性组名称上点右键来恢复显示,而且这种情况通过xml的配置和动态显示属性的方式都无法将隐藏掉的属性回复显示,请问这种情况如何解决呢?是不是还是应该在以后的版本中将自定义对象的属性组标题栏的右键菜单设置成和原生属性组一样才方便设置属性的显示与隐藏呢?

  • 问题1:

    在schema中,例如下面属性:

    <ECProperty propertyName="ChamferLengthX" typeName="double" displayLabel="ChamferLengthX" >
    <ECCustomAttributes>
    <ExtendType xmlns="EditorCustomAttributes.01.00">
    <Standard>8</Standard>
    </ExtendType>
    <PropertyPriority xmlns="EditorCustomAttributes.01.00">
    <Priority>10000</Priority>
    </PropertyPriority>
    </ECCustomAttributes>
    </ECProperty>
    通过这个设置来显示优先级,值越大显示越靠前:
    <PropertyPriority xmlns="EditorCustomAttributes.01.00">                     <Priority>10000</Priority>                 </PropertyPriority>
    问题2:
    你点击属性面板自定义属性边缘空白处,然后点击鼠标右键,能看到全部的EC,可以进行设置:

    Answer Verified By: 霄男 宿 

Reply
  • 问题1:

    在schema中,例如下面属性:

    <ECProperty propertyName="ChamferLengthX" typeName="double" displayLabel="ChamferLengthX" >
    <ECCustomAttributes>
    <ExtendType xmlns="EditorCustomAttributes.01.00">
    <Standard>8</Standard>
    </ExtendType>
    <PropertyPriority xmlns="EditorCustomAttributes.01.00">
    <Priority>10000</Priority>
    </PropertyPriority>
    </ECCustomAttributes>
    </ECProperty>
    通过这个设置来显示优先级,值越大显示越靠前:
    <PropertyPriority xmlns="EditorCustomAttributes.01.00">                     <Priority>10000</Priority>                 </PropertyPriority>
    问题2:
    你点击属性面板自定义属性边缘空白处,然后点击鼠标右键,能看到全部的EC,可以进行设置:

    Answer Verified By: 霄男 宿 

Children