【MSCE C++】测试使用MergeAndCollectVolumes 有问题

测试使用这个MergeAndCollectVolumes 函数处理两个相互贯通的mesh面,想要得到两个mesh面包围起来的体积,但是得到的结果不对?请问是哪里的问题?
static void MergeAndCollectVolumes ( PolyfaceQueryR meshA,
PolyfaceQueryR meshB,
bvector< PolyfaceHeaderPtr > & enclosedVolumes
)
测试代码和测试用例如下:
Elementld dxelmld(9096);Elementld sjmelmld(9091);
EditElementHandle dxMesh(dxelmld, ACTIVEMODEL);
EditElementHandle shejiMesh(sjmelmld,ACTIVEMODEL);
PolyfaceHeaderPtr dxPolyface, roadPolyface;
MeshHeaderHandler::GetInstance().GetMeshData(shejiMesh, roadPolyface);bvector <PolyfaceHeaderPtr> enclosedVolumes;
PolyfaceQuery::MergeAndCollectVolumes(*dxPolyface,*roadPolyface, enclosedVolumes);
printf("enclosedVolumes.size( : %d\n", enclosedVolumes.size));
for (size_t i = 0; i e enclosedVolumes.size(); i++)
{
    PolyfaceHeaderPtr& poly = enclosedVolumes.at(i);
    EditElementHandle meshEh;
    Bentley:DgnPlatform:DraftingElementSchema:ToElement(meshEh,*poly,NULL*ACTIVEMODEL);
    mdlElmdscr_copyXAttributes(meshEh.GetElementDescrP(), dxMesh.GetElementDescrCP(, true);
    meshEh.AddToModelO;
}
「bug_MergeAndCollectFunction.dgn」www.aliyundrive.com/.../wJt48za2x4s 提取码: 93eu 点击链接保存,或者复制本段内容,打开「阿里云盘」APP ,无需下载极速在线查看,视频原画倍速播放。

Parents Reply
  • 您可以注意下,测试用例的其中一个mesh面(红色的)最底部有一部分mesh面片是向内凹的(也就是在xy平面上有点坐标是多z值的情况),使用ComputeSingleSheetCutFill这个函数进行计算,得到的mesh体也有问题,如下图所示,这样的mesh后面用于其他剪切等计算也回遇见很多问题。所以我想要一个两个mesh面真正包起来的那部分mesh体

    Work smart, not just work hard!

Children