Index: DamEngine/trunk/src/Deltares.DamEngine.Interface/FillDamFromXmlInput.cs =================================================================== diff -u -r4669 -r4687 --- DamEngine/trunk/src/Deltares.DamEngine.Interface/FillDamFromXmlInput.cs (.../FillDamFromXmlInput.cs) (revision 4669) +++ DamEngine/trunk/src/Deltares.DamEngine.Interface/FillDamFromXmlInput.cs (.../FillDamFromXmlInput.cs) (revision 4687) @@ -807,6 +807,8 @@ soilProfile2D.Name = inputSoilProfile2D.Name; AddPreconsolidationStresses(inputSoilProfile2D, soilProfile2D); AddLayers2D(inputSoilProfile2D, soilProfile2D, soils); + soilProfile2D.Geometry.Right = soilProfile2D.Geometry.MaxGeometryPointsX; + soilProfile2D.Geometry.Left = soilProfile2D.Geometry.MinGeometryPointsX; dikeSoilProfiles.Add(soilProfile2D); } } @@ -845,27 +847,54 @@ layer.IsAquifer = inputLayer.IsAquifer; layer.WaterpressureInterpolationModel = ConversionHelper.ConvertToWaterpressureInterpolationModel( inputLayer.WaterpressureInterpolationModel); - SoilProfile2DLayer2DSurfaceOuterPoint[] loop = inputLayer.Surface.OuterLoop; - for (var j = 0; j < loop.Length; j++) + + // Add OuterLoop + SoilProfile2DLayer2DSurfaceOuterPoint[] outerLoop = inputLayer.Surface.OuterLoop; + var isStartPoint = true; + var curve = new GeometryCurve(); + for (var j = 0; j < outerLoop.Length; j++) { - var point = new Point2D(loop[j].X, loop[j].Z); + var point = new Point2D(outerLoop[j].X, outerLoop[j].Z); + if (isStartPoint) + { + curve.HeadPoint = point; + } + else + { + curve.EndPoint = point; + soilProfile2D.Geometry.Curves.Add(curve); + layer.GeometrySurface.OuterLoop.CurveList.Add(curve); + curve = new GeometryCurve(); + curve.HeadPoint = point; + } + isStartPoint = false; + soilProfile2D.Geometry.Points.Add(point); layer.GeometrySurface.OuterLoop.CalcPoints.Add(point); } - + soilProfile2D.Geometry.Loops.Add(layer.GeometrySurface.OuterLoop); + + // Add InnerLoop SoilProfile2DLayer2DSurfaceInnerPoint[] innerloop = inputLayer.Surface.Innerloop; if (innerloop != null) { - var newloop = new GeometryLoop(); - for (var j = 0; j < innerloop.Length; j++) + if (innerloop.Length > 0) { - var point = new Point2D(innerloop[j].X, innerloop[j].Z); - newloop.CalcPoints.Add(point); - } + // TODO: Add curves of innerloop to geometry + var newloop = new GeometryLoop(); + for (var j = 0; j < innerloop.Length; j++) + { + var point = new Point2D(innerloop[j].X, innerloop[j].Z); + soilProfile2D.Geometry.Points.Add(point); + newloop.CalcPoints.Add(point); + } - layer.GeometrySurface.InnerLoops.Add(newloop); + layer.GeometrySurface.InnerLoops.Add(newloop); + soilProfile2D.Geometry.Loops.Add(newloop); + } } soilProfile2D.Surfaces.Add(layer); + soilProfile2D.Geometry.Surfaces.Add(layer.GeometrySurface); } } }