From e9bb13572e9dce60617d6b21bbd19e39ae879500 Mon Sep 17 00:00:00 2001 From: isn Date: Thu, 19 Nov 2015 14:41:06 +0300 Subject: [PATCH] refs #725 --- src/HYDROData/HYDROData_LandCoverMap.cxx | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/src/HYDROData/HYDROData_LandCoverMap.cxx b/src/HYDROData/HYDROData_LandCoverMap.cxx index 114fdf86..ac6a787c 100644 --- a/src/HYDROData/HYDROData_LandCoverMap.cxx +++ b/src/HYDROData/HYDROData_LandCoverMap.cxx @@ -592,16 +592,23 @@ bool HYDROData_LandCoverMap::Split( const TopoDS_Shape& theShape ) bool HYDROData_LandCoverMap::Merge( const TopTools_ListOfShape& theFaces, const QString& theType ) { // 1. to fuse the faces into the new face - TopoDS_Shape aMergedFace = MergeFaces( theFaces, true ); - if( !aMergedFace.IsNull() && aMergedFace.ShapeType()==TopAbs_FACE ) - { + TopoDS_Shape aMergedFace = MergeFaces( theFaces, true ); + bool aStat = true; + if( !aMergedFace.IsNull() ) + { // 2. to remove the merged faces from the current map Remove( theFaces ); - - // 3. to add the face into the map - return LocalPartition( TopoDS::Face( aMergedFace ), theType ); + TopExp_Explorer Exp(aMergedFace, TopAbs_FACE); + for( ; Exp.More(); Exp.Next() ) + { + const TopoDS_Face& aCF = TopoDS::Face(Exp.Current()); + // 3. to add the face into the map + aStat = aStat && LocalPartition( aCF, theType ); + } } - return false; + else + aStat = false; + return aStat; } /** @@ -834,9 +841,6 @@ bool HYDROData_LandCoverMap::LocalPartition( const TopoDS_Shape& theNewShape, co QString aSType = anIt.StricklerType(); //std::cout << "from " << anIt.Face() << ": " << anIt.StricklerType() << std::endl; TopTools_ListOfShape aModified = aBuilder.Modified( anIt.Face() ); - - // - TopTools_ListOfShape aGen = aBuilder.Generated( anIt.Face() ); // if( aModified.Extent() == 0 ) aModified.Append( anIt.Face() ); -- 2.39.2