布尔操作是几何建模中非常重要的一个操作。使用OCC可以方便快捷的实现布尔操作
#include <BRepAlgoAPI_Cut.hxx>
#include <BRepAlgoAPI_Common.hxx>
#include <BRepAlgoAPI_Fuse.hxx>
//布尔差
//获取到处理的两个shape
TopoDS_Shape shape1 = getShape1();
TopoDS_Shape shape2 = getSahep2();
//进行布尔差操作
TopoDS_Shape resShape = BRepAlgoAPI_Cut(shape1, shape2);
//布尔交
TopoDS_Shape shape1 = getShape1();
TopoDS_Shape shape2 = getShape2();
//进行求交操作
const TopoDS_Shape& aFusedShape = BRepAlgoAPI_Common(shape1, shape2);
//如果结果为空,那么使用BRepAlgoAPI_Section ,返回结果为两个shape的相交线
if (GeoCommandTool::isEmpty(aFusedShape)) {
BRepAlgoAPI_Section S(shape1, shape2, false);
S.Build();
return S.Shape();
}
//布尔和
TopoDS_Shape shape1 = getShape1();
TopoDS_Shape shape2 = getShape2();
//进行求和操作
BRepAlgoAPI_Fuse fau(shape1, shape2);
const TopoDS_Shape& aFusedShape = fau.Shape();