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