#17085 [CEA 17030] Warning sub-mesh with Extrusion 3D

This commit is contained in:
eap 2019-07-01 21:45:44 +03:00
parent b718a7cc45
commit 1732ea91c4

View File

@ -6083,19 +6083,23 @@ class SMESH_DimHyp
if ( (_ownDim == _dim || theOther->_ownDim == _dim ) && (!meIsCompound || !otherIsCompound)) if ( (_ownDim == _dim || theOther->_ownDim == _dim ) && (!meIsCompound || !otherIsCompound))
return false; return false;
// bool checkSubShape = ( _dim >= theOther->_dim )
// ? isShareSubShapes( _shapeMap, theOther->_shapeMap, shapeTypeByDim(theOther->_dim) )
// : isShareSubShapes( theOther->_shapeMap, _shapeMap, shapeTypeByDim(_dim) ) ;
bool checkSubShape = isShareSubShapes( _shapeMap, theOther->_shapeMap, shapeTypeByDim(_dim)); bool checkSubShape = isShareSubShapes( _shapeMap, theOther->_shapeMap, shapeTypeByDim(_dim));
if ( !checkSubShape ) if ( !checkSubShape )
return false; return false;
// check algorithms to be same // check algorithms to be same
if ( !checkAlgo( this->GetAlgo(), theOther->GetAlgo() )) const SMESH_Algo* a1 = this->GetAlgo();
return true; // different algorithms -> concurrency ! const SMESH_Algo* a2 = theOther->GetAlgo();
bool isSame = checkAlgo( a1, a2 );
if ( !isSame )
{
if ( !a1 || !a2 )
return false; // pb?
return a1->GetDim() == a2->GetDim(); // different algorithms of same dim -> concurrency !
}
// check hypothesises for concurrence (skip first as algorithm) // check hypothesises for concurrence (skip first as algorithm)
int nbSame = 0; size_t nbSame = 0;
// pointers should be same, because it is referened from mesh hypothesis partition // pointers should be same, because it is referened from mesh hypothesis partition
list <const SMESHDS_Hypothesis*>::const_iterator hypIt = _hypotheses.begin(); list <const SMESHDS_Hypothesis*>::const_iterator hypIt = _hypotheses.begin();
list <const SMESHDS_Hypothesis*>::const_iterator otheEndIt = theOther->_hypotheses.end(); list <const SMESHDS_Hypothesis*>::const_iterator otheEndIt = theOther->_hypotheses.end();
@ -6103,7 +6107,7 @@ class SMESH_DimHyp
if ( find( theOther->_hypotheses.begin(), otheEndIt, *hypIt ) != otheEndIt ) if ( find( theOther->_hypotheses.begin(), otheEndIt, *hypIt ) != otheEndIt )
nbSame++; nbSame++;
// the submeshes are concurrent if their algorithms has different parameters // the submeshes are concurrent if their algorithms has different parameters
return nbSame != (int)theOther->_hypotheses.size() - 1; return nbSame != theOther->_hypotheses.size() - 1;
} }
// Return true if algorithm of this SMESH_DimHyp is used if no // Return true if algorithm of this SMESH_DimHyp is used if no