Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/PlLinesToWaternetConverter.cs =================================================================== diff -u -r5084 -r5085 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/PlLinesToWaternetConverter.cs (.../PlLinesToWaternetConverter.cs) (revision 5084) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/PlLinesToWaternetConverter.cs (.../PlLinesToWaternetConverter.cs) (revision 5085) @@ -583,8 +583,10 @@ for (var i = 0; i < xCoordinates.Length - 1; i++) { List relevantLines = splitLines.FindAll(line => Math.Abs(line.BeginPoint.X - xCoordinates[i]) < epsilon && Math.Abs(line.BeginPoint.X - line.EndPoint.X) > 0); - double max = relevantLines.Select(line => line.BeginPoint.Z).Max(); - Line relevantLine = relevantLines.Find(line => Math.Abs(line.BeginPoint.Z - max) < epsilon); + double maxZBegin = relevantLines.Select(line => line.BeginPoint.Z).Max(); + List relevantLines2 = relevantLines.FindAll(line => Math.Abs(line.BeginPoint.Z - maxZBegin) < epsilon); + double maxZEnd = relevantLines2.Select(line => line.EndPoint.Z).Max(); + Line relevantLine = relevantLines2.Find(line => Math.Abs(line.EndPoint.Z - maxZEnd) < epsilon); waternetLine.Points.Add(new GeometryPoint(relevantLine.BeginPoint.X, relevantLine.BeginPoint.Z)); waternetLine.Points.Add(new GeometryPoint(relevantLine.EndPoint.X, relevantLine.EndPoint.Z)); } @@ -726,8 +728,8 @@ var splitLines = new List(); foreach (Line line in lines) { - List xCoordinatesToBeAdded = xCoordinates.Where(xCoordinate => line.BeginPoint.X.IsLessThan(xCoordinate) && xCoordinate.IsLessThan(line.EndPoint.X)).ToList(); - + List xCoordinatesToBeAdded = xCoordinates.Where(xCoordinate => line.BeginPoint.X.IsLessThan(xCoordinate, epsilon) && xCoordinate.IsLessThan(line.EndPoint.X, epsilon)).ToList(); + if (xCoordinatesToBeAdded.Count > 0) { SplitLineAtXCoordinate(xCoordinatesToBeAdded, line, splitLines); @@ -750,11 +752,13 @@ double zCoordinate = line.GetIntersectPointXz(new Line(point1, point2)).Z; var middlePoint = new Point2D(xCoordinatesToBeAdded[i], zCoordinate); - Point2D beginPoint = i == 0 ? line.BeginPoint : middlePoint; - Point2D endPoint = i == xCoordinatesToBeAdded.Count - 1 ? line.EndPoint : middlePoint; + Point2D beginPoint = i == 0 ? line.BeginPoint : splitLines.Last().EndPoint; splitLines.Add(new Line(beginPoint, middlePoint)); - splitLines.Add(new Line(middlePoint, endPoint)); + if (i == xCoordinatesToBeAdded.Count - 1) + { + splitLines.Add(new Line(middlePoint, line.EndPoint)); + } } }