Index: src/Deltares.DSoilModel.Data/DSoilModelProject.cs =================================================================== diff -u -r437 -r452 --- src/Deltares.DSoilModel.Data/DSoilModelProject.cs (.../DSoilModelProject.cs) (revision 437) +++ src/Deltares.DSoilModel.Data/DSoilModelProject.cs (.../DSoilModelProject.cs) (revision 452) @@ -943,21 +943,27 @@ } else if (sender == CurrentSoilSegments) { - // added segments ? - foreach (var segment in currentSoilSegments) + var args = e as DataListModifiedArgs; + if (args == null) { - if (!soilSegments.Contains(segment)) - { - soilSegments.Add(segment); - } + return; } - // deleted segment ? - foreach (var segment in soilSegments.Where(s => s.Mechanism == CurrentFailureMechanism).ToArray()) + + switch (args.Action) { - if (!currentSoilSegments.Contains(segment)) - { - soilSegments.Remove(segment); - } + case ListModifyAction.Delete: + foreach (var segment in e.Objects.Cast().ToList()) + { + soilSegments.Remove(segment); + } + break; + case ListModifyAction.Add: + case ListModifyAction.Insert: + foreach (var segment in e.Objects.Cast().ToList()) + { + soilSegments.Add(segment); + } + break; } } } @@ -1029,9 +1035,9 @@ soilProfile2D.YEnd = 0; var loc = new GeographicPoint - { - X = soilProfile2D.Geometry.Right*0.5, Y = 0 - }; + { + X = soilProfile2D.Geometry.Right*0.5, Y = 0 + }; soilProfile2D.Location = loc; soilProfiles2D.Add(soilProfile2D); return soilProfile2D; @@ -1075,7 +1081,7 @@ newSegment.Assign(selectedSegment); var oldName = selectedSegment.Name; newSegment.Name = UniqueNameProvider.ProvideNewUniqueName(SoilSegments, oldName); - RearrangeSegmentCpts(selectedSegment , newSegment, xSplit); + RearrangeSegmentCpts(selectedSegment, newSegment, xSplit); RearrangeSegmentBorings(selectedSegment, newSegment, xSplit); RearrangeSegmentPoints(selectedSegment, newSegment, xSplit); var index = SoilSegments.IndexOf(selectedSegment); @@ -1122,6 +1128,7 @@ LinkItemToSegments(boring, segments); } } + private void LinkItemToSegments(IGeographic item, List segments) { double nearestDistance = double.MaxValue; @@ -1300,7 +1307,7 @@ var n = selectedSegment.Points.Count - 1; if (Distance(selectedSegment.Points[n], selectedSegment.Points[n-1]) < geoTolerance) selectedSegment.Points.RemoveAt(n-1); if (Distance(newSegment.Points[0], newSegment.Points[1]) < geoTolerance) newSegment.Points.RemoveAt(1); - } + } private double Distance(IGeographicPoint point1, IGeographicPoint point2) { @@ -1321,8 +1328,7 @@ { soil.ShearStrengthModel = ShearStrengthModel.CuCalculated; soil.UsePop = false; - } - } + } } } \ No newline at end of file