Erstellen eines Cube TopoDS_Solid in OpenCASCADE

English Deutsch

Also see How to create a Box TopoDS_Solid in OpenCASCADE and How to create a Cylinder TopoDS_Solid in OpenCASCADE

Using my OCCUtils library, you can easily create a cube of user-defined dimensions:

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

using namespace OCCUtils;

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

Du kannst diesen Würfel auch auf einer oder mehreren Achsen zentrieren (wenn er auf keiner Achse zentriert ist, wird eine der Ecken auf dem Ursprungspunkt liegen):

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

using namespace OCCUtils;

/*
 * Erstelle einen Würfel, der auf der X- und Y-Achse zentriert ist
 */
TopoDS_Solid myCube = Primitive::MakeCube(5.0 /* mm side length */,
    Primitive::CenterX | Primitive::CenterY);

Du kannst auch einen spezifischen Ursprungspunkt als drittes Argument verwenden (gp_Pnt).

Wenn du es manuell ohne OCCUtils tun möchtest, sieh dir die OCC-Klasse BRepPrimAPI_MakeBox an, die du so verwenden kannst:

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

In diesem Fall musst du das Objekt manuell zentrieren, indem du den korrekten Ursprungspunkt berechnest. In OCCUtils wird dies mit

offsets.cpp
// Offsets basierend auf Zentrierung berechnen
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