OGG几何内核开发-BRepAlgoAPI_Fuse与BRep_Builder.MakeCompound比较

最近在与同事讨论BRepAlgoAPI_Fuse与BRep_Builder.MakeCompound有什么区别。

一、从直觉上来说,BRepAlgoAPI_Fuse会对两个实体相交处理,相交的部分会重新的生成相关的曲面。而BRep_Builder.MakeCompound仅仅是把两个实体组合成一个新的实体,但相交的部分不会处理。

一个球体与一个长方体相交。三种方式:

1、直接放置在相近的位置,结果:两个独立的实体。

参考示例代码:

TopoDS_Shape topoBox = BRepPrimAPI_MakeBox(axis, 3.0, 4.0, 5.0).Shape();
TopoDS_Shape topoSphere = BRepPrimAPI_MakeSphere(axis, 2.5).Shape();

2、调用BRepAlgoAPI_Fuse,做融合,结果:融合成为一个实体。

参考示例代码:

TopoDS_Shape topoBox = BRepPrimAPI_MakeBox(axis, 3.0, 4.0, 5.0).Shape();
TopoDS_Shape topoSphere = BRepPrimAPI_MakeSphere(axis, 2.5).Shape();
TopoDS_Shape fusedShape = BRepAlgoAPI_Fuse(topoBox, topoSphere);

3、调用BRep_Builder.MakeCompound,做聚合,聚合成一个Compound实体。

参考示例代码:

TopoDS_Shape topoBox = BRepPrimAPI_MakeBox(axis, 3.0, 4.0, 5.0).Shape();
TopoDS_Shape topoSphere = BRepPrimAPI_MakeSphere(axis, 2.5).Shape();
  
    // Make a compound shape.
    TopoDS_Compound aComp;
    BRep_Builder aBuilder;
    aBuilder.MakeCompound(aComp);
    aBuilder.Add(aComp, topoBox);
    aBuilder.Add(aComp, topoSphere);

如下图所示:

二、如何发现BRepAlgoAPI_Fuse与BRep_Builder.MakeCompound区别。

 方式一:点选实体,并切换Shading显示模式。

注意看,中间的Fuse的相交部分,有新的曲线与曲面生成。

方式二:对这些实体进行brep数据结构分析

1、长方体的6个Face ID: 28~33

2、Fuse融合的实体:是个Compound实体,只有一个Solid子实体,7个面中29,31,33是融合前的长方体的面,另4个面是重新生成的。

3、MakeCompound生成的聚合实体:有两个Solid子体。其中6个Face的ID,仍然是聚合前的长方体的6个Face。

所以,BRep_Builder.MakeCompound不会做曲面求交以及重新生成相交部分的曲线曲面的等动作。速度会大大快过BRepAlgoAPI_Fuse。但生成的聚合实体,可能不是你想要的。

三、几何内核信息

基于OCCT 7.7.0内核修改。

四、OGG 1.0内核

OGG 1.0内核,在OCCT 7.7.0的基础上有486项多改进。

编译并试用过后,目前情况是,OGG 1.0与OCCT 7.7.0的兼容性非常好。

只是我对内核的修改,ID生成,不知什么原因,全变成0了。

还需要进一步分析原因。

五、原因很简单,只添加了字段,未生成ID。

参考示例代码:

TopoDS_TShape()
: myFlags (TopoDS_TShape_Flags_Free
         | TopoDS_TShape_Flags_Modified | TopoDS_TShape_Flags_Orientable)
{
  id = getIdIndex();
}

编译OGG1.0的内核代码后,重新编译OGG测试插件,id生成正常。

brepalgoapi_fuse是一种基于BREP(Boundary Representation)的算法API和技术。BREP是一种用于3D几何模型表示的方法,被广泛应用于计算机辅助设计(CAD)和计算机图形学领域。 brepalgoapi_fuse提供了一套算法API,用于处理和操作BREP模型。它可以执行各种操作,如模型的融合、裁剪、分解、变形等。通过使用这些API,用户可以轻松地对BREP模型进行编辑和修改,以满足个性化需求。 融合是brepalgoapi_fuse的一个重要功能。融合操作可以将两个或多个BREP模型合并为一个模型。这对于合并不同部分的模型或创建复杂的组合模型非常有用。使用brepalgoapi_fuse的融合功能,用户可以将多个BREP模型组合到一起,形成一个整体。可以在图形界面上直观地调整和控制这些融合操作。 除了融合之外,brepalgoapi_fuse还提供了其他重要的功能。裁剪操作允许用户切割BREP模型并保留想要的部分,可以用于删除无用的部分或创建新的形状。分解操作将一个复杂的BREP模型分解为更简单的子模型,便于进一步编辑和处理。变形操作可以在BREP模型上进行形状的变换和调整。 总之,brepalgoapi_fuse是一个功能强大的BREP算法API,用于处理和操作3D几何模型。它提供了融合、裁剪、分解、变形等多种功能,能够满足用户对BREP模型编辑和修改的需求。无论是在CAD设计中还是计算机图形学中,brepalgoapi_fuse都是一个非常有用的工具。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值