X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROData%2FHYDROData_DTM.h;h=4835cef14578d30dc088a1b6ebe8acdbfca3a4d6;hb=89c7928d864f9be4f35aaa7409896c264849f273;hp=6892c66bd49f0a0c64c54bcc83e9ec04b1160e5d;hpb=fe0f96c33245347308c893b2f1870113c9df1b87;p=modules%2Fhydro.git diff --git a/src/HYDROData/HYDROData_DTM.h b/src/HYDROData/HYDROData_DTM.h index 6892c66b..4835cef1 100644 --- a/src/HYDROData/HYDROData_DTM.h +++ b/src/HYDROData/HYDROData_DTM.h @@ -21,6 +21,7 @@ #include "HYDROData_Bathymetry.h" #include +#include #include class Handle_HYDROData_Profile; @@ -30,7 +31,10 @@ class gp_Pnt; class gp_Vec2d; class TopoDS_Edge; class TopoDS_Wire; +class TopoDS_Face; class TopoDS_Compound; +class Handle_Geom_Plane; +class TopTools_IndexedMapOfOrientedShape; DEFINE_STANDARD_HANDLE( HYDROData_DTM, HYDROData_Bathymetry ) @@ -49,7 +53,12 @@ protected: DataTag_Profiles, DataTag_DDZ, DataTag_SpatialStep, - DataTag_DTM_Shape, + DataTag_LeftBankShape, + DataTag_RightBankShape, + DataTag_InletShape, + DataTag_OutletShape, + DataTag_3DShape, + DataTag_2DShape }; public: @@ -115,6 +124,7 @@ protected: double theXCurv, double theMinZ, double theMaxZ, double theDDZ, CurveUZ& theMidPointCurve, CurveUZ& theWidthCurve, + int& intersection_nb, double theTolerance = 1E-6 ); static void CurveTo3D( const Handle_Geom2d_BSplineCurve& theHydraulicAxis, @@ -131,19 +141,67 @@ protected: double theXCurvA, const Handle_HYDROData_Profile& theProfileB, double theXCurvB, - double theDDZ, int theNbSteps, bool isAddSecond ); + double theDDZ, int theNbSteps, bool isAddSecond, + int& inter_nb_1, int& inter_nb_2 ); static AltitudePoints Interpolate( const std::vector& theProfiles, double theDDZ, double theSpatialStep, AltitudePoints& theLeft, AltitudePoints& theRight, - std::vector& theMainProfiles ); + std::vector& theMainProfiles, + std::set& invalInd ); static void PointToWire(const AltitudePoints& pnts, TopoDS_Wire& W ); - static TopoDS_Compound Create3DShape(const AltitudePoints& left, - const AltitudePoints& right, - const std::vector& main_profiles); + static void ProjWireOnPlane(const TopoDS_Wire& inpWire, const Handle_Geom_Plane& RefPlane, TopoDS_Wire& outWire); + + static TopTools_IndexedMapOfOrientedShape Create3DShape(const AltitudePoints& left, + const AltitudePoints& right, + const std::vector& main_profiles); + + static void CreateProfiles(const std::vector& theProfiles, + double theDDZ, + double theSpatialStep, + AltitudePoints& theOutLeft, + AltitudePoints& theOutRight, + AltitudePoints& theOutPoints, + std::vector& theOutMainProfiles, + TopoDS_Shape& Out3dPres, + TopoDS_Shape& Out2dPres, + TopoDS_Shape& OutLeftB, + TopoDS_Shape& OutRightB, + TopoDS_Shape& OutInlet, + TopoDS_Shape& OutOutlet, + bool Create3dPres, + bool Create2dPres, + std::set& InvInd ); + + static void Get2dFaceFrom3dPres(const TopoDS_Compound& cmp, TopoDS_Face& outF ); + + void GetPresentationShapes( TopoDS_Shape& Out3dPres, + TopoDS_Shape& Out2dPres, + TopoDS_Shape& OutLeftB, + TopoDS_Shape& OutRightB, + TopoDS_Shape& OutInlet, + TopoDS_Shape& OutOutlet ); +public: + + HYDRODATA_EXPORT static void CreateProfilesFromDTM ( const HYDROData_SequenceOfObjects& InpProfiles, + double ddz, + double step, + AltitudePoints& points, + TopoDS_Shape& Out3dPres, + TopoDS_Shape& Out2dPres, + TopoDS_Shape& OutLeftB, + TopoDS_Shape& OutRightB, + TopoDS_Shape& OutInlet, + TopoDS_Shape& OutOutlet, + bool Create3dPres, + bool Create2dPres, + std::set& InvInd ); }; + + + #endif