From: isn Date: Tue, 20 Oct 2015 08:48:30 +0000 (+0300) Subject: LCM StoreLandCovers() changes X-Git-Tag: v1.5~85 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=cd8f42ca3707a5f4d86edd854fb9b527d4213b3a;p=modules%2Fhydro.git LCM StoreLandCovers() changes --- 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)); } /**