2 #include <HYDROData_LISM.h>
3 #include <HYDROData_Profile.h>
4 #include <HYDROData_StreamLinearInterpolation.h>
5 #include <TopoDS_Face.hxx>
10 IMPLEMENT_STANDARD_RTTIEXT( HYDROData_LISM, HYDROData_Bathymetry )
12 HYDROData_LISM::HYDROData_LISM()
16 HYDROData_LISM::~HYDROData_LISM()
21 HYDROData_SequenceOfObjects HYDROData_LISM::GetProfiles() const
23 return GetReferenceObjects( DataTag_Profiles );
26 void HYDROData_LISM::SetProfiles( const HYDROData_SequenceOfObjects& theProfiles )
28 SetReferenceObjects( theProfiles, DataTag_Profiles );
33 bool HYDROData_LISM::SetLeftBank( const Handle(HYDROData_PolylineXY)& theBank )
38 if ( !HYDROData_Stream::IsValidAsAxis( theBank ) )
41 Handle(HYDROData_PolylineXY) aPrevBank = GetLeftBank();
42 if ( IsEqual( aPrevBank, theBank ) )
45 SetReferenceObject( theBank, DataTag_LeftBank );
50 Handle(HYDROData_PolylineXY) HYDROData_LISM::GetLeftBank() const
52 return Handle(HYDROData_PolylineXY)::DownCast(GetReferenceObject( DataTag_LeftBank ) );
55 bool HYDROData_LISM::SetRightBank( const Handle(HYDROData_PolylineXY)& theBank )
60 if ( !HYDROData_Stream::IsValidAsAxis( theBank ) )
63 Handle(HYDROData_PolylineXY) aPrevBank = GetRightBank();
64 if ( IsEqual( aPrevBank, theBank ) )
67 SetReferenceObject( theBank, DataTag_RightBank );
72 bool HYDROData_LISM::SetHydraulicAxis( const Handle(HYDROData_PolylineXY)& theAxis )
74 if ( !HYDROData_Stream::IsValidAsAxis( theAxis ) )
77 Handle(HYDROData_PolylineXY) aPrevAxis = GetHydraulicAxis();
78 if ( IsEqual( aPrevAxis, theAxis ) )
81 SetReferenceObject( theAxis, DataTag_HydraulicAxis );
87 Handle(HYDROData_PolylineXY) HYDROData_LISM::GetHydraulicAxis() const
89 return Handle(HYDROData_PolylineXY)::DownCast( GetReferenceObject( DataTag_HydraulicAxis ) );
93 Handle(HYDROData_PolylineXY) HYDROData_LISM::GetRightBank() const
95 return Handle(HYDROData_PolylineXY)::DownCast(GetReferenceObject( DataTag_RightBank ) );
98 int HYDROData_LISM::GetNbProfilePoints() const
100 return GetInteger( DataTag_NbProfilePoints );
103 void HYDROData_LISM::SetNbProfilePoints( int theNbProints )
105 SetInteger( DataTag_NbProfilePoints, theNbProints );
109 double HYDROData_LISM::GetHaxStep() const
111 return GetDouble( DataTag_HaxStep );
114 void HYDROData_LISM::SetHaxStep( double theHaxStep )
116 SetDouble( DataTag_HaxStep, theHaxStep );
120 void HYDROData_LISM::Update()
122 AltitudePoints anOutPoints;
123 HYDROData_SequenceOfObjects aRefProfiles = GetProfiles();
124 int nbprofilepoints = GetNbProfilePoints();
125 double step = GetHaxStep();
126 Handle(HYDROData_PolylineXY) aHAX = GetHydraulicAxis();
127 Handle(HYDROData_PolylineXY) aLB = GetLeftBank();
128 Handle(HYDROData_PolylineXY) aRB = GetRightBank();
130 std::vector<std::string> warnings;
131 HYDROData_Stream::PrsDefinition prsDef;
132 HYDROData_StreamLinearInterpolation::Perform(aRefProfiles, nbprofilepoints, step, aHAX, aLB, aRB, anOutPoints, true, false, prsDef, &warnings);
134 SetAltitudePoints( anOutPoints );
136 SetShape( DataTag_LeftBankShape, prsDef.myLeftBank);
137 SetShape( DataTag_RightBankShape, prsDef.myRightBank);
138 SetShape( DataTag_InletShape, prsDef.myInlet);
139 SetShape( DataTag_OutletShape, prsDef.myOutlet );
140 SetShape( DataTag_3DShape, prsDef.myPrs3D );
141 SetShape( DataTag_2DShape, prsDef.myPrs2D );
143 HYDROData_Bathymetry::Update();
147 void HYDROData_LISM::GetShapePresentations( HYDROData_Stream::PrsDefinition& prsDef)
149 prsDef.myLeftBank = GetShape( DataTag_LeftBankShape);
150 prsDef.myRightBank = GetShape( DataTag_RightBankShape);
151 prsDef.myInlet = GetShape( DataTag_InletShape);
152 prsDef.myOutlet = GetShape( DataTag_OutletShape );
153 prsDef.myPrs3D = GetShape( DataTag_3DShape );
154 prsDef.myPrs2D = GetShape( DataTag_2DShape );
158 /*void HYDROData_LISM::GetWarnings(NCollection_DataMap<Handle(HYDROData_Profile), QSet<QString>>& warnings)
160 warnings = myWarnings;