From cd8f42ca3707a5f4d86edd854fb9b527d4213b3a Mon Sep 17 00:00:00 2001 From: isn Date: Tue, 20 Oct 2015 11:48:30 +0300 Subject: [PATCH] LCM StoreLandCovers() changes --- src/HYDROData/HYDROData_LandCoverMap.cxx | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/HYDROData/HYDROData_LandCoverMap.cxx b/src/HYDROData/HYDROData_LandCoverMap.cxx index df81386e..d7703a87 100644 --- a/src/HYDROData/HYDROData_LandCoverMap.cxx +++ b/src/HYDROData/HYDROData_LandCoverMap.cxx @@ -525,7 +525,11 @@ TopoDS_Shape HYDROData_LandCoverMap::MergeFaces( const TopTools_ListOfShape& the BOPCol_ListOfShape aLC; anIt.Initialize(theFaces); for( ; anIt.More(); anIt.Next() ) + { + if (anIt.Value().ShapeType() != TopAbs_FACE) + return TopoDS_Shape(); aLC.Append( anIt.Value() ); + } BOPAlgo_PaveFiller aPF; aPF.SetArguments( aLC ); @@ -700,9 +704,11 @@ bool HYDROData_LandCoverMap::LocalPartition( const TopoDS_Shape& theNewShape, co */ void HYDROData_LandCoverMap::StoreLandCovers( const HYDROData_MapOfFaceToStricklerType& theMap ) { - TopoDS_Compound aCompound; - BRep_Builder aCompoundBuilder; - aCompoundBuilder.MakeCompound( aCompound ); + TopoDS_Shell aShell; + BRep_Builder aShellBuilder; + aShellBuilder.MakeShell( aShell ); + aShell.Closed( Standard_False ); + TopTools_ListOfShape aListOfFaces; int n = theMap.Size(); Handle( TDataStd_ExtStringArray ) aTypes = @@ -711,12 +717,16 @@ void HYDROData_LandCoverMap::StoreLandCovers( const HYDROData_MapOfFaceToStrickl for( int i=0; aNFIt.More(); aNFIt.Next(), i++ ) { TopoDS_Face aFace = aNFIt.Key(); + if (aFace.IsNull()) + continue; QString aType = aNFIt.Value(); - aCompoundBuilder.Add( aCompound, aFace ); + aShellBuilder.Add( aShell, aFace ); + aListOfFaces.Append(aFace); aTypes->SetValue( i, HYDROData_Tool::toExtString( aType ) ); } + TopoDS_Shape aMF = MergeFaces(aListOfFaces, false); - SetShape( aCompound ); + SetShape( aListOfFaces.Extent() < 2 ? aShell : MergeFaces(aListOfFaces, false)); } /** -- 2.39.2