#include "HYDROData_PolylineXY.h"
#include "HYDROData_Profile.h"
-#include <BRep_Builder.hxx>
-#include <BRepBuilderAPI_MakeEdge.hxx>
-#include <BRepBuilderAPI_MakeWire.hxx>
-#include <BRepBuilderAPI_MakeFace.hxx>
-
#include <TDataStd_RealArray.hxx>
+#include <Precision.hxx>
+
+#include <NCollection_DataMap.hxx>
+
+#include <TColStd_Array1OfReal.hxx>
+#include <TColStd_ListOfReal.hxx>
+#include <TColStd_ListIteratorOfListOfReal.hxx>
+#include <TCollection_CompareOfReal.hxx>
+#include <TColgp_Array1OfPnt.hxx>
+#include <TColgp_HArray1OfPnt.hxx>
+
#include <TopoDS.hxx>
#include <TopoDS_Wire.hxx>
#include <TopoDS_Shell.hxx>
#include <TopoDS_Vertex.hxx>
#include <TopExp.hxx>
#include <TopExp_Explorer.hxx>
+
+#include <Bnd_Box.hxx>
+
+#include <BRep_Builder.hxx>
+#include <BRepBuilderAPI_MakeEdge.hxx>
+#include <BRepBuilderAPI_MakeWire.hxx>
+#include <BRepBuilderAPI_MakeFace.hxx>
+
+#include <BRepBndLib.hxx>
#include <BRepProj_Projection.hxx>
#include <BRepExtrema_ExtCC.hxx>
+#include <BRepCheck_Analyzer.hxx>
+
+#include <gp.hxx>
#include <gp_Ax1.hxx>
#include <gp_Ax2.hxx>
#include <gp_Ax3.hxx>
#include <gp_Vec.hxx>
#include <gp_Pnt.hxx>
#include <gp_Pln.hxx>
-#include <gp.hxx>
-#include <Bnd_Box.hxx>
-#include <BRepBndLib.hxx>
-#include <TColStd_Array1OfReal.hxx>
-#include <Precision.hxx>
-#include <QStringList>
-#include <NCollection_DataMap.hxx>
-typedef NCollection_DataMap<Standard_Real, Handle(HYDROData_Profile)> HYDROData_DataMapOfRealOfHDProfile;
-#include <TColStd_ListOfReal.hxx>
-#include <TColStd_ListIteratorOfListOfReal.hxx>
-#include <TCollection_CompareOfReal.hxx>
-#include <SortTools_QuickSortOfReal.hxx>
-#include <TColgp_Array1OfPnt.hxx>
-#include <TColgp_HArray1OfPnt.hxx>
#include <GeomAPI_Interpolate.hxx>
#include <Geom_BSplineCurve.hxx>
+
#include <TopTools_Array1OfShape.hxx>
-#include <BRepCheck_Analyzer.hxx>
+
+#include <SortTools_QuickSortOfReal.hxx>
+
+#include <QColor>
+#include <QStringList>
//#define DEB_STREAM 1
#ifdef DEB_STREAM
#define PYTHON_STREAM_ID "KIND_STREAM"
+typedef NCollection_DataMap<Standard_Real, Handle(HYDROData_Profile)> HYDROData_DataMapOfRealOfHDProfile;
+
IMPLEMENT_STANDARD_HANDLE(HYDROData_Stream,HYDROData_NaturalObject)
IMPLEMENT_STANDARD_RTTIEXT(HYDROData_Stream,HYDROData_NaturalObject)
{
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);
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;
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());
}
+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();
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;
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 )
{
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 )