Index: DamEngine/trunk/src/Deltares.DamEngine.Data/Geotechnics/SoilProfile2DSurfaceLineHelper.cs =================================================================== diff -u -r5498 -r5529 --- DamEngine/trunk/src/Deltares.DamEngine.Data/Geotechnics/SoilProfile2DSurfaceLineHelper.cs (.../SoilProfile2DSurfaceLineHelper.cs) (revision 5498) +++ DamEngine/trunk/src/Deltares.DamEngine.Data/Geotechnics/SoilProfile2DSurfaceLineHelper.cs (.../SoilProfile2DSurfaceLineHelper.cs) (revision 5529) @@ -177,8 +177,9 @@ return; } - AdaptGeometryToSurfaceLineLimits(surfaceLine, ref result); - AddLeadingSurfaceLineToGeometry(surfaceLine, ref result); + GeometryData geometry = result.Geometry; + AdaptGeometryToSurfaceLineLimits(surfaceLine, ref geometry); + AddLeadingSurfaceLineToGeometry(surfaceLine, ref geometry); result.Geometry.NewlyEffectedPoints.AddRange((IEnumerable) result.Geometry.Points); result.Geometry.NewlyEffectedCurves.AddRange((IEnumerable) result.Geometry.Curves); @@ -190,82 +191,82 @@ result.Geometry.DeleteLooseCurves(); } - private static void AdaptGeometryToSurfaceLineLimits(GeometryPointString surfaceLine, ref SoilProfile2D result) + private static void AdaptGeometryToSurfaceLineLimits(GeometryPointString surfaceLine, ref GeometryData result) { GeometryBounds geometryBounds = surfaceLine.GetGeometryBounds(); - if (result.Geometry.Left > geometryBounds.Left) - GeometryHelper.ExtendGeometryLeft(result.Geometry, geometryBounds.Left); - else if (result.Geometry.Left < geometryBounds.Left) - GeometryHelper.CutGeometryLeft(result.Geometry, geometryBounds.Left); - if (result.Geometry.Right > geometryBounds.Right) + if (result.Left > geometryBounds.Left) + GeometryHelper.ExtendGeometryLeft(result, geometryBounds.Left); + else if (result.Left < geometryBounds.Left) + GeometryHelper.CutGeometryLeft(result, geometryBounds.Left); + if (result.Right > geometryBounds.Right) { - GeometryHelper.CutGeometryRight(result.Geometry, geometryBounds.Right); + GeometryHelper.CutGeometryRight(result, geometryBounds.Right); } else { - if (result.Geometry.Right < geometryBounds.Right) - GeometryHelper.ExtendGeometryRight(result.Geometry, geometryBounds.Right); + if (result.Right < geometryBounds.Right) + GeometryHelper.ExtendGeometryRight(result, geometryBounds.Right); } } - private static void AddLeadingSurfaceLineToGeometry(GeometryPointString surfaceLine, ref SoilProfile2D result) + private static void AddLeadingSurfaceLineToGeometry(GeometryPointString surfaceLine, ref GeometryData result) { - result.Geometry.NewlyEffectedCurves.Clear(); - result.Geometry.NewlyEffectedPoints.Clear(); + result.NewlyEffectedCurves.Clear(); + result.NewlyEffectedPoints.Clear(); surfaceLine.SyncCalcPoints(); IList points = surfaceLine.CalcPoints; - GeometryData geometry = result.Geometry; - Point2D current1 = points[0].Clone(); - var existingPoint1 = geometry.GetPointAtLocation(current1); + GeometryData geometry = result; + Point2D currentPoint1 = points[0].Clone(); + var existingPoint1 = geometry.GetPointAtLocation(currentPoint1); if (existingPoint1 == null) { Point2D[] leftPoints = geometry.GetLeftPoints().OrderBy(x => x.Z).ToArray(); - geometry.NewlyEffectedPoints.Add(current1); - if (leftPoints[^1].Z < current1.Z) + geometry.NewlyEffectedPoints.Add(currentPoint1); + if (leftPoints[^1].Z < currentPoint1.Z) { // When the first point of the surface line is above the geometry (leftpoits) add a curve to the geometry - // from the last (= top) point of the leftpoints to the first point of the surface line. - GeometryCurve newLeftCurve = new GeometryCurve(leftPoints[^1], current1); - result.Geometry.NewlyEffectedCurves.Add(newLeftCurve); + // from the last (= top) point of the left points to the first point of the surface line. + GeometryCurve newLeftCurve = new GeometryCurve(leftPoints[^1], currentPoint1); + result.NewlyEffectedCurves.Add(newLeftCurve); } } else { - current1 = existingPoint1; + currentPoint1 = existingPoint1; } - Point2D current2; + Point2D currentPoint2; int index = 1; while (index < points.Count) { - current2 = points[index].Clone(); - var existingPoint2 = geometry.GetPointAtLocation(current2); + currentPoint2 = points[index].Clone(); + var existingPoint2 = geometry.GetPointAtLocation(currentPoint2); if (existingPoint2 == null) { if (index == checked (points.Count - 1)) { Point2D[] rightPoints = geometry.GetRightPoints().OrderBy(x => x.Z).ToArray(); - geometry.NewlyEffectedPoints.Add(current2); - if (rightPoints[^1].Z < current2.Z) + geometry.NewlyEffectedPoints.Add(currentPoint2); + if (rightPoints[^1].Z < currentPoint2.Z) { - GeometryCurve newRightCurve = new GeometryCurve(rightPoints[^1], current2); - result.Geometry.NewlyEffectedCurves.Add(newRightCurve); + GeometryCurve newRightCurve = new GeometryCurve(rightPoints[^1], currentPoint2); + result.NewlyEffectedCurves.Add(newRightCurve); } } else { - geometry.NewlyEffectedPoints.Add(current2); + geometry.NewlyEffectedPoints.Add(currentPoint2); } } else { - current2 = existingPoint2; + currentPoint2 = existingPoint2; } - GeometryCurve newCurve = new GeometryCurve(current1, current2); - if (GeometryHelper.DoesCurveExist(result.Geometry, newCurve) == null) + GeometryCurve newCurve = new GeometryCurve(currentPoint1, currentPoint2); + if (GeometryHelper.DoesCurveExist(result, newCurve) == null) { - result.Geometry.NewlyEffectedCurves.Add(newCurve); + result.NewlyEffectedCurves.Add(newCurve); } - current1 = current2; + currentPoint1 = currentPoint2; index++; } }