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"); }