如何使用 OCCUtils 为 OpenCascade 切割形状(布尔差)
OCCUtils 库提供了一种在 OpenCASCADE 中计算差值或从一个形状切割另一个形状的简便方法。另请查看如何在 OpenCASCADE 中创建 Box TopoDS_Solid和如何在 OpenCASCADE 中创建 Cylinder TopoDS_Solid了解如何使用 OCCUtils 生成这些形状的更多详情。
如果我们有两个形状:
occutils_boolean_difference.cpp
#include <occutils/Primitive.hxx>
// ...
TopoDS_Solid box = Primitive::MakeBox(10, 10, 10 /* mm */);
TopoDS_Solid cylinder = Primitive::MakeCylinder(3 /* mm diameter */,
100 /* mm length */, Primitive::Orientation::Y);我们可以使用 OCCUtils 中的 Boolean::Cut 来计算布尔差:
occutils_boolean_cut_example.cpp
TopoDS_Shape result = Boolean::Cut(box, cylinder);带 STEP 导出的完整 main.cpp 示例:
occutils_main.cpp
#include <occutils/Primitive.hxx>
#include <occutils/STEPExport.hxx>
#include <occutils/Boolean.hxx>
using namespace OCCUtils;
int main() {
// 制作基本盒子
TopoDS_Solid box = Primitive::MakeBox(10, 10, 10 /* mm */);
TopoDS_Solid cylinder = Primitive::MakeCylinder(3 /* mm diameter */,
100 /* mm length */, Primitive::Orientation::Y);
TopoDS_Shape result = Boolean::Cut(box, cylinder);
STEP::ExportSTEP(result, "out.step");
}在 FreeCAD 中查看时,结果(out.step)将如下所示

Check out similar posts by category:
C/C++, OpenCASCADE
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow