X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMESH%2FSMESH_subMesh.cxx;h=e8a61f295e8675f80d042240b222e5d77b3c80f9;hp=b297cf60945552487f4f9a0c72e7e98ebff68bc3;hb=4c16067d4281f56bd07d3f92fb63fff9c0c1d169;hpb=cf7328b78f5781ca1e17ab0b15d878746084dfa9 diff --git a/src/SMESH/SMESH_subMesh.cxx b/src/SMESH/SMESH_subMesh.cxx index b297cf609..e8a61f295 100644 --- a/src/SMESH/SMESH_subMesh.cxx +++ b/src/SMESH/SMESH_subMesh.cxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMESH : implementaion of SMESH idl descriptions +// SMESH SMESH : implementation of SMESH idl descriptions // File : SMESH_subMesh.cxx // Author : Paul RASCLE, EDF // Module : SMESH @@ -38,8 +38,6 @@ #include "SMESH_MesherHelper.hxx" #include "SMESH_subMeshEventListener.hxx" -#include - #include "utilities.h" #include "OpUtil.hxx" #include "Basics_Utils.hxx" @@ -493,7 +491,7 @@ const TopoDS_Shape & SMESH_subMesh::GetSubShape() const //======================================================================= //function : CanAddHypothesis //purpose : return true if theHypothesis can be attached to me: -// its dimention is checked +// its dimension is checked //======================================================================= bool SMESH_subMesh::CanAddHypothesis(const SMESH_Hypothesis* theHypothesis) const @@ -514,25 +512,25 @@ bool SMESH_subMesh::CanAddHypothesis(const SMESH_Hypothesis* theHypothesis) cons } //======================================================================= -//function : IsApplicableHypotesis +//function : IsApplicableHypothesis //purpose : check if this sub-mesh can be computed using a hypothesis //======================================================================= -bool SMESH_subMesh::IsApplicableHypotesis(const SMESH_Hypothesis* theHypothesis) const +bool SMESH_subMesh::IsApplicableHypothesis(const SMESH_Hypothesis* theHypothesis) const { if ( !_father->HasShapeToMesh() && _subShape.ShapeType() == TopAbs_SOLID ) return true; // true for the PseudoShape - return IsApplicableHypotesis( theHypothesis, _subShape.ShapeType() ); + return IsApplicableHypothesis( theHypothesis, _subShape.ShapeType() ); } //======================================================================= -//function : IsApplicableHypotesis +//function : IsApplicableHypothesis //purpose : compare shape type and hypothesis type //======================================================================= -bool SMESH_subMesh::IsApplicableHypotesis(const SMESH_Hypothesis* theHypothesis, - const TopAbs_ShapeEnum theShapeType) +bool SMESH_subMesh::IsApplicableHypothesis(const SMESH_Hypothesis* theHypothesis, + const TopAbs_ShapeEnum theShapeType) { if ( theHypothesis->GetType() > SMESHDS_Hypothesis::PARAM_ALGO) { @@ -624,7 +622,7 @@ SMESH_Hypothesis::Hypothesis_Status bool modifiedHyp = (event == MODIF_HYP); // if set to true, force event MODIF_ALGO_STATE SMESH_Algo* algoRequiringCleaning = 0; - bool isApplicableHyp = IsApplicableHypotesis( anHyp ); + bool isApplicableHyp = IsApplicableHypothesis( anHyp ); if (event == ADD_ALGO || event == ADD_FATHER_ALGO) { @@ -646,7 +644,7 @@ SMESH_Hypothesis::Hypothesis_Status filter.Or( SMESH_HypoFilter::HasType( algo->GetType()+1 )); filter.Or( SMESH_HypoFilter::HasType( algo->GetType()+2 )); if ( SMESH_Algo * curAlgo = (SMESH_Algo*)_father->GetHypothesis( this, filter, true )) - if ( !curAlgo->NeedDiscreteBoundary() ) + if ( !curAlgo->NeedDiscreteBoundary() && curAlgo != anHyp ) algoRequiringCleaning = curAlgo; } } @@ -1074,7 +1072,7 @@ bool SMESH_subMesh::IsConform(const SMESH_Algo* theAlgo) if ( !theAlgo ) return false; // Suppose that theAlgo is applicable to _subShape, do not check it here - //if ( !IsApplicableHypotesis( theAlgo )) return false; + //if ( !IsApplicableHypothesis( theAlgo )) return false; // check only algo that doesn't NeedDiscreteBoundary(): because mesh made // on a sub-shape will be ignored by theAlgo @@ -1295,40 +1293,19 @@ static void cleanSubMesh( SMESH_subMesh * subMesh ) SMESHDS_Mesh * meshDS = subMesh->GetFather()->GetMeshDS(); int nbElems = subMeshDS->NbElements(); if ( nbElems > 0 ) - { - // start from elem with max ID to avoid filling the pool of IDs - bool rev = true; - SMDS_ElemIteratorPtr ite = subMeshDS->GetElements( rev ); - const SMDS_MeshElement * lastElem = ite->next(); - rev = ( lastElem->GetID() == meshDS->MaxElementID() ); - if ( !rev ) - ite = subMeshDS->GetElements( rev ); - else - meshDS->RemoveFreeElement( lastElem, subMeshDS ); - while (ite->more()) { - const SMDS_MeshElement * elt = ite->next(); - meshDS->RemoveFreeElement( elt, subMeshDS ); - } - } + for ( SMDS_ElemIteratorPtr ite = subMeshDS->GetElements(); ite->more(); ) + meshDS->RemoveFreeElement( ite->next(), subMeshDS ); + int nbNodes = subMeshDS->NbNodes(); if ( nbNodes > 0 ) - { - bool rev = true; - SMDS_NodeIteratorPtr itn = subMeshDS->GetNodes( rev ); - const SMDS_MeshNode * lastNode = itn->next(); - rev = ( lastNode->GetID() == meshDS->MaxNodeID() ); - if ( !rev ) - itn = subMeshDS->GetNodes( rev ); - else - meshDS->RemoveNode( lastNode ); - while (itn->more()) { + for ( SMDS_NodeIteratorPtr itn = subMeshDS->GetNodes(); itn->more() ; ) + { const SMDS_MeshNode * node = itn->next(); if ( node->NbInverseElements() == 0 ) meshDS->RemoveFreeNode( node, subMeshDS ); else // for StdMeshers_CompositeSegment_1D: node in one submesh, edge in another - meshDS->RemoveNode(node); + meshDS->RemoveNode( node ); } - } subMeshDS->Clear(); } } @@ -1768,7 +1745,7 @@ bool SMESH_subMesh::ComputeStateEngine(compute_event event) case COMPUTE_CANCELED: // nothing to do break; case CLEAN: - cleanDependants(); // clean sub-meshes, dependant on this one, with event CLEAN + cleanDependants(); // clean sub-meshes, dependent on this one, with event CLEAN removeSubMeshElementsAndNodes(); _computeState = NOT_READY; if ( _algoState == HYP_OK ) @@ -2209,13 +2186,13 @@ const SMESH_Hypothesis* SMESH_subMesh::getSimilarAttached(const TopoDS_Shape& } //======================================================================= -//function : CheckConcurentHypothesis +//function : CheckConcurrentHypothesis //purpose : check if there are several applicable hypothesis attached to // ancestors //======================================================================= SMESH_Hypothesis::Hypothesis_Status - SMESH_subMesh::CheckConcurentHypothesis (const int theHypType) + SMESH_subMesh::CheckConcurrentHypothesis (const int theHypType) { // is there local hypothesis on me? if ( getSimilarAttached( _subShape, 0, theHypType ) ) @@ -2237,7 +2214,7 @@ SMESH_Hypothesis::Hypothesis_Status aPrevHyp = hyp; } else if ( aPrevWithHyp.ShapeType() == ancestor.ShapeType() && aPrevHyp != hyp ) - return SMESH_Hypothesis::HYP_CONCURENT; + return SMESH_Hypothesis::HYP_CONCURRENT; else return SMESH_Hypothesis::HYP_OK; } @@ -2386,7 +2363,7 @@ EventListenerData* SMESH_subMesh::GetEventListenerData(const string& listenerNam //================================================================================ /*! - * \brief Notify stored event listeners on the occured event + * \brief Notify stored event listeners on the occurred event * \param event - algo_event or compute_event itself * \param eventType - algo_event or compute_event * \param hyp - hypothesis, if eventType is algo_event @@ -2492,7 +2469,7 @@ void SMESH_subMesh::loadDependentMeshes() * \brief Do something on a certain event * \param event - algo_event or compute_event itself * \param eventType - algo_event or compute_event - * \param subMesh - the submesh where the event occures + * \param subMesh - the submesh where the event occurs * \param data - listener data stored in the subMesh * \param hyp - hypothesis, if eventType is algo_event *