From 4ea8012155778c7fc09babc819bab6cc2c6afd1e Mon Sep 17 00:00:00 2001 From: eap Date: Wed, 21 Jul 2010 05:45:17 +0000 Subject: [PATCH] 0020920: EDF 1478 SMESH: Conversion linear to quadratic fails (BLSURF Mesh) * fix FixQuadraticElements(): ignore internal chains --- src/SMESH/SMESH_MesherHelper.cxx | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/SMESH/SMESH_MesherHelper.cxx b/src/SMESH/SMESH_MesherHelper.cxx index e29608e67..9a823137a 100644 --- a/src/SMESH/SMESH_MesherHelper.cxx +++ b/src/SMESH/SMESH_MesherHelper.cxx @@ -1393,7 +1393,7 @@ namespace { // Structures used by FixQuadraticElements() //======================================================================= #define __DMP__(txt) \ - //cout << txt + // cout << txt #define MSG(txt) __DMP__(txt<IsBoundary() ) @@ -2461,7 +2462,12 @@ void SMESH_MesherHelper::FixQuadraticElements(bool volumeOnly) TChain& chain = chains[iC]; if ( chain.empty() ) continue; if ( chain.front()->IsStraight() && chain.back()->IsStraight() ) { - MSG("3D straight"); + MSG("3D straight - ignore"); + continue; + } + if ( chain.front()->MediumPos() > bndPos || + chain.back()->MediumPos() > bndPos ) { + MSG("Internal chain - ignore"); continue; } // mesure chain length and compute link position along the chain @@ -2513,7 +2519,7 @@ void SMESH_MesherHelper::FixQuadraticElements(bool volumeOnly) } if ( move0.SquareMagnitude() < straightTol2 && move1.SquareMagnitude() < straightTol2 ) { - MSG("2D straight"); + MSG("2D straight - ignore"); continue; // straight - no need to move nodes of internal links } } @@ -2565,7 +2571,8 @@ void SMESH_MesherHelper::FixQuadraticElements(bool volumeOnly) { gp_XY uv0 = GetNodeUV( face, (*link0)->_mediumNode, 0, &checkUV); gp_XY uv2 = GetNodeUV( face, (*link2)->_mediumNode, 0, &checkUV); - MSG( "uv0: "<