X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FStdMeshers%2FStdMeshers_Cartesian_3D.cxx;h=3cd23ff35d0a619006f38ac457062b5b1104f928;hp=f7516247a9982b25f97d0a02dfdf7c82a33515d8;hb=1eb7dc9cd0312d0c9a46d0342e026cd17dd01a03;hpb=9c53b386de848f2e2666762f1b59fb02e8a7c0aa diff --git a/src/StdMeshers/StdMeshers_Cartesian_3D.cxx b/src/StdMeshers/StdMeshers_Cartesian_3D.cxx index f7516247a..3cd23ff35 100644 --- a/src/StdMeshers/StdMeshers_Cartesian_3D.cxx +++ b/src/StdMeshers/StdMeshers_Cartesian_3D.cxx @@ -2010,10 +2010,12 @@ namespace while ( nbFreeLinks > 0 ) { if ( iPolygon == _polygons.size() ) + { _polygons.resize( _polygons.size() + 1 ); + _polygons[ iPolygon ]._polyLinks.reserve( 20 ); + _polygons[ iPolygon ]._links.reserve( 20 ); + } _Face& polygon = _polygons[ iPolygon ]; - polygon._polyLinks.reserve( 20 ); - polygon._links.reserve( 20 ); _OrientedLink* curLink = 0; _Node* curNode; @@ -2274,11 +2276,6 @@ namespace _polygons[ iPolygon ]._polyLinks.clear(); break; } - if ( freeLinks.back() == &polygon._links.back() ) - { - freeLinks.pop_back(); - --nbFreeLinks; - } _polygons.pop_back(); usedFaceIDs.erase( curFace ); continue; @@ -3024,10 +3021,10 @@ namespace list< int > nbEdges; int nbW = SMESH_Block::GetOrderedEdges (face, edges, nbEdges); if ( nbW > 1 ) { - // select a WIRE + // select a WIRE - remove EDGEs of irrelevant WIREs from edges list< TopoDS_Edge >::iterator e = edges.begin(), eEnd = e; list< int >::iterator nE = nbEdges.begin(); - for ( ; nbW ; ++nE, --nbW ) + for ( ; nbW > 0; ++nE, --nbW ) { std::advance( eEnd, *nE ); for ( ; e != eEnd; ++e ) @@ -3040,13 +3037,14 @@ namespace ( std::find( &nShapeIds[0], nShapeIdsEnd, id ) != nShapeIdsEnd )) { edges.erase( eEnd, edges.end() ); // remove rest wires - e = eEnd; + e = eEnd = edges.end(); + --e; nbW = 0; break; } } if ( nbW > 0 ) - edges.erase( edges.begin(), eEnd ); // remove a current wire + edges.erase( edges.begin(), eEnd ); // remove a current irrelevant wire } } // rotate edges to have the first one at least partially out of the hexa