Index: dam clients/DamUI/trunk/src/Dam/Data/DamEngineIo/FillXmlInputFromDamUi.cs =================================================================== diff -u -r480 -r484 --- dam clients/DamUI/trunk/src/Dam/Data/DamEngineIo/FillXmlInputFromDamUi.cs (.../FillXmlInputFromDamUi.cs) (revision 480) +++ dam clients/DamUI/trunk/src/Dam/Data/DamEngineIo/FillXmlInputFromDamUi.cs (.../FillXmlInputFromDamUi.cs) (revision 484) @@ -18,9 +18,32 @@ input.DamProjectType = ConversionHelper.ConvertToInputDamProjectType(damProjectData.DamProjectType); Dike dike = damProjectData.WaterBoard.Dikes[0]; TransferLocations(dike, input); + TransferSurfaceLines(dike, input); return input; } + private static void TransferSurfaceLines(Dike dike, Input input) + { + input.SurfaceLines = new SurfaceLine[dike.SurfaceLines2.Count]; + for (int i = 0; i < dike.SurfaceLines2.Count; i++) + { + var surfaceLine = dike.SurfaceLines2[i]; + var inputSurfaceLine = new SurfaceLine(); + inputSurfaceLine.Points = new SurfaceLinePoint[surfaceLine.CharacteristicPoints.Count]; + for (int j = 0; j < surfaceLine.CharacteristicPoints.Count; j++) + { + var characteristicPoint = surfaceLine.CharacteristicPoints[j]; + var inputPoint = new SurfaceLinePoint() + { + PointType = ConversionHelper.ConvertToInputPointType(characteristicPoint.CharacteristicPointType), + X = characteristicPoint.X, + Z = characteristicPoint.Z + }; + inputSurfaceLine.Points[j] = inputPoint; + } + input.SurfaceLines[i] = inputSurfaceLine; + } + } private static void TransferLocations(Dike dike, Input input) { int locationCount = dike.Locations.Count; Index: dam clients/DamUI/trunk/src/Dam/Data/DamEngineIo/FillDamUiFromXmlInput.cs =================================================================== diff -u -r480 -r484 --- dam clients/DamUI/trunk/src/Dam/Data/DamEngineIo/FillDamUiFromXmlInput.cs (.../FillDamUiFromXmlInput.cs) (revision 480) +++ dam clients/DamUI/trunk/src/Dam/Data/DamEngineIo/FillDamUiFromXmlInput.cs (.../FillDamUiFromXmlInput.cs) (revision 484) @@ -1,5 +1,9 @@ using System.Collections.Generic; using Deltares.DamEngine.Io.XmlInput; +using Deltares.Geometry; +using Deltares.Geotechnics.GeotechnicalGeometry; +using Deltares.Geotechnics.SurfaceLines; +using SurfaceLine = Deltares.DamEngine.Io.XmlInput.SurfaceLine; namespace Deltares.Dam.Data.DamEngineIo { @@ -23,9 +27,38 @@ damProjectData.WaterBoard.Dikes.Add(new Dike()); Dike dike = damProjectData.WaterBoard.Dikes[0]; TransferLocations(input, dike); + TransferSurfaceLines(input, dike); return damProjectData; } + private static void TransferSurfaceLines(Input input, Dike dike) + { + for (int i = 0; i < input.SurfaceLines.Length; i++) + { + var surfaceLine = new SurfaceLine2(); + var inputSurfaceLine = input.SurfaceLines[i]; + surfaceLine.CharacteristicPoints.Geometry = surfaceLine.Geometry; + AddPointsToSurfaceLine(inputSurfaceLine, surfaceLine); + dike.SurfaceLines2.Add(surfaceLine); + } + } + + private static void AddPointsToSurfaceLine(SurfaceLine inputSurfaceLine, SurfaceLine2 surfaceLine) + { + surfaceLine.Geometry = new LocalizedGeometryPointString(); + for (int j = 0; j < inputSurfaceLine.Points.Length; j++) + { + var inputPoint = inputSurfaceLine.Points[j]; + var geometryPoint = new GeometryPoint() + { + X = inputPoint.X, + Y = 0.0, + Z = inputPoint.Z + }; + surfaceLine.AddCharacteristicPoint(geometryPoint, ConversionHelper.ConvertToDamPointType(inputPoint.PointType)); + } + } + private static void TransferLocations(Input input, Dike dike) { for (int i = 0; i < input.Locations.Length; i++) Index: dam clients/DamUI/trunk/src/Dam/Tests/DamEngineIo/FillXmlInputFromDamUiTests.cs =================================================================== diff -u -r480 -r484 --- dam clients/DamUI/trunk/src/Dam/Tests/DamEngineIo/FillXmlInputFromDamUiTests.cs (.../FillXmlInputFromDamUiTests.cs) (revision 480) +++ dam clients/DamUI/trunk/src/Dam/Tests/DamEngineIo/FillXmlInputFromDamUiTests.cs (.../FillXmlInputFromDamUiTests.cs) (revision 484) @@ -3,6 +3,8 @@ using Deltares.Dam.Data.DamEngineIo; using Deltares.DamEngine.Io; using Deltares.DamEngine.Io.XmlInput; +using Deltares.Geometry; +using Deltares.Geotechnics.SurfaceLines; using KellermanSoftware.CompareNetObjects; using NUnit.Framework; using Location = Deltares.Dam.Data.Location; @@ -33,6 +35,7 @@ damProjectData.WaterBoard.Dikes.Add(new Dike()); Dike dike = damProjectData.WaterBoard.Dikes[0]; AddLocations(dike); + FillSurfaceLines(dike); return damProjectData; } @@ -66,6 +69,40 @@ } } + private void FillSurfaceLines(Dike dike) + { + const int surfaceLineCount = 2; + for (int i = 0; i < surfaceLineCount; i++) + { + var surfaceLine = new SurfaceLine2(); + surfaceLine.CharacteristicPoints.Geometry = surfaceLine.Geometry; + AddPointsToSurfaceLines(surfaceLine); + dike.SurfaceLines2.Add(surfaceLine); + } + } + + private void AddPointsToSurfaceLines(SurfaceLine2 surfaceLine) + { + AddPointToSurfaceLine(surfaceLine, 0.0, 0.0, CharacteristicPointType.SurfaceLevelOutside); + AddPointToSurfaceLine(surfaceLine, 2.0, 0.5, CharacteristicPointType.None); + AddPointToSurfaceLine(surfaceLine, 4.0, 0.0, CharacteristicPointType.DikeToeAtRiver); + AddPointToSurfaceLine(surfaceLine, 9.0, 5.0, CharacteristicPointType.DikeTopAtRiver); + AddPointToSurfaceLine(surfaceLine, 10.0, 5.2, CharacteristicPointType.None); + AddPointToSurfaceLine(surfaceLine, 13.0, 5.4, CharacteristicPointType.DikeTopAtPolder); + AddPointToSurfaceLine(surfaceLine, 18.0, 1.0, CharacteristicPointType.DikeToeAtPolder); + AddPointToSurfaceLine(surfaceLine, 24.0, 1.0, CharacteristicPointType.SurfaceLevelInside); + } + private void AddPointToSurfaceLine(SurfaceLine2 surfaceLine, double xCoordinate, double zCoordinate, CharacteristicPointType characteristicPointType) + { + var geometryPoint = new GeometryPoint() + { + X = xCoordinate, + Y = 0.0, + Z = zCoordinate, + }; + surfaceLine.AddCharacteristicPoint(geometryPoint, characteristicPointType); + } + private void CompareDamProjectData(DamProjectData actual, DamProjectData expected) { var compare = new CompareLogic { Config = { MaxDifferences = 100 } }; Index: dam engine/trunk/src/Deltares.DamEngine.Interface.Tests/ConversionHelperTests.cs =================================================================== diff -u -r476 -r484 --- dam engine/trunk/src/Deltares.DamEngine.Interface.Tests/ConversionHelperTests.cs (.../ConversionHelperTests.cs) (revision 476) +++ dam engine/trunk/src/Deltares.DamEngine.Interface.Tests/ConversionHelperTests.cs (.../ConversionHelperTests.cs) (revision 484) @@ -126,6 +126,7 @@ Assert.AreEqual(result, ConversionHelper.ConvertToCalculationResult(calculationResult)); } + [Test] [TestCase(ConversionHelper.CpNone, CharacteristicPointType.None)] [TestCase(ConversionHelper.CpSurfaceLevelOutside, CharacteristicPointType.SurfaceLevelOutside)] Index: dam engine/trunk/src/Deltares.DamEngine.Interface/FillXmlInputFromDam.cs =================================================================== diff -u -r478 -r484 --- dam engine/trunk/src/Deltares.DamEngine.Interface/FillXmlInputFromDam.cs (.../FillXmlInputFromDam.cs) (revision 478) +++ dam engine/trunk/src/Deltares.DamEngine.Interface/FillXmlInputFromDam.cs (.../FillXmlInputFromDam.cs) (revision 484) @@ -50,7 +50,6 @@ var surfaceLine = dike.SurfaceLines2[i]; var inputSurfaceLine = new SurfaceLine(); inputSurfaceLine.Points = new SurfaceLinePoint[surfaceLine.CharacteristicPoints.Count]; - // This is not completely correct. The geometry points should also be transferred for (int j = 0; j < surfaceLine.CharacteristicPoints.Count; j++) { var characteristicPoint = surfaceLine.CharacteristicPoints[j];