写文章
 找回密码
 立即注册
搜索
0赞
赞赏
手机版
扫码打开手机版
把文字装进口袋

BoolBRepFuse的一些问题

MarquisWeng 2024-3-1 23:13:15
本帖最后由 MarquisWeng 于 2024-3-1 23:13 编辑

在使用内核的时候,发现BoolBRepFuse可能存在一些问题。

把一个圆柱体和登高的长方体做BoolBRepFuse,我把TopoExplorerTool::MapShapes(..., AMCAX::ShapeType::Face, ...)得到的不同face用不同颜色标识,得到的形状如下,第二个图是把三角网格的边界也画出来的结果。这似乎表明内核在做bool运算之后仍然(部分)保持了运算之前的信息。按照正常方式构造,最终的图形只应该有6个面,但是fuse后得到10个面。多出来的四个面是把上下底面都分成三块导致的。

圆柱和长方体的 BoolBRepFuse的图

圆柱和长方体的 BoolBRepFuse的图
   

圆柱和长方体fuse的mesh结果

圆柱和长方体fuse的mesh结果
   


同样的立体图形,也可以先通过在x-y平面上的圆和长方形BoolBRepFuse出一个平面图形然后再用MakePrism在z轴上延伸出去。用这种方法得到的图形粗看上去和第一种方法得到的结果相同。但如果仔细看的话,会发现这种方法得到的图形有15个面。其中10个面和第一种方法相同。多出来的5个面是圆和长方形布尔交的边界在z轴的延伸。把多出来的这5个面画出来,就是下面这个样子。我猜测之所以出现这个结果同样是在做bool运算后保留之前的信息导致的。

平面上圆和长方形 fuse后在MakePrism后得到结果,多处来的5个面

平面上圆和长方形 fuse后在MakePrism后得到结果,多处来的5个面
   

这5个面的mesh结果

这5个面的mesh结果


这两种方法生产图形的程序见附件。fuse3D.cpp 是用圆柱和长方体fuse出来的,fuse2D.cpp是平面图fuse然后MakePrism生成的。

fuse.zip

1.94 KB, 下载次数: 0, 下载积分: 金钱 -10

BoolBRepFuse测试程序

您需要登录后才可以回帖 立即登录
👍我们看一下
2024-3-2 00:07:13
您好!非常感谢您的深度使用和宝贵意见,我们目前确实还没有实现这些面的融合。团队正在评估和考虑方案,期望不久的将来能够达到您的预期。敬请期待!
2024-3-4 11:51:11
返回顶部