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:
#include <occutils/Primitive.hxx> using namespace OCCUtils; TopoDS_Solid myCube = Primitive::MakeCube(5.0 /* mm side length */);
You can also center this cube on one or more axes (if not centered in any axis, one of the corners is going to be on thre origin point):
#include <occutils/Primitive.hxx> using namespace OCCUtils; /* * Make a cube that is centered on the X- and Y axes */ TopoDS_Solid myCube = Primitive::MakeCube(5.0 /* mm side length */, Primitive::CenterX | Primitive::CenterY);
Also you can use a specific point of origin as the third argument (gp_Pnt
).
If you want to do it manually without OCCUtils, have a look at the OCC class BRepPrimAPI_MakeBox
which you can use like this:
BRepPrimAPI_MakeBox box(origin, size, size, size); box.Build(); TopoDS_Solid mySolid = box.Solid();
In this case, you have to center the object manually by computing the correct point of origin. In OCCUtils this is done using
// Compute offsets based on centering 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); }