文章

OCC boolean operations

个人理解:由于OCCT采用BRep(边界表示)表示方式,在做boolean操作时,计算出诸如edge/edgeface/face的交界面/点等,并存储供后面使用。

1. 干涉检测

计算出ObjectsTools的各种干涉类型:如vertexvertex/edge/face/solid之间的干涉数据,edgeedge/face/solid之间的干涉数据,faceface/solid之间的干涉数据。主要是edgeedge之间的干涉检查。

存储的干涉数据以P_curvesPave形式存储。P_Curves是指比如一条边与一个面相交,需要在面上构建一条曲线来表示这条相交边。P_Curves存储边与面的相交信息(如交点、切线)。

Pave是表示边界点的数据结构,出了位置外,还包含了曲率、方向等信息。在boolean过程中,需要用Pave存储相交信息。Pave是构建P_Curves(以及其他数据)的基础。

2. General Fuse Algorithm (GFA)

步骤如下:

init -> calc vertex/vertex interferences -> calc vertex/edge interferences -> update Pave block -> calc edge/edge interferences -> calc vertex/face interferences -> calc edge/face interferences -> build split edges(构建分割边)-> calc face/face interferences -> build Section Edges(构建截面边)-> build P_Curves ->Process Degenerated Edges(处理退花边)。

2.1 分割边

其中,构建分割边,是指:

  1. 识别形状之间的交线
  2. 根据交线在Objects的形状上构建新的边
  3. 将这些新构建的边作为分割边
  4. 根据分割边,将Objects的形状划分为若干个子形状

构建好分割边后,后续的布尔运算就可以基于这些分割后的子形状进行计算,得到最终的结果形状。

2.2 截面边

本文由作者按照 CC BY 4.0 进行授权