1、读step文件
IFSelect_ReturnStatus ReadSTEP(
const Standard_CString& aFileName,
Handle(TopTools_HSequenceOfShape)& aHSequenceOfShape)
{
aHSequenceOfShape->Clear();
STEPControl_Reader aReader;
IFSelect_ReturnStatus status = aReader.ReadFile(aFileName);
if (status != IFSelect_RetDone)
return status;
aReader.WS()->TransferReader()->TransientProcess()->SetTraceLevel(2);
Standard_Boolean failsonly = Standard_False;
aReader.PrintCheckLoad(failsonly, IFSelect_ItemsByEntity);
Standard_Integer nbr = aReader.NbRootsForTransfer();
aReader.PrintCheckTransfer (failsonly, IFSelect_ItemsByEntity);
for ( Standard_Integer n = 1; n<=nbr; n++)
{
aReader.TransferRoot(n);
}
Standard_Integer nbs = aReader.NbShapes();
if (nbs == 0)
{
return IFSelect_RetVoid;
}
for (Standard_Integer i=1; i<=nbs; i++)
{
aHSequenceOfShape->Append(aReader.Shape(i));
}
return status;
}
2、写step文件
IFSelect_ReturnStatus SaveSTEP(
const Standard_CString& aFileName,
const Handle(TopTools_HSequenceOfShape)& aHSequenceOfShape,
const STEPControl_StepModelType aValue )
{
STEPControl_Writer aWriter;
IFSelect_ReturnStatus status;
for (Standard_Integer i=1;i<=aHSequenceOfShape->Length();i++)
{
status = aWriter.Transfer(aHSequenceOfShape->Value(i), aValue);
if ( status != IFSelect_RetDone )
return status;
}
status = aWriter.Write(aFileName);
return status;
}