对于ECSchema里面中那些 readonly 设置为true 的 属性,如何通过代码修改其属性值?
以下代码里面 instance->SetValueAsString 函数 对于只读的属性 SetValueAsString 函数会返回 ECOBJECTS_STATUS_UnableToSetReadOnlyProperty;
对于非只读的元素,可以执行成功。
部分代码如下:
for (DgnECInstancePtr instance : ecMgr.FindInstances(*scope, *ecQuery)){ ECObjectsStatus res = instance->SetValueAsString(AttribNameW.GetWCharCP(), AttribValueW.GetWCharCP(), false, 0); if (ECOBJECTS_STATUS_Success !=res) { return -1; }
instance->WriteChanges(); }
请阅读如下文章:
在最新版(U15)SDK中增加了SetIsReadOnlyProperty函数,可以对EC属性设置其为只读或非只读了。需要您升级软件和SDK后才能使用。
谢谢,代码升级 ,有点代价,就没有其它方案了吗?
Wei Dai said:谢谢,代码升级 ,有点代价,就没有其它方案了吗?
比较冒险的方法就是将新版SDK中的如下头文件覆盖你现有的头文件,然后就能调用这个函数了。
https://communities.bentley.com/cfs-file/__key/communityserver-discussions-components-files/343510/CustomItemType.h