如何使用 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)将如下所示

FreeCAD view of a box with a cylindrical hole cut using OCCUtils boolean difference


Check out similar posts by category: C/C++, OpenCASCADE