X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROData%2FHYDROData_ShapesTool.cxx;h=d11b369168ddfac2bb90a472f71886eef06a5c13;hb=81c9f5cdf82909d0aebd2c491c50fa7516cc80b7;hp=9bf73f269873be3ba5947a497cfdacd4db6bf135;hpb=f9b8b591033deed2dbf24dceaa860faf1d323749;p=modules%2Fhydro.git diff --git a/src/HYDROData/HYDROData_ShapesTool.cxx b/src/HYDROData/HYDROData_ShapesTool.cxx index 9bf73f26..d11b3691 100644 --- a/src/HYDROData/HYDROData_ShapesTool.cxx +++ b/src/HYDROData/HYDROData_ShapesTool.cxx @@ -16,6 +16,8 @@ #include #include +#include +#include #include @@ -79,6 +81,29 @@ bool HYDROData_ShapesTool::IsVerticesEquals( const TopoDS_Vertex& theFirstVert, return aFirstPoint.IsEqual( aSecondPoint, Precision::Confusion() ); } +TopoDS_Shape HYDROData_ShapesTool::Translated( const TopoDS_Shape& theShape, + const double theDx, + const double theDy, + const double theDz ) +{ + TopoDS_Shape aTranslatedShape; + if ( theShape.IsNull() ) + return aTranslatedShape; + + gp_Vec aVec( theDx, theDy, theDz ); + + gp_Trsf aTrsf; + aTrsf.SetTranslation( aVec ); + + TopLoc_Location aLocOrig = theShape.Location(); + gp_Trsf aTrsfOrig = aLocOrig.Transformation(); + + TopLoc_Location aLocRes( aTrsf * aTrsfOrig ); + aTranslatedShape = theShape.Located( aLocRes ); + + return aTranslatedShape; +} + bool HYDROData_ShapesTool::IsEdgesEquals( const TopoDS_Edge& theFirstEdge, const TopoDS_Edge& theSecondEdge, const bool theIs2D ) @@ -90,4 +115,66 @@ bool HYDROData_ShapesTool::IsEdgesEquals( const TopoDS_Edge& theFirstEdge, IsVerticesEquals( aFLastVert, aSLastVert, theIs2D ); } +void HYDROData_ShapesTool::AddShapes( TopTools_SequenceOfShape& theShapes, + const TopTools_SequenceOfShape& theShapesToAdd ) +{ + for ( int i = 1, n = theShapesToAdd.Length(); i <= n; ++i ) + { + const TopoDS_Shape& aShape = theShapesToAdd.Value( i ); + theShapes.Append( aShape ); + } +} + +void HYDROData_ShapesTool::AddShapes( TopTools_SequenceOfShape& theShapes, + const TopTools_ListOfShape& theShapesToAdd ) +{ + TopTools_ListIteratorOfListOfShape anIter( theShapesToAdd ); + for ( ; anIter.More(); anIter.Next() ) + { + const TopoDS_Shape& aShape = anIter.Value(); + theShapes.Append( aShape ); + } +} + +void HYDROData_ShapesTool::AddShapes( TopTools_ListOfShape& theShapes, + const TopTools_SequenceOfShape& theShapesToAdd ) +{ + for ( int i = 1, n = theShapesToAdd.Length(); i <= n; ++i ) + { + const TopoDS_Shape& aShape = theShapesToAdd.Value( i ); + theShapes.Append( aShape ); + } +} +void HYDROData_ShapesTool::AddShapes( TopTools_ListOfShape& theShapes, + const TopTools_ListOfShape& theShapesToAdd ) +{ + TopTools_ListIteratorOfListOfShape anIter( theShapesToAdd ); + for ( ; anIter.More(); anIter.Next() ) + { + const TopoDS_Shape& aShape = anIter.Value(); + theShapes.Append( aShape ); + } +} + +void HYDROData_ShapesTool::DumpShapeSubShapes( std::ostream& theStream, + const char* theTitle, + const TopoDS_Shape& theShape, + const TopAbs_ShapeEnum& theExpType ) +{ + TopTools_SequenceOfShape aShapeSubShapes; + ExploreShapeToShapes( theShape, theExpType, aShapeSubShapes ); + + theStream << theTitle << "\n"; + DumpSequenceOfShapes( theStream, aShapeSubShapes ); +} + +void HYDROData_ShapesTool::DumpSequenceOfShapes( std::ostream& theStream, + const TopTools_SequenceOfShape& theShapes ) +{ + for ( int i = 1, n = theShapes.Length(); i <= n; ++i ) + { + const TopoDS_Shape& aShape = theShapes.Value( i ); + theStream << "Shape " << i << " : " << aShape.TShape() << "\n"; + } +} \ No newline at end of file