Index: DamEngine/trunk/src/Deltares.DamEngine.Data/Geotechnics/SoilLayer2D.cs =================================================================== diff -u -r4540 -r5061 --- DamEngine/trunk/src/Deltares.DamEngine.Data/Geotechnics/SoilLayer2D.cs (.../SoilLayer2D.cs) (revision 4540) +++ DamEngine/trunk/src/Deltares.DamEngine.Data/Geotechnics/SoilLayer2D.cs (.../SoilLayer2D.cs) (revision 5061) @@ -52,6 +52,23 @@ } /// + /// Creates a clone of the SoilLayer2D + /// + /// The cloned SoilLayer2D + public new SoilLayer2D Clone() + { + var clonedSoilLayer2D = new SoilLayer2D + { + Soil = Soil, + Name = Name, + IsAquifer = IsAquifer, + WaterpressureInterpolationModel = WaterpressureInterpolationModel, + GeometrySurface = GeometrySurface.Clone() + }; + return clonedSoilLayer2D; + } + + /// /// Gets the geometry bounds. /// /// the geometry bounds Index: DamEngine/trunk/src/Deltares.DamEngine.Data/Geotechnics/SoilProfile2D.cs =================================================================== diff -u -r5013 -r5061 --- DamEngine/trunk/src/Deltares.DamEngine.Data/Geotechnics/SoilProfile2D.cs (.../SoilProfile2D.cs) (revision 5013) +++ DamEngine/trunk/src/Deltares.DamEngine.Data/Geotechnics/SoilProfile2D.cs (.../SoilProfile2D.cs) (revision 5061) @@ -20,7 +20,6 @@ // All rights reserved. using System.Collections.Generic; -using System.Linq; using Deltares.DamEngine.Data.Geometry; using Deltares.DamEngine.Data.Standard.Language; using Deltares.DamEngine.Data.Standard.Validation; @@ -158,6 +157,25 @@ } /// + /// Clone the soil profile 2D + /// + /// The cloned SoilProfile2D + public SoilProfile2D Clone() + { + var clonedSoilProfile2D = new SoilProfile2D + { + Name = Name + }; + foreach (SoilLayer2D surface in Surfaces) + { + SoilLayer2D clonedSurface = surface.Clone(); + clonedSoilProfile2D.Surfaces.Add(clonedSurface); + } + + return clonedSoilProfile2D; + } + + /// /// Returns a that represents this instance. /// /// Index: DamEngine/trunk/src/Deltares.DamEngine.Data/Geometry/GeometrySurface.cs =================================================================== diff -u -r4540 -r5061 --- DamEngine/trunk/src/Deltares.DamEngine.Data/Geometry/GeometrySurface.cs (.../GeometrySurface.cs) (revision 4540) +++ DamEngine/trunk/src/Deltares.DamEngine.Data/Geometry/GeometrySurface.cs (.../GeometrySurface.cs) (revision 5061) @@ -22,6 +22,7 @@ using System; using System.Collections.Generic; using System.Linq; +using Deltares.DamEngine.Data.Standard; namespace Deltares.DamEngine.Data.Geometry; @@ -186,4 +187,18 @@ bottomPoints.CalcPoints.Reverse(); return bottomPoints; } + + /// + /// Creates a clone of the geometry surface + /// + /// The cloned GeometrySurface + public GeometrySurface Clone() + { + var clonedGeometrySurface = new GeometrySurface() + { + OuterLoop = OuterLoop.Clone() + }; + clonedGeometrySurface.InnerLoops.AddRange(InnerLoops.Select(loop => loop.Clone()).ToList()); + return clonedGeometrySurface; + } } \ No newline at end of file Index: DamEngine/trunk/src/Deltares.DamEngine.Data/Geometry/GeometryLoop.cs =================================================================== diff -u -r5034 -r5061 --- DamEngine/trunk/src/Deltares.DamEngine.Data/Geometry/GeometryLoop.cs (.../GeometryLoop.cs) (revision 5034) +++ DamEngine/trunk/src/Deltares.DamEngine.Data/Geometry/GeometryLoop.cs (.../GeometryLoop.cs) (revision 5061) @@ -21,6 +21,7 @@ using System; using System.Collections.Generic; +using Deltares.DamEngine.Data.Standard; namespace Deltares.DamEngine.Data.Geometry; @@ -241,4 +242,17 @@ public NotEnoughUniquePointsException() : base("At least 3 unique points are required to determine if the loop is running clockwise.") {} } + + /// + /// Creates a clone of the geometry loop + /// + /// The cloned GeometryLoop + public override GeometryLoop Clone() + { + GeometryPointString clonedGeometryPointString = base.Clone(); + GeometryLoop clonedGeometryLoop = new GeometryLoop(); + clonedGeometryLoop.Points.AddRange(clonedGeometryPointString.Points); + clonedGeometryLoop.CurveList.AddRange(CurveList); + return clonedGeometryLoop; + } } \ No newline at end of file Index: DamEngine/trunk/src/Deltares.DamEngine.Data/Geotechnics/SoilLayer.cs =================================================================== diff -u -r4540 -r5061 --- DamEngine/trunk/src/Deltares.DamEngine.Data/Geotechnics/SoilLayer.cs (.../SoilLayer.cs) (revision 4540) +++ DamEngine/trunk/src/Deltares.DamEngine.Data/Geotechnics/SoilLayer.cs (.../SoilLayer.cs) (revision 5061) @@ -78,6 +78,23 @@ public virtual WaterpressureInterpolationModel WaterpressureInterpolationModel { get; set; } /// + /// Creates a clone of the soil layer. + /// + /// The cloned soil layer + public virtual SoilLayer Clone() + { + var clonedSoilLayer = new SoilLayer() + { + Soil = Soil, + SoilName = SoilName, + IsAquifer = IsAquifer, + WaterpressureInterpolationModel = WaterpressureInterpolationModel + }; + return clonedSoilLayer; + } + + + /// /// Validates the layer. /// ///