OpenCascade布尔操作

布尔操作可以组合两组形状创建新的形状(Shape),OpenCascade支持的布尔操作包括Fuse(融合)、Common(相交)和Cut(切割)。

操作结果
FuseS1或S2中的所有点
CommonS1和S2中的所有点
Cut S1 by S2S1中的所有点,而不是S2中的所有点

从拓扑学的角度来看,这部分API包含了拓扑操作以及后续的混合操作(在拓扑操作后对创建的边进行圆角操作)。

拓扑操作是创建真实工业部件的最便捷方式。由于大多数工业部件由几个简单的元素组成,如齿轮、臂、孔、管道等。通常很容易单独创建这些元素,然后通过布尔 操作将它们组合起来。

OpenCascade的布尔操作可以传入以下类型的参数,并生成不同的结果:

  • 对于相同类型的参数(例如实体/实体),生成的将是复合类型,包含该类型的形状:
  • 对于不同类型的参数(例如 壳 /实体),生成的将是复合类型,包含与低类型相同的形状。示例:对于 壳/实体,结果是壳复合类型。
  • 对于不同类型的参数,某些布尔操作由于结果的非流形而无法使用默认实现执行。例如:壳 和 实体 的 FUSE 操作无法完成,但可以执行Cut操作,其中 壳 是对象,实体是工具。
  • 在某些情况下可以对复合类型的参数执行布尔操作。在这种情况下,每个复合体不得是异质的,即它必须包含等维形状(EDGEs 或/和 WIREs、FACE 或/和 SHELL、SOLIDs)。复合体内部的 SOLID 不得相互接触。对于SHELLs或FACEs、WIREs 或 EDGEs,应遵循同样的条件。
  • 不支持为复合实体形状进行布尔操作。

BRepAlgoAPI_BooleanOperation类是布尔操作的延迟实现根类,应当使用继承类进行具体的布尔操作。

使用BRepAlgoAPI_Fuse执行融合(Fuse)操作,例如:

TopoDS_Shape A = ..., B = ...; 
TopoDS_Shape S = BRepAlgoAPI_Fuse(A,B); 

使用BRepAlgoAPI_Common执行相交(Common)操作。例如:

TopoDS_Shape A = ..., B = ...; 
TopoDS_Shape S = BRepAlgoAPI_Common(A,B)

使用BRepAlgoAPI_Cut执行切割(Cut)操作。例如:

TopoDS_Shape A = ..., B = ...; 
TopoDS_Shape S = BRepAlgoAPI_Cut(A,B);

使用BRepAlgoAPI_Section执行剖切操作:

TopoDS_Shape A = ...,  TopoDS_ShapeB = ...; 
TopoDS_Shape S =  BRepAlgoAPI_Section(A,B); 

结果以TopoDS_Edge构成的TopoDS_Compoun 进行描述。


原文链接:Modeling Algorithms - Boolean Openrations

BimAnt翻译整理,转载请标明出处