// Copyright (c) 1999-2014 OPEN CASCADE SAS // // This file is part of Open CASCADE Technology software library. // // This library is free software; you can redistribute it and/or modify it under // the terms of the GNU Lesser General Public License version 2.1 as published // by the Free Software Foundation, with special exception defined in the file // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT // distribution for complete text of the license and disclaimer of any warranty. // // Alternatively, this file may be used under the terms of Open CASCADE // commercial license or contractual agreement. #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include IMPLEMENT_STANDARD_RTTIEXT(XSControl_TransferWriter,MMgt_TShared) //======================================================================= //function : Clear //purpose : //======================================================================= void XSControl_TransferWriter::Clear (const Standard_Integer mode) { if (mode < 0 || myTransferWriter.IsNull()) myTransferWriter = new Transfer_FinderProcess; else myTransferWriter->Clear(); } //======================================================================= //function : PrintStats //purpose : //======================================================================= void XSControl_TransferWriter::PrintStats (const Standard_Integer , const Standard_Integer ) const { Handle(Message_Messenger) sout = myTransferWriter->Messenger(); // A ameliorer ... ! sout<<"\n*******************************************************************\n"; sout << "****** Statistics on Transfer (Write) ******"<RecognizeWriteTransient (obj,myTransferMode); } //======================================================================= //function : TransferWriteTransient //purpose : //======================================================================= IFSelect_ReturnStatus XSControl_TransferWriter::TransferWriteTransient (const Handle(Interface_InterfaceModel)& model, const Handle(Standard_Transient)& obj) { IFSelect_ReturnStatus status = IFSelect_RetVoid; if (myController.IsNull()) return IFSelect_RetError; if (model.IsNull()) return IFSelect_RetVoid; if (myTransferWriter.IsNull()) myTransferWriter = new Transfer_FinderProcess; Handle(Transfer_ActorOfFinderProcess) nulact; myTransferWriter->SetActor (nulact); Handle(Standard_Transient) resultat; Handle(Message_Messenger) sout = myTransferWriter->Messenger(); try { OCC_CATCH_SIGNALS PrintStats(myTransferMode); sout << "****** Transferring Transient, CDL Type = "; sout<DynamicType()->Name()<<" ******"<TransferWriteTransient (obj,myTransferWriter,model,myTransferMode); } catch(Standard_Failure const& anException) { sout<<"**** **** TransferWriteShape, EXCEPTION : "; sout<RecognizeWriteShape (shape,myTransferMode); } //======================================================================= //function : TransferWriteShape //purpose : //======================================================================= IFSelect_ReturnStatus XSControl_TransferWriter::TransferWriteShape (const Handle(Interface_InterfaceModel)& model, const TopoDS_Shape& shape) { IFSelect_ReturnStatus status = IFSelect_RetVoid; if (myController.IsNull()) return IFSelect_RetError; if (model.IsNull()) return IFSelect_RetVoid; if (myTransferWriter.IsNull()) myTransferWriter = new Transfer_FinderProcess; // effacer l actor : Controller s en charge Handle(Transfer_ActorOfFinderProcess) nulact; myTransferWriter->SetActor (nulact); Handle(Standard_Transient) resultat; Handle(Message_Messenger) sout = myTransferWriter->Messenger(); try { OCC_CATCH_SIGNALS PrintStats(myTransferMode); sout << "****** Transferring Shape, ShapeType = " << shape.ShapeType(); sout<<" ******"<TransferWriteShape (shape,myTransferWriter,model,myTransferMode); } catch(Standard_Failure const& anException) { sout<<"**** **** TransferWriteShape, EXCEPTION : "; sout<NbMapped(); for (i = 1; i <= nb; i ++) { DeclareAndCast(Transfer_SimpleBinderOfTransient,tb,myTransferWriter->MapItem(i)); if (tb.IsNull()) continue; Handle(Interface_Check) ach = tb->Check(); if (ach->NbFails() == 0 || ach->NbWarnings() == 0) continue; DeclareAndCast(Transfer_TransientMapper,tm,myTransferWriter->Mapped(i)); if (tm.IsNull()) ach->GetEntity (myTransferWriter->Mapped(i)); else ach->GetEntity (tm->Value()); chl.Add(ach); } return chl; } //======================================================================= //function : ResultCheckList //purpose : //======================================================================= Interface_CheckIterator XSControl_TransferWriter::ResultCheckList (const Handle(Interface_InterfaceModel)& model) const { Interface_CheckIterator chl; if (myTransferWriter.IsNull()) return chl; Standard_Integer i, nb = myTransferWriter->NbMapped(); for (i = 1; i <= nb; i ++) { DeclareAndCast(Transfer_SimpleBinderOfTransient,tb,myTransferWriter->MapItem(i)); if (tb.IsNull()) continue; const Handle(Interface_Check) ach = tb->Check(); if (ach->NbFails() == 0 || ach->NbWarnings() == 0) continue; Handle(Standard_Transient) ent = tb->Result(); if (!ent.IsNull() && !model.IsNull()) chl.Add(ach,model->Number(ent)); else chl.Add(ach,0); } return chl; }