X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FStdMeshers%2FStdMeshers_CompositeHexa_3D.cxx;h=0fac6d13120d684dc19757f7683424def91ab8f6;hb=e1fe293459cc2d4609337e5bf89d12353847c113;hp=11a3cc57ad510770b043a8c13b3690cd43b38d70;hpb=bd4e115a78b52e3fbc016e5e30bb0e19b2a9e7d6;p=modules%2Fsmesh.git diff --git a/src/StdMeshers/StdMeshers_CompositeHexa_3D.cxx b/src/StdMeshers/StdMeshers_CompositeHexa_3D.cxx index 11a3cc57a..0fac6d131 100644 --- a/src/StdMeshers/StdMeshers_CompositeHexa_3D.cxx +++ b/src/StdMeshers/StdMeshers_CompositeHexa_3D.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2013 CEA/DEN, EDF R&D, OPEN CASCADE // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -58,17 +58,15 @@ #ifdef _DEBUG_ +// #define DEB_FACES +// #define DEB_GRID +// #define DUMP_VERT(msg,V) \ +// { TopoDS_Vertex v = V; gp_Pnt p = BRep_Tool::Pnt(v); \ +// cout << msg << "( "<< p.X()<<", "< edges; list< int > nbEdgesInWire; - int nbWire = SMESH_Block::GetOrderedEdges (myFace, V, edges, nbEdgesInWire); + int nbWire = SMESH_Block::GetOrderedEdges (myFace, edges, nbEdgesInWire); if ( nbWire != 1 ) return false; @@ -715,7 +712,7 @@ bool _QuadFaceGrid::AddContinuousFace( const _QuadFaceGrid& other ) const _FaceSide& otherSide = other.GetSide( i ); int iMyCommon; if ( mySides.Contain( otherSide, &iMyCommon ) ) { - // check if normals of two faces are collinear at all vertices of a otherSide + // check if normals of two faces are collinear at all vertices of an otherSide const double angleTol = M_PI / 180. / 2.; int iV, nbV = otherSide.NbVertices(), nbCollinear = 0; for ( iV = 0; iV < nbV; ++iV ) @@ -740,15 +737,20 @@ bool _QuadFaceGrid::AddContinuousFace( const _QuadFaceGrid& other ) myChildren.push_back( *this ); myFace.Nullify(); } + + // orient new children equally + int otherBottomIndex = ( 4 + i - iMyCommon + 2 ) % 4; if ( other.IsComplex() ) - for ( TChildIterator children = other.GetChildren(); children.more(); ) + for ( TChildIterator children = other.GetChildren(); children.more(); ) { myChildren.push_back( children.next() ); - else + myChildren.back().SetBottomSide( myChildren.back().GetSide( otherBottomIndex )); + } + else { myChildren.push_back( other ); + myChildren.back().SetBottomSide( myChildren.back().GetSide( otherBottomIndex )); + } myLeftBottomChild = 0; - //int otherBottomIndex = ( 4 + i - iMyCommon + 2 ) % 4; - //myChildren.back().SetBottomSide( other.GetSide( otherBottomIndex )); // collect vertices in mySides if ( other.IsComplex() )