Index: DamEngine/trunk/src/Deltares.DamEngine.Interface/FillDamFromXmlInput.cs =================================================================== diff -u -r5498 -r5539 --- DamEngine/trunk/src/Deltares.DamEngine.Interface/FillDamFromXmlInput.cs (.../FillDamFromXmlInput.cs) (revision 5498) +++ DamEngine/trunk/src/Deltares.DamEngine.Interface/FillDamFromXmlInput.cs (.../FillDamFromXmlInput.cs) (revision 5539) @@ -869,7 +869,7 @@ inputLayer.WaterpressureInterpolationModel); // Add OuterLoop - AddOuterLoopToSoilProfile2DFromLayer2D(soilProfile2D, inputLayer, layer); + AddOuterLoopToSoilProfile2DFromLayer2D(soilProfile2D.Geometry, inputLayer.Surface.OuterLoop, layer.GeometrySurface.OuterLoop); // Add InnerLoop AddInnerLoopToSoilProfile2DFromLayer2D(soilProfile2D, inputLayer, layer); @@ -902,15 +902,15 @@ } } - private static void AddOuterLoopToSoilProfile2DFromLayer2D(SoilProfile2D soilProfile2D, SoilProfile2DLayer2D inputLayer, SoilLayer2D layer) + private static void AddOuterLoopToSoilProfile2DFromLayer2D(GeometryData geometry, SoilProfile2DLayer2DSurfaceOuterPoint[] inputOuterLoop , + GeometryLoop outputOuterLoop) { - SoilProfile2DLayer2DSurfaceOuterPoint[] outerLoop = inputLayer.Surface.OuterLoop; var isStartPoint = true; var curve = new GeometryCurve(); var firstPoint = new Point2D(); - for (var j = 0; j < outerLoop.Length; j++) + for (var j = 0; j < inputOuterLoop.Length; j++) { - var point = new Point2D(outerLoop[j].X, outerLoop[j].Z); + var point = new Point2D(inputOuterLoop[j].X, inputOuterLoop[j].Z); if (isStartPoint) { curve.HeadPoint = point; @@ -919,50 +919,51 @@ else { curve.EndPoint = point; - var existingCurve = GeometryHelper.DoesCurveExist(soilProfile2D.Geometry, curve); - if (existingCurve == null) - { - soilProfile2D.Geometry.Curves.Add(curve); - layer.GeometrySurface.OuterLoop.CurveList.Add(curve); - } - else - { - layer.GeometrySurface.OuterLoop.CurveList.Add(existingCurve); - } + AddCurveToSoilProfile2D(geometry, outputOuterLoop, curve); curve = new GeometryCurve(); curve.HeadPoint = point; } - if (j == outerLoop.Length - 1) + if (j == inputOuterLoop.Length - 1) { curve.EndPoint = firstPoint; - var existingCurve = GeometryHelper.DoesCurveExist(soilProfile2D.Geometry, curve); - if (existingCurve == null) - { - soilProfile2D.Geometry.Curves.Add(curve); - layer.GeometrySurface.OuterLoop.CurveList.Add(curve); - } - else - { - layer.GeometrySurface.OuterLoop.CurveList.Add(existingCurve); - } + AddCurveToSoilProfile2D(geometry, outputOuterLoop, curve); } isStartPoint = false; - var existingPoint = soilProfile2D.Geometry.GetPointAtLocation(point); - if (existingPoint == null) - { - soilProfile2D.Geometry.Points.Add(point); - layer.GeometrySurface.OuterLoop.CalcPoints.Add(point); - } - else - { - layer.GeometrySurface.OuterLoop.CalcPoints.Add(existingPoint); - } + AddPointToSoilProfile2D(geometry, outputOuterLoop, point); } - soilProfile2D.Geometry.Loops.Add(layer.GeometrySurface.OuterLoop); + geometry.Loops.Add(outputOuterLoop); } + private static void AddPointToSoilProfile2D(GeometryData geometry, GeometryLoop outputOuterLoop, Point2D point) + { + var existingPoint = geometry.GetPointAtLocation(point); + if (existingPoint == null) + { + geometry.Points.Add(point); + outputOuterLoop.CalcPoints.Add(point); + } + else + { + outputOuterLoop.CalcPoints.Add(existingPoint); + } + } + + private static void AddCurveToSoilProfile2D(GeometryData geometry, GeometryLoop outputOuterLoop, GeometryCurve curve) + { + var existingCurve = GeometryHelper.DoesCurveExist(geometry, curve); + if (existingCurve == null) + { + geometry.Curves.Add(curve); + outputOuterLoop.CurveList.Add(curve); + } + else + { + outputOuterLoop.CurveList.Add(existingCurve); + } + } + private static void TransferSegments(Io.XmlInput.Segment[] inputSegments, IList segments) { for (var i = 0; i < inputSegments.Length; i++)