//////////////////////////////////////////////////////////////

//...include all relevant OCC headers here////////////////////

static TopoDS_Compound AddTestStructure(int nCount_)
{
BRep_Builder B;
int nCount=nCount_;
TopoDS_Compound C;
B.MakeCompound(C);
BRepPrimAPI_MakeBox mkBox(1.0, 2.0, 3.0);
for (int i=0; i<nCount; i++) {
for (int j=0; j<nCount; j++) {
gp_Trsf trsf;
trsf.SetTranslationPart(gp_Vec(5.0*i, 05.0*j, 0.0));
TopLoc_Location topLoc(trsf);
TopoDS_Shape tempShape=mkBox.Shape().Located(topLoc);
B.Add(C, tempShape);
}
}
return C;
}

int main( int argc, char *argv[ ])
{
int nCount = 10;
if (argc > 1)
nCount = atoi(argv[1]);
STEPCAFControl_Writer writer;
Handle_TDocStd_Document document;
document = new TDocStd_Document("Pace Test-StepExporter-");
Handle_XCAFDoc_ShapeTool shapeTool;
shapeTool = XCAFDoc_DocumentTool::ShapeTool(document->Main());
shapeTool->AddShape(AddTestStructure(nCount), Standard_True);
STEPControl_StepModelType mode = STEPControl_AsIs;
if (!Interface_Static::SetIVal("write.step.assembly",1)) { //assembly mode
assert(false && "failed to set assembly mode for step data");
}
try {
if( writer.Transfer(document, mode)) {
IFSelect_ReturnStatus stat =
writer.Write("TestExportStructure.step");
}
} catch (Standard_Failure e) {
cout << e.GetMessageString() << endl;
} catch(...) {
cout << "GeneralError\n" << endl;
}
return 0;
}

////////////////////////////////////////////////////////////////////
