Index: Ringtoets/Piping/src/Ringtoets.Piping.Data/IPipingCalculationItemExtensions.cs
===================================================================
diff -u -rc7c07db38829afdc5965c331844e1d39123944ff -r1279dcba187f56c0ba96dfdb962067304e333475
--- Ringtoets/Piping/src/Ringtoets.Piping.Data/IPipingCalculationItemExtensions.cs (.../IPipingCalculationItemExtensions.cs) (revision c7c07db38829afdc5965c331844e1d39123944ff)
+++ Ringtoets/Piping/src/Ringtoets.Piping.Data/IPipingCalculationItemExtensions.cs (.../IPipingCalculationItemExtensions.cs) (revision 1279dcba187f56c0ba96dfdb962067304e333475)
@@ -19,13 +19,15 @@
// Stichting Deltares and remain full property of Stichting Deltares at all times.
// All rights reserved.
+using System;
using System.Collections.Generic;
using System.Linq;
+using Core.Common.Base.Geometry;
namespace Ringtoets.Piping.Data
{
///
- /// Defines extension methods dealing with with instances.
+ /// Defines extension methods dealing with instances.
///
public static class IPipingCalculationItemExtensions
{
@@ -62,5 +64,30 @@
{
return pipingCalculationItems.SelectMany(GetPipingCalculations);
}
+
+ ///
+ /// Determines if the surfaceline of a calculation is instersecting with the section reference line.
+ ///
+ /// The calculation containing the surface line.
+ /// The line segments that defines the reference line.
+ /// true when intersecting. false otherwise.
+ /// Thrown when contains no elements.
+ public static bool IsSurfaceLineIntersectionWithReferenceLineInSection(this IPipingCalculationItem pipingCalculationItem, IEnumerable lineSegments)
+ {
+ var pipingCalculation = pipingCalculationItem as PipingCalculationScenario;
+
+ if (pipingCalculation == null)
+ {
+ return false;
+ }
+
+ var surfaceLine = pipingCalculation.InputParameters.SurfaceLine;
+ if (surfaceLine == null)
+ {
+ return false;
+ }
+ var minimalDistance = lineSegments.Min(segment => segment.GetEuclideanDistanceToPoint(surfaceLine.ReferenceLineIntersectionWorldPoint));
+ return minimalDistance < 1.0e-6;
+ }
}
}
\ No newline at end of file