老师,请问在ORD二次开发中如何通过代码实现提取实体的体积?开发语言是C#。
MS基础平台内所有有体积的元素的ECClass都继承自BaseElementSchema.1.0里面的MstnVolume类,所以可以通过EC编程获取,这样很通用,mesh网格体也能获取体积或者表面积
伪码:
if (!DgnECHelper.GetPrpSchema(Session.Instance.GetActiveDgnFile(), "BaseElementSchema", "MstnVolume", out IECClass volumeClass)) MessageBox.Show("not found!") ; IDgnECInstance intance=DgnECManager.FindECInstanceOnElement(el, volumeClass);
然后通过intance访问Volume属性的值就行了。
---------------------------------------------------------------
中国市政工程西北设计研究院有限公司武汉分院
,郑老师,代码中这个会报错,不清楚是什么原因。
IECClass volumeClass; if (!DgnECHelper.GetPrpSchema(Session.Instance.GetActiveDgnFile(), "BaseElementSchema", "MstnVolume", out volumeClass)) MessageBox.Show("not found!"); IDgnECInstance intance = DgnECManager.FindECInstanceOnElement(ele, volumeClass);
我这么写的,不清楚对不对。
我发的是伪码,你需要根据EC接口自己获取这个EC类
还有一个方法就是参考如下帖子。调用GetElementProperties得到所有属性,从中能找到Volume这个属性就是体积。
https://communities.bentley.com/communities/other_communities/chinafirst/f/microstation-projectwise/183020/msce-c-dgn