How to export STEP file in OpenCASCADE
My OCCUtils library provides a super-easy way of exporting your TopoDS_Shape
to a STEP AP203 file:
#include <occutils/STEPExport.hxx>
using namespace OCCUtils;
TopoDS_Shape myShape = /* ... */;
STEP::ExportSTEP(myShape, "myShape.step");
In case you want to do it manually, it’s much more complicated to do right, but here are the basic steps to do it:
STEPControl_Writer writer;
writer.Transfer(shape, STEPControl_AsIs);
writer.Write(filename.c_str());
The full STEP::ExportSTEP
code from OCCUtils is:
if (shape.IsNull () == true) {
throw new invalid_argument("Can't export null shape to STEP");
}
STEPControl_Writer writer;
Interface_Static::SetCVal ("xstep.cascade.unit", unit.c_str());
Interface_Static::SetCVal ("write.step.unit", unit.c_str ());
Interface_Static::SetIVal ("write.step.nonmanifold", 1);
// "Transfer" = convert
IFSelect_ReturnStatus transferStatus = writer.Transfer(shape, STEPControl_AsIs);
if (transferStatus != IFSelect_RetDone) {
throw std::logic_error ("Error while transferring shape to STEP");
}
// Write transferred structure to STEP file
IFSelect_ReturnStatus writeStatus = writer.Write(filename.c_str());
// Return previous locale
if (writeStatus != IFSelect_RetDone)
{
throw std::logic_error ("Error while writing transferred shape to STEP file");
}