mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2025-01-30 19:50:32 +05:00
0021843: [CEA 658] Segmentation fault when using GHS3D on a 2D group
Avoid "1D global algo is missing" error if it's not really missing
This commit is contained in:
parent
ab9945d2b0
commit
f8658faa90
@ -646,7 +646,8 @@ static bool checkMissing(SMESH_Gen* aGen,
|
|||||||
set<SMESH_subMesh*>& aCheckedMap,
|
set<SMESH_subMesh*>& aCheckedMap,
|
||||||
list< SMESH_Gen::TAlgoStateError > & theErrors)
|
list< SMESH_Gen::TAlgoStateError > & theErrors)
|
||||||
{
|
{
|
||||||
if ( aSubMesh->GetSubShape().ShapeType() == TopAbs_VERTEX)
|
if ( aSubMesh->GetSubShape().ShapeType() == TopAbs_VERTEX ||
|
||||||
|
aCheckedMap.count( aSubMesh ))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
//MESSAGE("=====checkMissing");
|
//MESSAGE("=====checkMissing");
|
||||||
@ -702,8 +703,15 @@ static bool checkMissing(SMESH_Gen* aGen,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case SMESH_subMesh::HYP_OK:
|
case SMESH_subMesh::HYP_OK:
|
||||||
algo = aGen->GetAlgo( aMesh, aSubMesh->GetSubShape() );
|
algo = aSubMesh->GetAlgo();
|
||||||
ret = true;
|
ret = true;
|
||||||
|
if (!algo->NeedDiscreteBoundary())
|
||||||
|
{
|
||||||
|
SMESH_subMeshIteratorPtr itsub = aSubMesh->getDependsOnIterator( /*includeSelf=*/false,
|
||||||
|
/*complexShapeFirst=*/false);
|
||||||
|
while ( itsub->more() )
|
||||||
|
aCheckedMap.insert( itsub->next() );
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
default: ASSERT(0);
|
default: ASSERT(0);
|
||||||
}
|
}
|
||||||
@ -722,7 +730,6 @@ static bool checkMissing(SMESH_Gen* aGen,
|
|||||||
{
|
{
|
||||||
// sub-meshes should not be checked further more
|
// sub-meshes should not be checked further more
|
||||||
SMESH_subMesh* sm = itsub->next();
|
SMESH_subMesh* sm = itsub->next();
|
||||||
aCheckedMap.insert( sm );
|
|
||||||
|
|
||||||
if (isTopLocalAlgo)
|
if (isTopLocalAlgo)
|
||||||
{
|
{
|
||||||
@ -736,6 +743,7 @@ static bool checkMissing(SMESH_Gen* aGen,
|
|||||||
checkNoAlgo2 = false;
|
checkNoAlgo2 = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
aCheckedMap.insert( sm );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
@ -769,9 +777,9 @@ bool SMESH_Gen::GetAlgoState(SMESH_Mesh& theMesh,
|
|||||||
bool ret = true;
|
bool ret = true;
|
||||||
bool hasAlgo = false;
|
bool hasAlgo = false;
|
||||||
|
|
||||||
SMESH_subMesh* sm = theMesh.GetSubMesh(theShape);
|
SMESH_subMesh* sm = theMesh.GetSubMesh(theShape);
|
||||||
const SMESHDS_Mesh* meshDS = theMesh.GetMeshDS();
|
const SMESHDS_Mesh* meshDS = theMesh.GetMeshDS();
|
||||||
TopoDS_Shape mainShape = meshDS->ShapeToMesh();
|
TopoDS_Shape mainShape = meshDS->ShapeToMesh();
|
||||||
|
|
||||||
// -----------------
|
// -----------------
|
||||||
// get global algos
|
// get global algos
|
||||||
|
Loading…
Reference in New Issue
Block a user