我想给自定义对象添加这么一个属性:首先他是一个枚举类型;然后,他的内容是当前模型空间中所有Alignment类型元素的名称或者id;最后,当模型中的Alignment类型的元素增加或者减少时,该属性的下来列表框中会自动的增加或删除。请问这样的功能可以实现吗?如果可以,应该怎么做呢?谢谢
首先,您的需求主要涉及schema的CustomAttribute的使用,请参考下面博客内容:
https://communities.bentley.com/communities/other_communities/bdn_other_communities/w/chinabdn-wiki/53596/3-4-1-4-ec
另外可以通过系统提供的事件管理器CimEventManager来监听并响应系统级别的事件,例如
您好~你发的BDN连接的内容并没有我需要的功能。我的意思是在一个属性上提供一个下拉列表框,列表框内的内容是当前模型控件中的全部某个类型的元素(以Alignment为例),CustomAttribute提供的ExtendType并不包含我说的需求。我是想要实现一个类似于CustomAttribute的15号ExtendType的功能,一个下拉列表框内有所有的文字样式ID,只不过我不要显示文字样式ID而是要枚举某个类型的元素。请问在xml中该如何配置这种属性
请仔细阅读文档内容:
请参考上面文档定制你自己的schema文件。
该文档内容只是你定制schema的样式,比如下拉列表,至于内容,你首先得遍历模型中的Alignment,然后获取每个Alignment的名称,然后通过accessString进行设置,这些需要有ORD SDK开发编程基础,关于如何获取Alignment可以参考BDN论坛ORD编程教程,论坛中只会解决具体的某个问题,而不提供详细的解决细节代码。
当然,上面的是静态设置EC的方法,如果是动态设置,那么首先,schema得这样写:
<ECProperty propertyName="FileName" typeName="string" displayLabel="File Name">
<ECCustomAttributes>
<ExtendType xmlns="EditorCustomAttributes.01.00">
<Name>CimDropdownListItem</Name>
</ExtendType>
</ECCustomAttributes>
</ECProperty>
然后代码里.net重写:
virtual bool OnGetDropdownListItems(System::String^ schemaName, System::String^ className, System::String^ propName, IList<System::String^>^% itemList);
Answer Verified By: 霄男 宿
非常感谢,我问的就是如何动态设置列表的内容,这个问题我看明白了,谢谢!明天我到单位尝试一下,有问题再向您请教。
您好~我在使用CimDropdownListItem的过程中遇到一个问题,就是我如何设置该属性只能从下拉列表中进行选择,而不能随意输入其他值。默认的该属性既可以输入也可以从下拉列表选择,我想要只能从下拉列表选择,具体该怎么操作呢?
输入的值只有当可选列表里面的值有的时候,才会有用,目前没有办法禁止输入。
哦,那也就是说用户输入的其他值不会触发属性更新和通知呗?
是的