From 2eeec022d20c183ba88af039789047a9530efa4d Mon Sep 17 00:00:00 2001 From: eap Date: Mon, 25 Aug 2014 20:41:02 +0400 Subject: [PATCH] IPAL52479: Mixed linear/quadratic mesh is created --- src/SMESH/SMESH_MesherHelper.cxx | 16 ++++++++++++---- src/SMESH/SMESH_MesherHelper.hxx | 6 +++--- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/SMESH/SMESH_MesherHelper.cxx b/src/SMESH/SMESH_MesherHelper.cxx index bdd358451..31f2d88b7 100644 --- a/src/SMESH/SMESH_MesherHelper.cxx +++ b/src/SMESH/SMESH_MesherHelper.cxx @@ -380,10 +380,13 @@ void SMESH_MesherHelper::AddTLinkNode(const SMDS_MeshNode* n1, */ //================================================================================ -void SMESH_MesherHelper::AddTLinks(const SMDS_MeshEdge* edge) +bool SMESH_MesherHelper::AddTLinks(const SMDS_MeshEdge* edge) { - if ( edge->IsQuadratic() ) + if ( edge && edge->IsQuadratic() ) AddTLinkNode(edge->GetNode(0), edge->GetNode(1), edge->GetNode(2)); + else + return false; + return true; } //================================================================================ @@ -392,8 +395,9 @@ void SMESH_MesherHelper::AddTLinks(const SMDS_MeshEdge* edge) */ //================================================================================ -void SMESH_MesherHelper::AddTLinks(const SMDS_MeshFace* f) +bool SMESH_MesherHelper::AddTLinks(const SMDS_MeshFace* f) { + bool isQuad = true; if ( !f->IsPoly() ) switch ( f->NbNodes() ) { case 7: @@ -417,7 +421,9 @@ void SMESH_MesherHelper::AddTLinks(const SMDS_MeshFace* f) AddTLinkNode(f->GetNode(2),f->GetNode(3),f->GetNode(6)); AddTLinkNode(f->GetNode(3),f->GetNode(0),f->GetNode(7)); break; default:; + isQuad = false; } + return isQuad; } //================================================================================ @@ -426,7 +432,7 @@ void SMESH_MesherHelper::AddTLinks(const SMDS_MeshFace* f) */ //================================================================================ -void SMESH_MesherHelper::AddTLinks(const SMDS_MeshVolume* volume) +bool SMESH_MesherHelper::AddTLinks(const SMDS_MeshVolume* volume) { if ( volume->IsQuadratic() ) { @@ -460,7 +466,9 @@ void SMESH_MesherHelper::AddTLinks(const SMDS_MeshVolume* volume) nFCenter )); } } + return true; } + return false; } //================================================================================ diff --git a/src/SMESH/SMESH_MesherHelper.hxx b/src/SMESH/SMESH_MesherHelper.hxx index 51ea719de..1540751f5 100644 --- a/src/SMESH/SMESH_MesherHelper.hxx +++ b/src/SMESH/SMESH_MesherHelper.hxx @@ -637,9 +637,9 @@ public: void AddTLinkNodeMap(const TLinkNodeMap& aMap) { myTLinkNodeMap.insert(aMap.begin(), aMap.end()); } - void AddTLinks(const SMDS_MeshEdge* edge); - void AddTLinks(const SMDS_MeshFace* face); - void AddTLinks(const SMDS_MeshVolume* vol); + bool AddTLinks(const SMDS_MeshEdge* edge); + bool AddTLinks(const SMDS_MeshFace* face); + bool AddTLinks(const SMDS_MeshVolume* vol); /** * Returns myTLinkNodeMap -- 2.39.2