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