Index: DamEngine/trunk/src/Deltares.DamEngine.Data/Geotechnics/SoilProfile2DSurfaceLineHelper.cs =================================================================== diff -u -r5213 -r5215 --- DamEngine/trunk/src/Deltares.DamEngine.Data/Geotechnics/SoilProfile2DSurfaceLineHelper.cs (.../SoilProfile2DSurfaceLineHelper.cs) (revision 5213) +++ DamEngine/trunk/src/Deltares.DamEngine.Data/Geotechnics/SoilProfile2DSurfaceLineHelper.cs (.../SoilProfile2DSurfaceLineHelper.cs) (revision 5215) @@ -79,8 +79,8 @@ var result = new SoilProfile2D(); SoilProfile2D clonedProfile = soilProfile2D.Clone(); - GeometryPointString clonedSurfaceline = surfaceLine.Clone(); - RoundCoordinates(clonedSurfaceline, clonedProfile); + GeometryPointString clonedSurfaceLine = surfaceLine.Clone(); + RoundCoordinates(clonedSurfaceLine, clonedProfile); shift = GeometryObject.RoundValue(shift); if (Math.Abs(shift) >= 0.0) { @@ -98,9 +98,9 @@ SoilProfile2D soilProfile2D2 = clonedProfile.Clone(); var oldSurfaces = new List(); oldSurfaces.AddRange((IEnumerable) soilProfile2D2.Surfaces); - AddGeometryIntersectionsToSurfaceLine(clonedProfile.Geometry, ref clonedSurfaceline); - BuildGeometryModel(clonedSurfaceline, clonedProfile, ref result); - RemoveGeometryDataOfSoilProfileAboveSurfaceLine(clonedSurfaceline, ref result); + AddGeometryIntersectionsToSurfaceLine(clonedProfile.Geometry, ref clonedSurfaceLine); + BuildGeometryModel(clonedSurfaceLine, clonedProfile, ref result); + RemoveGeometryDataOfSoilProfileAboveSurfaceLine(clonedSurfaceLine, ref result); ReconstructSurfaces(ref result, clonedProfile, oldSurfaces, defaultSoil); ReconstructPreConsolidations(ref result, clonedProfile, shift); result.Geometry.Rebox(); @@ -141,22 +141,21 @@ soilProfile2D.Geometry.Bottom = GeometryObject.RoundValue(soilProfile2D.Geometry.Bottom, accuracy); surfaceLine.RoundPointsCoordinates(accuracy); } - private static void AddGeometryIntersectionsToSurfaceLine(GeometryData geometry, ref GeometryPointString cloneSurfaceline) + private static void AddGeometryIntersectionsToSurfaceLine(GeometryData geometry, ref GeometryPointString clonedSurfaceLine) { - List pointList = new List(); - foreach (GeometrySurface surface in geometry.Surfaces) + var pointList = new List(); + foreach (GeometryLoop outerLoop in geometry.Surfaces.Select(surface => surface.OuterLoop)) { - surface.OuterLoop.SyncCalcPoints(); - foreach (Point2D intersectionPoint in cloneSurfaceline.IntersectionXzPointsWithGeometryPointList(surface.OuterLoop.CalcPoints)) - pointList.Add(intersectionPoint); + outerLoop.SyncCalcPoints(); + pointList.AddRange(clonedSurfaceLine.IntersectionXzPointsWithGeometryPointList(outerLoop.CalcPoints)); } foreach (Point2D point in pointList) { - if (cloneSurfaceline.GetPointAt(point.X, point.Z) == null) - cloneSurfaceline.CalcPoints.Add(point); + if (clonedSurfaceLine.GetPointAt(point.X, point.Z) == null) + clonedSurfaceLine.CalcPoints.Add(point); } - cloneSurfaceline.SyncPoints(); - cloneSurfaceline.SortPointsByXAscending(); + clonedSurfaceLine.SyncPoints(); + clonedSurfaceLine.SortPointsByXAscending(); } private static void BuildGeometryModel(GeometryPointString surfaceLine, SoilProfile2D soilProfile2D, ref SoilProfile2D result)