X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FStdMeshers%2FStdMeshers_Hexa_3D.cxx;h=33efea5e7243d429415f555ac0e3e01b818521f5;hp=80cd6caeb1973e8e309f56e9a914a13586655980;hb=85b1cfc1f07d0b93d88803c6c0ccadf8f3349719;hpb=146d142e7b11fee8e085906f7a5aae457edd8757 diff --git a/src/StdMeshers/StdMeshers_Hexa_3D.cxx b/src/StdMeshers/StdMeshers_Hexa_3D.cxx index 80cd6caeb..33efea5e7 100644 --- a/src/StdMeshers/StdMeshers_Hexa_3D.cxx +++ b/src/StdMeshers/StdMeshers_Hexa_3D.cxx @@ -45,13 +45,11 @@ #include "SMDS_VolumeOfNodes.hxx" #include +#include #include -#include #include -#include - -#include -#include +#include +#include #include #include "utilities.h" @@ -118,12 +116,15 @@ bool StdMeshers_Hexa_3D::CheckHypothesis SMESH_Hypothesis::Hypothesis_Status& aStatus) { // check nb of faces in the shape +/* PAL16229 aStatus = SMESH_Hypothesis::HYP_BAD_GEOMETRY; int nbFaces = 0; for (TopExp_Explorer exp(aShape, TopAbs_FACE); exp.More(); exp.Next()) if ( ++nbFaces > 6 ) - return false; - + break; + if ( nbFaces != 6 ) + return false; +*/ aStatus = SMESH_Hypothesis::HYP_OK; return true; } @@ -174,9 +175,10 @@ static bool findIJ (const SMDS_MeshNode* node, const FaceQuadStruct * quad, int& //============================================================================= bool StdMeshers_Hexa_3D::Compute(SMESH_Mesh & aMesh, - const TopoDS_Shape & aShape) throw(SALOME_Exception) + const TopoDS_Shape & aShape)// throw(SALOME_Exception) { - Unexpect aCatch(SalomeException); + // PAL14921. Enable catching std::bad_alloc and Standard_OutOfMemory outside + //Unexpect aCatch(SalomeException); MESSAGE("StdMeshers_Hexa_3D::Compute"); SMESHDS_Mesh * meshDS = aMesh.GetMeshDS(); @@ -190,7 +192,7 @@ bool StdMeshers_Hexa_3D::Compute(SMESH_Mesh & aMesh, meshFaces.push_back(aSubMesh); } if (meshFaces.size() != 6) - return error(COMPERR_BAD_SHAPE, TComm(meshFaces.size())<<" instead of 6 faces in block"); + return error(COMPERR_BAD_SHAPE, TComm(meshFaces.size())<<" instead of 6 faces in a block"); // 0.2 - is each face meshed with Quadrangle_2D? (so, with a wire of 4 edges) @@ -251,6 +253,9 @@ bool StdMeshers_Hexa_3D::Compute(SMESH_Mesh & aMesh, ASSERT(quadAlgo); try { aQuads[i] = quadAlgo->CheckAnd2Dcompute(aMesh, aFace, _quadraticMesh); + if(!aQuads[i]) { + return error( quadAlgo->GetComputeError()); + } } catch(SALOME_Exception & S_ex) { return ClearAndReturn( aQuads, error(COMPERR_SLM_EXCEPTION,TComm(S_ex.what()) <<