Index: DamEngine/trunk/src/Deltares.DamEngine.TestHelpers/Factories/FactoryForSoilProfiles.cs =================================================================== diff -u -r4874 -r4879 --- DamEngine/trunk/src/Deltares.DamEngine.TestHelpers/Factories/FactoryForSoilProfiles.cs (.../FactoryForSoilProfiles.cs) (revision 4874) +++ DamEngine/trunk/src/Deltares.DamEngine.TestHelpers/Factories/FactoryForSoilProfiles.cs (.../FactoryForSoilProfiles.cs) (revision 4879) @@ -996,7 +996,7 @@ /// Create a soil profile 2D with one layer /// /// The 2D Soil Profile - public static SoilProfile2D CreateSoilProfile2DWithOneLayer() + public static SoilProfile2D CreateSoilProfile2DWithTwoLayers() { const string layerName = "Layer"; const string topLayerName = "TopLayer"; @@ -1034,7 +1034,7 @@ /// Creates 2D SoilProfile with two layers /// /// The 2D Soil Profile - public static SoilProfile2D CreateSoilProfile2DWithTwoLayers() + public static SoilProfile2D CreateSoilProfile2DWithThreeLayers() { const string layer1Name = "Layer1"; const string layer2Name = "Layer2"; Index: DamEngine/trunk/src/Deltares.DamEngine.Data/Geometry/GeometryData.cs =================================================================== diff -u -r4874 -r4879 --- DamEngine/trunk/src/Deltares.DamEngine.Data/Geometry/GeometryData.cs (.../GeometryData.cs) (revision 4874) +++ DamEngine/trunk/src/Deltares.DamEngine.Data/Geometry/GeometryData.cs (.../GeometryData.cs) (revision 4879) @@ -136,6 +136,43 @@ } /// + /// Deletes all the loose curves. + /// Returns true when the loose curve is inside publisherEventArgs surface. + /// Calls Regeneration if the funtion returns true. + /// + public bool DeleteLooseCurves() + { + SynchronizeLoops(); + geometryGenerator.SetupCurveSurfaceAssociations(); + bool regenerateGeometry = false; + var curvesToDelete = new List(); + foreach (var curve in Curves) + { + if ((curve.SurfaceAtLeft == null && curve.SurfaceAtRight == null)) + { + curvesToDelete.Add(curve); + } + else if ((curve.SurfaceAtLeft != null && curve.SurfaceAtRight != null) && + (curve.SurfaceAtLeft == curve.SurfaceAtRight)) + { + regenerateGeometry = true; + curvesToDelete.Add(curve); + } + } + + foreach (var curve in curvesToDelete) + { + DeleteCurve(curve, false); + } + if (regenerateGeometry) + { + RegenerateGeometry(); + } + + return regenerateGeometry; + } + + /// /// Deletes the curve if the aValidate is true. /// /// The curve to delete @@ -493,8 +530,6 @@ { SynchronizeLoops(); RemoveDoublesFromNewlyEffectedPointsAndCurves(); - // Curves.Clear(); - // Points.Clear(); Points.AddRange(NewlyEffectedPoints); Curves.AddRange(NewlyEffectedCurves); Index: DamEngine/trunk/src/Deltares.DamEngine.Data/Geometry/GeometryGenerator.cs =================================================================== diff -u -r4835 -r4879 --- DamEngine/trunk/src/Deltares.DamEngine.Data/Geometry/GeometryGenerator.cs (.../GeometryGenerator.cs) (revision 4835) +++ DamEngine/trunk/src/Deltares.DamEngine.Data/Geometry/GeometryGenerator.cs (.../GeometryGenerator.cs) (revision 4879) @@ -773,7 +773,7 @@ /// /// Setups the curve surface associations. /// - private void SetupCurveSurfaceAssociations() + public void SetupCurveSurfaceAssociations() { SetUpGeometryLoopDirections(); // only try to connect curves to surfaces when there are loops (i.e. surfaces) Index: DamEngine/trunk/src/Deltares.DamEngine.Data.Tests/Geotechnics/GeometryHelperTests.cs =================================================================== diff -u -r4874 -r4879 --- DamEngine/trunk/src/Deltares.DamEngine.Data.Tests/Geotechnics/GeometryHelperTests.cs (.../GeometryHelperTests.cs) (revision 4874) +++ DamEngine/trunk/src/Deltares.DamEngine.Data.Tests/Geotechnics/GeometryHelperTests.cs (.../GeometryHelperTests.cs) (revision 4879) @@ -43,7 +43,10 @@ public void GivenTwoLayerGeometryWhenExtendingLeftThenLeftBoundaryIsChanged() { // Given - SoilProfile2D soilProfile2D = FactoryForSoilProfiles.CreateSoilProfile2DWithTwoLayers(); + SoilProfile2D soilProfile2D = FactoryForSoilProfiles.CreateSoilProfile2DWithThreeLayers(); + // For debugging purposes + // GeometryExporter.ExportToFile(soilProfile2D.Geometry, visualizationFolder + "Geometry.txt"); + // GeometryExporter.ExportToJsonFile(soilProfile2D.Geometry, visualizationFolder + "Geometry.json"); // When GeometryHelper.ExtendGeometryLeft(soilProfile2D.Geometry, -2); @@ -64,7 +67,7 @@ public void GivenTwoLayerGeometryWhenExtendingLeftToTheRightThenExceptionIsThrown() { // Given - SoilProfile2D soilProfile2D = FactoryForSoilProfiles.CreateSoilProfile2DWithTwoLayers(); + SoilProfile2D soilProfile2D = FactoryForSoilProfiles.CreateSoilProfile2DWithThreeLayers(); // When & Then Assert.Throws(() => { GeometryHelper.ExtendGeometryLeft(soilProfile2D.Geometry, 2); }); @@ -74,7 +77,7 @@ public void GivenTwoLayerGeometryWhenExtendingRightThenRightBoundaryIsChanged() { // Given - SoilProfile2D soilProfile2D = FactoryForSoilProfiles.CreateSoilProfile2DWithTwoLayers(); + SoilProfile2D soilProfile2D = FactoryForSoilProfiles.CreateSoilProfile2DWithThreeLayers(); // When GeometryHelper.ExtendGeometryRight(soilProfile2D.Geometry, 12); @@ -92,7 +95,7 @@ public void GivenTwoLayerGeometryWhenExtendingRightToTheLeftThenExceptionIsThrown() { // Given - SoilProfile2D soilProfile2D = FactoryForSoilProfiles.CreateSoilProfile2DWithTwoLayers(); + SoilProfile2D soilProfile2D = FactoryForSoilProfiles.CreateSoilProfile2DWithThreeLayers(); // When & Then Assert.Throws(() => { GeometryHelper.ExtendGeometryRight(soilProfile2D.Geometry, 8); }); Index: DamEngine/trunk/src/Deltares.DamEngine.Data/Geometry/GeometryHelper.cs =================================================================== diff -u -r4874 -r4879 --- DamEngine/trunk/src/Deltares.DamEngine.Data/Geometry/GeometryHelper.cs (.../GeometryHelper.cs) (revision 4874) +++ DamEngine/trunk/src/Deltares.DamEngine.Data/Geometry/GeometryHelper.cs (.../GeometryHelper.cs) (revision 4879) @@ -66,6 +66,7 @@ } } + geometry.DeleteLooseCurves(); geometry.RegenerateGeometry(); geometry.Rebox(); geometry.Left = toX; @@ -110,6 +111,7 @@ } } + geometry.DeleteLooseCurves(); geometry.RegenerateGeometry(); geometry.Rebox(); geometry.Right = toX; Index: DamEngine/trunk/src/Deltares.DamEngine.Data.Tests/Geotechnics/SoilProfile2DSurfaceLineHelperTests.cs =================================================================== diff -u -r4759 -r4879 --- DamEngine/trunk/src/Deltares.DamEngine.Data.Tests/Geotechnics/SoilProfile2DSurfaceLineHelperTests.cs (.../SoilProfile2DSurfaceLineHelperTests.cs) (revision 4759) +++ DamEngine/trunk/src/Deltares.DamEngine.Data.Tests/Geotechnics/SoilProfile2DSurfaceLineHelperTests.cs (.../SoilProfile2DSurfaceLineHelperTests.cs) (revision 4879) @@ -38,7 +38,7 @@ public void GivenSurfaceLineAndSoilProfile2D_WhenCheckIsSurfaceLineInsideSoilProfile2D_ThenReturnCorrectResult(PositionToSoilProfile2D positionToSoilProfile2D, bool result) { // Given - SoilProfile2D soilProfile2D = FactoryForSoilProfiles.CreateSoilProfile2DWithOneLayer(); + SoilProfile2D soilProfile2D = FactoryForSoilProfiles.CreateSoilProfile2DWithTwoLayers(); SurfaceLine2 surfaceLine = CreateSurfaceLineForSoilProfile2D(soilProfile2D, positionToSoilProfile2D); // When-Then