SMESH_subMesh *subMesh = GetSubMesh(aSubShape);
SMESHDS_SubMesh *subMeshDS = subMesh->GetSubMeshDS();
- if ( subMeshDS && subMeshDS->IsComplexSubmesh() )
+ if ( subMeshDS && subMeshDS->IsComplexSubmesh() ) // group of sub-shapes and maybe of not sub-
{
+ MESSAGE("AddHypothesis() to complex submesh");
// return the worst but not fatal state of all group memebers
SMESH_Hypothesis::Hypothesis_Status aBestRet, aWorstNotFatal, ret;
aBestRet = SMESH_Hypothesis::HYP_BAD_DIM;
aWorstNotFatal = SMESH_Hypothesis::HYP_OK;
for ( TopoDS_Iterator itS ( aSubShape ); itS.More(); itS.Next())
{
+ if ( !GetMeshDS()->ShapeToIndex( itS.Value() ))
+ continue; // not sub-shape
ret = AddHypothesis( itS.Value(), anHypId );
if ( !SMESH_Hypothesis::IsStatusFatal( ret ) && ret > aWorstNotFatal )
aWorstNotFatal = ret;
aWorstNotFatal = SMESH_Hypothesis::HYP_OK;
for ( TopoDS_Iterator itS ( aSubShape ); itS.More(); itS.Next())
{
+ if ( !GetMeshDS()->ShapeToIndex( itS.Value() ))
+ continue; // not sub-shape
ret = RemoveHypothesis( itS.Value(), anHypId );
if ( !SMESH_Hypothesis::IsStatusFatal( ret ) && ret > aWorstNotFatal )
aWorstNotFatal = ret;
//=============================================================================
const SMESH_Hypothesis* SMESH_Mesh::IsLocal1DHypothesis (const TopoDS_Shape& theEdge)
{
- SMESH_HypoFilter filter( SMESH_HypoFilter::HasDim( 1 ));
- filter.AndNot( SMESH_HypoFilter::IsAlgo() );
- filter.AndNot( SMESH_HypoFilter::IsGlobal( GetMeshDS()->ShapeToMesh() ));
+ SMESH_HypoFilter hypo ( SMESH_HypoFilter::HasDim( 1 ));
+ hypo.AndNot( hypo.IsAlgo() ).AndNot( hypo.IsAssignedTo( GetMeshDS()->ShapeToMesh() ));
- return GetHypothesis( theEdge, filter, true );
+ return GetHypothesis( theEdge, hypo, true );
}
//=============================================================================
save << "===========================================================================" << endl;
return save;
}
+
+//=======================================================================
+//function : GetElementType
+//purpose : Returns type of mesh element with certain id
+//=======================================================================
+SMDSAbs_ElementType SMESH_Mesh::GetElementType( const int id, const bool iselem )
+{
+ return _myMeshDS->GetElementType( id, iselem );
+}