1. 在ORD中,利用C#或c++,能不能获取到Corridor中某一桩号范围内的横断面填挖方量,以及其他组件的体积??
2. 在ORD的SDK中找了一下,没有看到相关接口,但是从软件操作上,可以得到Corridor的Component Quantity,并可以生成对应的报表,而且报表浏览器中有很多可用数据,所以补充咨询一下,可否通过代码获取ORD中的报表数据。
请熟悉MS或ORD的大神帮忙解答一下,谢谢。
目前廊道对象没有提供直接计算土方的方法,您可以用mesh自己去计算。
用mesh的接口,返回填挖方cutMesh和fillMesh。
谢谢老师,但是还是有几个问题,
如果利用这个方法的话,1. 我要先通过廊道来构造其TopMesh或BottomMesh,这个应该如何构造呢? 2. 得到BottomMesh后,我需要将Mesh按桩号区间进行切分,以计算不同桩号范围内的填挖体积,这种切分的操作好实现吗?
另外,请问下有什么接口或方法可以直接得到 Corridor或ORD中的 Report 报表的数据。
请耐心等待,我先测试后,告知您具体的方法,因为报告里面很多东西不一定直接有现成某个接口去获得。
ComputeSingleSheetCutFill函数,meshA也就是您所指的TopMesh,是DTM(地模)的网格,meshB是廊道的网格,您可以通过点先构造这两个mesh类似:
bvector<DPoint3d> quad;
quad.push_back(pa0[i]);
quad.push_back(pa0[i + 1]);
quad.push_back(pa1[i + 1]);
quad.push_back(pa1[i]);
polyface->AddPolygon(quad);
但这种方法仅限于整体去计算,如果按照您的要求切割的话,比较复杂,没有现成的接口,需要您自己去计算,而且特别麻烦。
PolyfaceHeaderPtr cutMesh, fillMesh; DVec3d viewVector = DVec3d::From (0, 0, 1); PolyfaceHeader::ComputeSingleSheetCutFill (*meshA, *meshB, viewVector, cutMesh, fillMesh);
问题2:您所指的构建报告,确实包含了土方量,但是获取报告的接口暂时未公开,所以目前您是无法直接获取报告属性的。