X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROData%2FHYDROData_SplitToZonesTool.cxx;h=0990ef4c1ddfee9d748ebd502834ff7e3c843b93;hb=e75504ed446bb0bd2f5bf5649c787fe61adc9710;hp=dfd60b75e1264dfa2e594ad32dcae2d2f7d03dc6;hpb=84f8b4a57d3cdad820bc1333a5066699cd1c8ae3;p=modules%2Fhydro.git diff --git a/src/HYDROData/HYDROData_SplitToZonesTool.cxx b/src/HYDROData/HYDROData_SplitToZonesTool.cxx index dfd60b75..0990ef4c 100644 --- a/src/HYDROData/HYDROData_SplitToZonesTool.cxx +++ b/src/HYDROData/HYDROData_SplitToZonesTool.cxx @@ -1,7 +1,7 @@ #include "HYDROData_SplitToZonesTool.h" -#include "HYDROData_Object.h" +#include "HYDROData_PolylineXY.h" #include #include @@ -35,7 +35,8 @@ TopoDS_Face HYDROData_SplitToZonesTool::SplitData::Face() const } HYDROData_SplitToZonesTool::SplitDataList -HYDROData_SplitToZonesTool::SplitToZones( const HYDROData_SequenceOfObjects& theObjectList ) +HYDROData_SplitToZonesTool::SplitToZones( const HYDROData_SequenceOfObjects& theObjectList, + const Handle(HYDROData_PolylineXY)& thePolyline ) { SplitDataList anOutputSplitDataList; @@ -47,8 +48,21 @@ HYDROData_SplitToZonesTool::SplitToZones( const HYDROData_SequenceOfObjects& the Handle(HYDROData_Object)::DownCast( theObjectList.Value( anIndex ) ); if( !aGeomObj.IsNull() ) { - SplitData aSplitData( aGeomObj->GetTopShape(), aGeomObj->GetName() ); - anInputSplitDataList.append( aSplitData ); + TopoDS_Shape aShape = aGeomObj->GetTopShape(); + if ( !aShape.IsNull() && aShape.ShapeType() == TopAbs_COMPOUND ) { + // Create split data for each face contained in the compound + TopExp_Explorer anExp( aShape, TopAbs_FACE ); + for ( ; anExp.More(); anExp.Next() ) { + TopoDS_Face aFace = TopoDS::Face( anExp.Current() ); + if ( !aFace.IsNull() ) { + SplitData aSplitData( aFace, aGeomObj->GetName() ); + anInputSplitDataList.append( aSplitData ); + } + } + } else { + SplitData aSplitData( aShape, aGeomObj->GetName() ); + anInputSplitDataList.append( aSplitData ); + } } } @@ -90,10 +104,9 @@ HYDROData_SplitToZonesTool::SplitToZones( const HYDROData_SequenceOfObjects& the } // Step 2. Take into account the boundary polyline. - /* if( !thePolyline.IsNull() ) { - TopoDS_Wire aWire = TopoDS::Wire( thePolyline->GetTopShape() ); + TopoDS_Wire aWire = TopoDS::Wire( thePolyline->GetShape() ); if( !aWire.IsNull() ) { BRepBuilderAPI_MakeFace aMakeFace( aWire, Standard_True ); @@ -117,7 +130,6 @@ HYDROData_SplitToZonesTool::SplitToZones( const HYDROData_SequenceOfObjects& the } } } - */ // Step 3. Extract the separate regions. SplitDataList anExtractedSplitDataList;