Index: DamEngine/trunk/src/Deltares.DamEngine.Data/Geotechnics/SoilProfile2DSurfaceLineHelper.cs =================================================================== diff -u -r5182 -r5198 --- DamEngine/trunk/src/Deltares.DamEngine.Data/Geotechnics/SoilProfile2DSurfaceLineHelper.cs (.../SoilProfile2DSurfaceLineHelper.cs) (revision 5182) +++ DamEngine/trunk/src/Deltares.DamEngine.Data/Geotechnics/SoilProfile2DSurfaceLineHelper.cs (.../SoilProfile2DSurfaceLineHelper.cs) (revision 5198) @@ -76,13 +76,12 @@ return null; if (surfaceLine == null || surfaceLine.Points.Count == 0) return null; - //this.ThrowIfSurfaceLineIsAtLeastPartiallyBeneathGeometry(surfaceLine, soilProfile2D); - SoilProfile2D result = new SoilProfile2D(); - + + var result = new SoilProfile2D(); SoilProfile2D clonedProfile = soilProfile2D.Clone(); GeometryPointString clonedSurfaceline = surfaceLine.Clone(); RoundCoordinates(clonedSurfaceline, clonedProfile); - shift = clonedSurfaceline.RoundValue(shift); + shift = GeometryObject.RoundValue(shift); if (Math.Abs(shift) >= 0.0) { foreach (Point2D point in clonedProfile.Geometry.Points) @@ -97,7 +96,7 @@ // As the original profile may have been moved as cloned profile, a new clone is needed to perform all reset actions with. // The cloned profile is used to determine the original surfaces and preconsolidations. SoilProfile2D soilProfile2D2 = clonedProfile.Clone(); - List oldSurfaces = new List(); + var oldSurfaces = new List(); oldSurfaces.AddRange((IEnumerable) soilProfile2D2.Surfaces); AddGeometryIntersectionsToSurfaceLine(clonedProfile.Geometry, ref clonedSurfaceline); BuildGeometryModel(clonedSurfaceline, clonedProfile, ref result); @@ -136,13 +135,13 @@ const double accuracy = 1e-7; foreach (Point2D point in soilProfile2D.Geometry.Points) { - point.X = point.RoundValue(point.X, accuracy); - point.Z = point.RoundValue(point.Z, accuracy); + point.X = Point2D.RoundValue(point.X, accuracy); + point.Z = Point2D.RoundValue(point.Z, accuracy); } - soilProfile2D.Geometry.Right = soilProfile2D.Geometry.RoundValue(soilProfile2D.Geometry.Right, accuracy); - soilProfile2D.Geometry.Left = soilProfile2D.Geometry.RoundValue(soilProfile2D.Geometry.Left, accuracy); - soilProfile2D.Geometry.Bottom = soilProfile2D.Geometry.RoundValue(soilProfile2D.Geometry.Bottom, accuracy); + soilProfile2D.Geometry.Right = GeometryObject.RoundValue(soilProfile2D.Geometry.Right, accuracy); + soilProfile2D.Geometry.Left = GeometryObject.RoundValue(soilProfile2D.Geometry.Left, accuracy); + soilProfile2D.Geometry.Bottom = GeometryObject.RoundValue(soilProfile2D.Geometry.Bottom, accuracy); surfaceLine.RoundPointsCoordinates(accuracy); } private static void AddGeometryIntersectionsToSurfaceLine(GeometryData geometry, ref GeometryPointString cloneSurfaceline) @@ -165,11 +164,10 @@ private static void BuildGeometryModel(GeometryPointString surfaceLine, SoilProfile2D soilProfile2D, ref SoilProfile2D result) { - SoilProfile2D clonedProfile2 = (SoilProfile2D) soilProfile2D.Clone(); + SoilProfile2D clonedProfile2 = soilProfile2D.Clone(); result.Geometry = clonedProfile2.Geometry; if (result.Geometry.Curves == null || result.Geometry.Curves.Count < 3) return; - //result.Geometry.DeleteLooseCurves(); result.Geometry.Rebox(); if (surfaceLine == null || surfaceLine.Points.Count <= 1) return; @@ -317,8 +315,8 @@ foreach (GeometryLoop geometryLoop in result.Loops.ToArray()) { GeometryLoop loop = geometryLoop; - if (result.Surfaces.Count((Func) (s => s.OuterLoop == loop)) <= 0 && - result.Surfaces.Count((Func) (s => s.InnerLoops.Contains(loop))) <= 0) + if (!result.Surfaces.Any((Func)(s => s.OuterLoop == loop)) && + !result.Surfaces.Any((Func)(s => s.InnerLoops.Contains(loop)))) { result.Loops.Remove(loop); }