Index: src/Deltares.DSoilModel.Forms/DSoilModelGeometryEditor.cs =================================================================== diff -u -r240 -r246 --- src/Deltares.DSoilModel.Forms/DSoilModelGeometryEditor.cs (.../DSoilModelGeometryEditor.cs) (revision 240) +++ src/Deltares.DSoilModel.Forms/DSoilModelGeometryEditor.cs (.../DSoilModelGeometryEditor.cs) (revision 246) @@ -546,12 +546,34 @@ return; } + UndoRedoManager.Instance.BeginAction(); var profile = spatialEditor.EmptySelection.DataObject as SoilProfile1D; - profile.Layers.Clear(); + ClearGeometryForSoilProfile1D(profile); - DataEventPublisher.DataListModified(profile.Layers); + UndoRedoManager.Instance.EndAction(); + + // in order to trigger refresh we select the 1st dummy object and then we reselect the "cleared" one + DataEventPublisher.SelectionChanged(new SoilProfile1D()); + DataEventPublisher.SelectionChanged(profile); } + public void ClearGeometryForSoilProfile1D(SoilProfile1D profile) + { + foreach (var lookup in Project.BoringLookup1Ds.Where(b => b.SoilProfile1D == profile).ToList()) + { + Project.BoringLookup1Ds.Remove(lookup); + boringLookup1Ds.Remove(lookup); + } + + foreach (var lookup in Project.CptLookup1Ds.Where(p => p.SoilProfile1D == profile).ToList()) + { + Project.CptLookup1Ds.Remove(lookup); + cptLookup1Ds.Remove(lookup); + } + + profile.Layers.Clear(); + } + private void ExecuteClearSoilProfile2DCommand() { if (!AskUserWantsToClearSoilProfile2D()) Index: src/Deltares.DSoilModel.Forms.Tests/DSoilModelGeometryEditorTests.cs =================================================================== diff -u -r240 -r246 --- src/Deltares.DSoilModel.Forms.Tests/DSoilModelGeometryEditorTests.cs (.../DSoilModelGeometryEditorTests.cs) (revision 240) +++ src/Deltares.DSoilModel.Forms.Tests/DSoilModelGeometryEditorTests.cs (.../DSoilModelGeometryEditorTests.cs) (revision 246) @@ -39,6 +39,16 @@ return p; } + private DSoilModelProject CreateProjectForSoilProfile1D(SoilProfile1D profile) + { + var p = new DSoilModelProject(); + + p.BoringLookup1Ds.Add(new BoringLookup1D { SoilProfile1D = profile }); + p.CptLookup1Ds.Add(new ConePenetrationTestLookup1D { SoilProfile1D = profile }); + + return p; + } + private SoilProfile2D CreateSoilProfile2D() { var profile = new SoilProfile2D(); @@ -50,8 +60,32 @@ return profile; } + + private SoilProfile1D CreateSoilProfile1D() + { + var profile = new SoilProfile1D(); + profile.Layers.Add(new SoilLayer1D()); + profile.Layers.Add(new SoilLayer1D()); + + return profile; + } + [Test] + public void ClearGeometryForSoilProfile1DTest() + { + var soilProfile1D = CreateSoilProfile1D(); + geometryEditor.Project = CreateProjectForSoilProfile1D(soilProfile1D); + + geometryEditor.ClearGeometryForSoilProfile1D(soilProfile1D); + + Assert.IsEmpty(geometryEditor.Project.BoringLookup1Ds); + Assert.IsEmpty(geometryEditor.Project.CptLookup1Ds); + + Assert.IsEmpty(soilProfile1D.Layers); + } + + [Test] public void ClearGeometryForSoilProfile2DTest() { var soilProfile2D = CreateSoilProfile2D();