PAL13639 (Create "0D Hypothesis")

ensure recompute after 0D hypothesis assignment/removal
This commit is contained in:
eap 2007-04-18 06:57:04 +00:00
parent df4828bb9f
commit 608c27e671

View File

@ -559,16 +559,21 @@ SMESH_Hypothesis::Hypothesis_Status
return SMESH_Hypothesis::HYP_OK; return SMESH_Hypothesis::HYP_OK;
} }
// 0D hypothesis // 0D hypothesis
else if ( _algoState == HYP_OK ) { // update default _algoState else if ( _algoState == HYP_OK ) {
// update default _algoState
if ( event != REMOVE_FATHER_ALGO )
{
_algoState = NO_ALGO; _algoState = NO_ALGO;
algo = gen->GetAlgo(*_father, _subShape); algo = gen->GetAlgo(*_father, _subShape);
if ( algo ) { if ( algo ) {
_algoState = MISSING_HYP; _algoState = MISSING_HYP;
if ( algo->CheckHypothesis(*_father,_subShape, aux_ret)) if ( event == REMOVE_FATHER_HYP ||
algo->CheckHypothesis(*_father,_subShape, aux_ret))
_algoState = HYP_OK; _algoState = HYP_OK;
} }
} }
} }
}
int oldAlgoState = _algoState; int oldAlgoState = _algoState;
bool modifiedHyp = (event == MODIF_HYP); // if set to true, force event MODIF_ALGO_STATE bool modifiedHyp = (event == MODIF_HYP); // if set to true, force event MODIF_ALGO_STATE
@ -705,6 +710,7 @@ SMESH_Hypothesis::Hypothesis_Status
CleanDependants(); CleanDependants();
ComputeStateEngine( CLEAN ); ComputeStateEngine( CLEAN );
CleanDependsOn(); CleanDependsOn();
ComputeSubMeshStateEngine( CHECK_COMPUTE_STATE );
} }
} }
} }
@ -1134,7 +1140,7 @@ SMESH_Hypothesis::Hypothesis_Status
SMESH_Hypothesis::Hypothesis_Status ret = SMESH_Hypothesis::HYP_OK; SMESH_Hypothesis::Hypothesis_Status ret = SMESH_Hypothesis::HYP_OK;
//EAP: a wire (dim==1) should notify edges (dim==1) //EAP: a wire (dim==1) should notify edges (dim==1)
//EAP: int dim = SMESH_Gen::GetShapeDim(_subShape); //EAP: int dim = SMESH_Gen::GetShapeDim(_subShape);
if (_subShape.ShapeType() < TopAbs_EDGE ) // wire,face etc //if (_subShape.ShapeType() < TopAbs_EDGE ) // wire,face etc
{ {
SMESH_subMeshIteratorPtr smIt = getDependsOnIterator(false,false); SMESH_subMeshIteratorPtr smIt = getDependsOnIterator(false,false);
while ( smIt->more() ) { while ( smIt->more() ) {
@ -1425,7 +1431,7 @@ bool SMESH_subMesh::ComputeStateEngine(int event)
if ( ret && _computeError && !_computeError->IsOK() ) { if ( ret && _computeError && !_computeError->IsOK() ) {
ret = false; ret = false;
} }
if (ret) { // check if anything was built if (ret && !_alwaysComputed) { // check if anything was built
ret = ( GetSubMeshDS() && ( GetSubMeshDS()->NbElements() || GetSubMeshDS()->NbNodes() )); ret = ( GetSubMeshDS() && ( GetSubMeshDS()->NbElements() || GetSubMeshDS()->NbNodes() ));
} }
if (!ret) if (!ret)