0021893: EDF 2133 SMESH : Improvement of 3D extrusion algorithm

Use SMESH_MesherHelper::IsSameElemGeometry()
This commit is contained in:
eap 2013-01-28 08:29:36 +00:00
parent c8d7fe2beb
commit 7643656ed3

View File

@ -295,7 +295,7 @@ namespace
//=============================================================================
bool StdMeshers_Hexa_3D::Compute(SMESH_Mesh & aMesh,
const TopoDS_Shape & aShape)// throw(SALOME_Exception)
const TopoDS_Shape & aShape)
{
// PAL14921. Enable catching std::bad_alloc and Standard_OutOfMemory outside
//Unexpect aCatch(SalomeException);
@ -371,23 +371,15 @@ bool StdMeshers_Hexa_3D::Compute(SMESH_Mesh & aMesh,
for ( int i = 0; i < 6; ++i )
{
const TopoDS_Face& sideF = aCubeSide[i]._quad->face;
if ( SMESHDS_SubMesh* smDS = meshDS->MeshElements( sideF ))
{
bool isAllQuad = true;
SMDS_ElemIteratorPtr fIt = smDS->GetElements();
while ( fIt->more() && isAllQuad )
{
const SMDS_MeshElement* f = fIt->next();
isAllQuad = ( f->NbCornerNodes() == 4 );
}
if ( !isAllQuad )
if ( !SMESH_MesherHelper::IsSameElemGeometry( meshDS->MeshElements( sideF ),
SMDSGeom_QUADRANGLE,
/*nullSubMeshRes=*/false ))
{
SMESH_ComputeErrorPtr err = ComputePentahedralMesh(aMesh, aShape, proxymesh.get());
return error( err );
}
}
}
}
// Check presence of regular grid mesh on FACEs of the cube
// ------------------------------------------------------------