1、讀step檔案
IFSelect_ReturnStatus ReadSTEP(
const Standard_CString& aFileName/*讀取檔案的路徑*/,
Handle(TopTools_HSequenceOfShape)& aHSequenceOfShape/*儲存讀取到的三維模型*/)
{
aHSequenceOfShape->Clear();
//讀取step檔案并傳回讀取狀态
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);
// 轉換step檔案模型
Standard_Integer nbr = aReader.NbRootsForTransfer();
aReader.PrintCheckTransfer (failsonly, IFSelect_ItemsByEntity);
for ( Standard_Integer n = 1; n<=nbr; n++)
{
/*Standard_Boolean ok =*/ 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++)
{
//轉換三維模型到aWriter
status = aWriter.Transfer(aHSequenceOfShape->Value(i), aValue);
if ( status != IFSelect_RetDone )
return status;
}
//儲存資料到磁盤
status = aWriter.Write(aFileName);
return status;
}