X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROData%2FHYDROData_Stream.cxx;h=63e983ec1d35109f89a4b77de997c7387b09dbf7;hb=fcece92742680e708f87352c32597ec2d84bfe2f;hp=ec2b1cb9cb199810671025fe882878c7bbc95692;hpb=5e3bdc5a57c68f336943a1890f263e6f6c7afcc9;p=modules%2Fhydro.git diff --git a/src/HYDROData/HYDROData_Stream.cxx b/src/HYDROData/HYDROData_Stream.cxx index ec2b1cb9..63e983ec 100644 --- a/src/HYDROData/HYDROData_Stream.cxx +++ b/src/HYDROData/HYDROData_Stream.cxx @@ -5,13 +5,19 @@ #include "HYDROData_PolylineXY.h" #include "HYDROData_Profile.h" -#include -#include -#include -#include - #include +#include + +#include + +#include +#include +#include +#include +#include +#include + #include #include #include @@ -20,33 +26,36 @@ #include #include #include + +#include + +#include +#include +#include +#include + +#include #include #include +#include + +#include #include #include #include #include #include #include -#include -#include -#include -#include -#include -#include -#include -typedef NCollection_DataMap HYDROData_DataMapOfRealOfHDProfile; -#include -#include -#include -#include -#include -#include #include #include + #include -#include + +#include + +#include +#include //#define DEB_STREAM 1 #ifdef DEB_STREAM @@ -58,6 +67,8 @@ typedef NCollection_DataMap HYDROData_ #define PYTHON_STREAM_ID "KIND_STREAM" +typedef NCollection_DataMap HYDROData_DataMapOfRealOfHDProfile; + IMPLEMENT_STANDARD_HANDLE(HYDROData_Stream,HYDROData_NaturalObject) IMPLEMENT_STANDARD_RTTIEXT(HYDROData_Stream,HYDROData_NaturalObject) @@ -111,11 +122,14 @@ TopoDS_Shape HYDROData_Stream::GetTopShape() const { return getTopShape(); } + TopoDS_Shape HYDROData_Stream::GetShape3D() const { return getShape3D(); } - Handle(Geom_BSplineCurve) HYDROData_Stream::buildInterpolationCurve(const Handle(TColgp_HArray1OfPnt)& theArrayOfPnt) + +Handle(Geom_BSplineCurve) HYDROData_Stream::buildInterpolationCurve( + const Handle(TColgp_HArray1OfPnt)& theArrayOfPnt ) { Handle(Geom_BSplineCurve) aBSpline; GeomAPI_Interpolate anInterpolator (theArrayOfPnt, Standard_False, 1.0e-5); @@ -124,13 +138,14 @@ TopoDS_Shape HYDROData_Stream::GetShape3D() const aBSpline = anInterpolator.Curve(); return aBSpline; } + void HYDROData_Stream::Update() { HYDROData_NaturalObject::Update(); Handle(HYDROData_PolylineXY) aHydAxis = GetHydraulicAxis(); HYDROData_SequenceOfObjects aRefProfiles = GetProfiles(); - if ( aHydAxis.IsNull() || aRefProfiles.IsEmpty() ) + if ( aHydAxis.IsNull() || aRefProfiles.Length() < 2 ) return; bool anIsFirst = true; @@ -150,7 +165,7 @@ void HYDROData_Stream::Update() continue; const TopoDS_Shape& aProf3d = aProfile->GetShape3D(); gp_XY aPnt1, aPnt2; - if ( !aProfile->GetFirstPoint( aPnt1 ) || !aProfile->GetLastPoint( aPnt2 ) ) + if ( !aProfile->GetLeftPoint( aPnt1 ) || !aProfile->GetRightPoint( aPnt2 ) ) continue; anArrOfProfiles.SetValue(i,aProfile->GetShape3D());//aProfile->GetTopShape(); anArrOf2DProfiles.SetValue(i,aProfile->GetTopShape()); @@ -270,6 +285,26 @@ void HYDROData_Stream::Update() } +QColor HYDROData_Stream::DefaultFillingColor() +{ + return QColor( Qt::green ); +} + +QColor HYDROData_Stream::DefaultBorderColor() +{ + return QColor( Qt::transparent ); +} + +QColor HYDROData_Stream::getDefaultFillingColor() const +{ + return DefaultFillingColor(); +} + +QColor HYDROData_Stream::getDefaultBorderColor() const +{ + return DefaultBorderColor(); +} + bool HYDROData_Stream::SetHydraulicAxis( const Handle(HYDROData_PolylineXY)& theAxis ) { Handle(HYDROData_PolylineXY) aPrevAxis = GetHydraulicAxis(); @@ -319,14 +354,15 @@ void HYDROData_Stream::RemoveHydraulicAxis() SetToUpdate( true ); } -bool HYDROData_Stream::HasIntersection( const Handle(HYDROData_Profile)& theProfile, const TopoDS_Face& thePlane, - Standard_Real& outPar ) const +bool HYDROData_Stream::HasIntersection( const Handle(HYDROData_PolylineXY)& theHydAxis, + const Handle(HYDROData_Profile)& theProfile, + const TopoDS_Face& thePlane, + Standard_Real& outPar) { - Handle(HYDROData_PolylineXY) aHydAxis = GetHydraulicAxis(); - if ( theProfile.IsNull() || aHydAxis.IsNull() ) + if ( theProfile.IsNull() || theHydAxis.IsNull() ) return false; - TopoDS_Wire aHydraulicWire = TopoDS::Wire( aHydAxis->GetShape() ); //guide line + TopoDS_Wire aHydraulicWire = TopoDS::Wire( theHydAxis->GetShape() ); //guide line TopoDS_Wire aProfileWire = TopoDS::Wire( theProfile->GetTopShape() ); if ( aHydraulicWire.IsNull() || aProfileWire.IsNull() ) return false; @@ -420,6 +456,14 @@ bool HYDROData_Stream::HasIntersection( const Handle(HYDROData_Profile)& theProf return false; } +bool HYDROData_Stream::HasIntersection( const Handle(HYDROData_Profile)& theProfile, const TopoDS_Face& thePlane, + Standard_Real& outPar ) const +{ + Handle(HYDROData_PolylineXY) aHydAxis = GetHydraulicAxis(); + + return HasIntersection( aHydAxis, theProfile, thePlane, outPar ); +} + bool HYDROData_Stream::AddProfile( const Handle(HYDROData_Profile)& theProfile ) { @@ -726,6 +770,12 @@ void HYDROData_Stream::removeParameter( const int& theIndex ) if ( !aLabel.FindAttribute( TDataStd_RealArray::GetID(), aParamsArray ) ) return; + if ( aParamsArray->Length() == 1 ) + { + removeParametersArray(); + return; + } + TColStd_Array1OfReal aNewArr( aParamsArray->Lower(), aParamsArray->Upper() - 1 ); for ( int i = aParamsArray->Lower(), j = i, k = 0, n = aParamsArray->Upper(); i <= n; ++i, ++k )