如何在 OpenCASCADE 中创建立方体 TopoDS_Solid

另请参见如何在 OpenCASCADE 中创建长方体 TopoDS_Solid如何在 OpenCASCADE 中创建圆柱体 TopoDS_Solid

使用我的 OCCUtils 库,你可以轻松创建用户定义尺寸的立方体:

cube_example.cpp
#include <occutils/Primitive.hxx>

using namespace OCCUtils;

TopoDS_Solid myCube = Primitive::MakeCube(5.0 /* mm side length */);

你也可以在一个或多个轴上居中此立方体(如果未在任何轴上居中,其中一个角将位于原点):

cube_centered.cpp
#include <occutils/Primitive.hxx>

using namespace OCCUtils;

/*
 * 创建在 X 和 Y 轴上居中的立方体
 */
TopoDS_Solid myCube = Primitive::MakeCube(5.0 /* mm side length */,
    Primitive::CenterX | Primitive::CenterY);

你也可以使用特定原点作为第三个参数(gp_Pnt)。

如果你想在不使用 OCCUtils 的情况下手动操作,请查看 OCC 类 BRepPrimAPI_MakeBox,你可以像这样使用它:

brepprim_makebox.cpp
BRepPrimAPI_MakeBox box(origin, size, size, size);
box.Build();
TopoDS_Solid mySolid = box.Solid();

在这种情况下,你需要通过计算正确的原点手动居中对象。在 OCCUtils 中,这是使用

offsets.cpp
// 基于居中计算偏移量
if(center & CenterX) {
    origin.SetX(origin.X() - xSize / 2.0);
}
if(center & CenterY) {
    origin.SetY(origin.Y() - ySize / 2.0);
}
if(center & CenterZ) {
    origin.SetZ(origin.Z() - zSize / 2.0);
}

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