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() )