#define CALCULATION_REGIONS_PREF GetName() + "_Reg"
#define CALCULATION_ZONES_PREF GetName() + "_Zone"
#define CALCULATION_GROUPS_PREF GetName() + "_"
+//#define DEB_CLASS2D 1
+#ifdef DEB_CLASS2D
+#include <BRepBuilderAPI_MakeVertex.hxx>
+#endif
#define EXPORT_NAME "HYDRO_" + GetName()
}
}
- HYDROData_SequenceOfObjects aGroups = GetGeometryGroups();
+ HYDROData_SequenceOfObjects aGroups = GetSplittedGroups();
anIter.Init( aGroups );
for ( ; anIter.More(); anIter.Next() )
return GetAltitudeForPoint( thePoint, aZone );
}
+double HYDROData_CalculationCase::GetAltitudeForPoint( const gp_XY& thePoint,
+ const Handle(HYDROData_Region)& theRegion ) const
+{
+ double aResAltitude = HYDROData_IAltitudeObject::GetInvalidAltitude();
+
+ Handle(HYDROData_Zone) aZone = GetZoneFromPoint( thePoint );
+ if ( !aZone.IsNull() )
+ {
+ Handle(HYDROData_Region) aRefRegion = Handle(HYDROData_Region)::DownCast( aZone->GetFatherObject() );
+ if ( IsEqual( aRefRegion, theRegion ) )
+ aResAltitude = GetAltitudeForPoint( thePoint, aZone );
+ }
+
+ return aResAltitude;
+}
+
double HYDROData_CalculationCase::GetAltitudeForPoint( const gp_XY& thePoint,
const Handle(HYDROData_Zone)& theZone ) const
{
return aResAltitude;
}
+NCollection_Sequence<double> HYDROData_CalculationCase::GetAltitudesForPoints(
+ const NCollection_Sequence<gp_XY>& thePoints,
+ const Handle(HYDROData_Region)& theRegion ) const
+{
+ NCollection_Sequence<double> aResSeq;
+
+ for ( int i = 1, n = thePoints.Length(); i <= n; ++i )
+ {
+ const gp_XY& thePnt = thePoints.Value( i );
+
+ double anAltitude = GetAltitudeForPoint( thePnt, theRegion );
+ aResSeq.Append( anAltitude );
+ }
+
+ return aResSeq;
+}
+
NCollection_Sequence<double> HYDROData_CalculationCase::GetAltitudesForPoints(
const NCollection_Sequence<gp_XY>& thePoints,
const Handle(HYDROData_Zone)& theZone ) const
return aResSeq;
}
+Handle(HYDROData_Region) HYDROData_CalculationCase::GetRegionFromPoint( const gp_XY& thePoint ) const
+{
+ Handle(HYDROData_Region) aResRegion;
+
+ Handle(HYDROData_Zone) aZone = GetZoneFromPoint( thePoint );
+ if ( !aZone.IsNull() )
+ aResRegion = Handle(HYDROData_Region)::DownCast( aZone->GetFatherObject() );
+
+ return aResRegion;
+}
+
Handle(HYDROData_Zone) HYDROData_CalculationCase::GetZoneFromPoint( const gp_XY& thePoint ) const
{
Handle(HYDROData_Zone) aResZone;
TopoDS_Face aZoneFace = TopoDS::Face( theZone->GetShape() );
if ( aZoneFace.IsNull() )
return aRes;
-
+#ifdef DEB_CLASS2D
+ TopoDS_Compound aCmp;
+ BRep_Builder aBB;
+ aBB.MakeCompound(aCmp);
+ aBB.Add(aCmp, aZoneFace);
+ gp_Pnt aPnt (thePoint.X(), thePoint.Y(), 0.);
+ BRepBuilderAPI_MakeVertex aMk(aPnt);
+ aBB.Add(aCmp, aMk.Vertex());
+ BRepTools::Write(aCmp, "FCL2d.brep");
+#endif
TopAbs_State State = HYDROData_Tool::ComputePointState(thePoint, aZoneFace);
if (State == TopAbs_OUT)
aRes = POINT_OUT;