X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FShHealOper%2FShHealOper_ShapeProcess.cxx;h=43bb1e131ecb0fecae6239d5d2f83b8646417bb4;hb=09ece3edc1896e16a412b35810d76411f06d68ec;hp=fa516e924777db9356c6957b0815e04c0c603736;hpb=7d880c6a8262b6d670ed70ee2b9ec25c199a46d4;p=modules%2Fgeom.git diff --git a/src/ShHealOper/ShHealOper_ShapeProcess.cxx b/src/ShHealOper/ShHealOper_ShapeProcess.cxx index fa516e924..43bb1e131 100644 --- a/src/ShHealOper/ShHealOper_ShapeProcess.cxx +++ b/src/ShHealOper/ShHealOper_ShapeProcess.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2014 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2023 CEA, EDF, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -39,6 +39,13 @@ #include #include #include +#include +#include +#include +#include +#include +#include +#include //======================================================================= //function : ShHealOper_ShapeProcess() @@ -52,8 +59,9 @@ ShHealOper_ShapeProcess::ShHealOper_ShapeProcess ( ) : //myResource = new Resource_Manager("ShHealing"); myPrefix = "ShapeProcess"; mySaveHistoryMode = Standard_False; - myLevel = TopAbs_FACE; + myLevel = TopAbs_EDGE; myDone = Standard_False; + myOperations.Context()->SetDetalisation ( TopAbs_EDGE ); } //======================================================================= @@ -63,23 +71,22 @@ ShHealOper_ShapeProcess::ShHealOper_ShapeProcess ( ) : ShHealOper_ShapeProcess::ShHealOper_ShapeProcess (const TCollection_AsciiString& theNameResource, const TCollection_AsciiString& thePrefix ) : - myOperations(theNameResource.ToCString(),thePrefix.ToCString()) + myOperations(theNameResource.ToCString(),thePrefix.ToCString()) { //myResource = new Resource_Manager(theNameResource); myPrefix = thePrefix; mySaveHistoryMode = Standard_False; - myLevel = TopAbs_FACE; + myLevel = TopAbs_EDGE; myDone = Standard_False; } //======================================================================= //function : Perform -//purpose : +//purpose : //======================================================================= -void ShHealOper_ShapeProcess::Perform(const TopoDS_Shape& theOldShape, - TopoDS_Shape& theNewShape) +void ShHealOper_ShapeProcess::Perform(const TopoDS_Shape& theOldShape, + TopoDS_Shape& theNewShape) { - myMapModifications.Clear(); //ShapeProcessAPI_ApplySequence aOperations(myResource,myPrefix.ToCString()); //myDone = Standard_False; @@ -99,12 +106,35 @@ void ShHealOper_ShapeProcess::Perform(const TopoDS_Shape& theOldShape, myDone = !anOldShape.IsSame(theNewShape); if(!myDone) { Standard_Real aendTol =aSatol.Tolerance(theNewShape,0); - myDone = (fabs(ainitTol - aendTol) > Precision::Confusion()); + myDone = (fabs(ainitTol - aendTol) > Precision::Confusion()); + if ( myDone ) { + if ( ainitTol > aendTol ) + myStatistics.AddModif( "Tolerance fixed (decreased)" ); + else + myStatistics.AddModif( "Tolerance fixed (increased)" ); + } + } + + // fill myStatistics with messages + Handle(ShapeExtend_MsgRegistrator) msg = myOperations.Context()->Messages(); + const ShapeExtend_DataMapOfShapeListOfMsg& shape2msg = msg->MapShape(); + ShapeExtend_DataMapIteratorOfDataMapOfShapeListOfMsg s2msg( shape2msg ); + for ( ; s2msg.More(); s2msg.Next() ) + { + const Message_ListOfMsg & msgList = s2msg.Value(); + Message_ListIteratorOfListOfMsg mIt( msgList ); + for ( ; mIt.More(); mIt.Next() ) + { + Message_Msg& m = mIt.Value(); + TCollection_AsciiString txt = m.Get(); + myStatistics.AddModif( txt.ToCString() ); + } } } + //======================================================================= //function : SetOperators -//purpose : +//purpose : //======================================================================= void ShHealOper_ShapeProcess::SetOperators(const TColStd_SequenceOfAsciiString& theSeqOperators) @@ -127,18 +157,18 @@ void ShHealOper_ShapeProcess::SetOperators(const TColStd_SequenceOfAsciiString& //purpose : //======================================================================= -void ShHealOper_ShapeProcess::SetParameter(const TCollection_AsciiString& theNameParam, - const TCollection_AsciiString& theVal) +void ShHealOper_ShapeProcess::SetParameter(const TCollection_AsciiString& theNameParam, + const TCollection_AsciiString& theVal) { TCollection_AsciiString anameParam(myPrefix); anameParam += "."; anameParam+= theNameParam; - if(theVal.IsIntegerValue()) - myOperations.Context()->ResourceManager()-> - SetResource(anameParam.ToCString(),theVal.IntegerValue()); - else if(theVal.IsRealValue()) + if(theVal.IsRealValue()) myOperations.Context()->ResourceManager()-> SetResource(anameParam.ToCString(),theVal.RealValue()); + else if(theVal.IsIntegerValue()) + myOperations.Context()->ResourceManager()-> + SetResource(anameParam.ToCString(),theVal.IntegerValue()); else myOperations.Context()->ResourceManager()-> SetResource(anameParam.ToCString(),theVal.ToCString()); @@ -171,14 +201,14 @@ Standard_Boolean ShHealOper_ShapeProcess::GetOperators(TColStd_SequenceOfAsciiSt //======================================================================= Standard_Boolean ShHealOper_ShapeProcess::GetParameter(const TCollection_AsciiString& theNameParam, - TCollection_AsciiString& theVal) + TCollection_AsciiString& theVal) { TCollection_AsciiString namePar(myPrefix); namePar += "."; namePar += theNameParam; if(!myOperations.Context()->ResourceManager()->Find(namePar.ToCString())) return Standard_False; - + theVal = myOperations.Context()->ResourceManager()->Value(namePar.ToCString()); return Standard_True; }