Index: dam clients/DamUI/trunk/src/Dam/Tests/DamEngineIo/FillXmlInputFromDamUiTests.cs =================================================================== diff -u -r571 -r594 --- dam clients/DamUI/trunk/src/Dam/Tests/DamEngineIo/FillXmlInputFromDamUiTests.cs (.../FillXmlInputFromDamUiTests.cs) (revision 571) +++ dam clients/DamUI/trunk/src/Dam/Tests/DamEngineIo/FillXmlInputFromDamUiTests.cs (.../FillXmlInputFromDamUiTests.cs) (revision 594) @@ -71,11 +71,11 @@ damProjectData.WaterBoard.Dikes = new List(); damProjectData.WaterBoard.Dikes.Add(new Dike()); Dike dike = damProjectData.WaterBoard.Dikes[0]; - FillSurfaceLines(dike); + var surfaceLines = CreateSurfaceLines(); FillSoils(dike); FillSoilProfiles1D(dike); FillSegments(damProjectData); - AddLocations(dike); + AddLocations(dike, surfaceLines); return damProjectData; } @@ -97,7 +97,7 @@ } } - private static void AddLocations(Dike dike) + private static void AddLocations(Dike dike, List surfaceLines) { const int locationCount = 3; for (int i = 0; i < locationCount; i++) @@ -123,7 +123,7 @@ location.HeadPL2 = 1.0 * i + 0.24; location.HeadPl3 = 1.0 * i + 0.25; location.HeadPl4 = 1.0 * i + 0.21; - location.SurfaceLine2 = dike.SurfaceLines2[i]; + location.LocalXZSurfaceLine2 = surfaceLines[i]; for (int j = 0; j < 3; j++) { var designScenario = FillDesignScenario(i * j); @@ -156,17 +156,19 @@ designScenario.RequiredSafetyFactorPiping = 1.0 * factor + 0.66; return designScenario; } - private void FillSurfaceLines(Dike dike) + private List CreateSurfaceLines() { + var surfaceLines = new List(); const int surfaceLineCount = 3; for (int i = 0; i < surfaceLineCount; i++) { var surfaceLine = new SurfaceLine2(); surfaceLine.Name = String.Format("SurfaceLine {0}", i); surfaceLine.CharacteristicPoints.Geometry = surfaceLine.Geometry; AddPointsToSurfaceLines(surfaceLine); - dike.SurfaceLines2.Add(surfaceLine); + surfaceLines.Add(surfaceLine); } + return surfaceLines; } private void AddPointsToSurfaceLines(SurfaceLine2 surfaceLine) @@ -254,7 +256,7 @@ } private void CompareDamProjectData(DamProjectData actual, DamProjectData expected) { - var compare = new CompareLogic { Config = { MaxDifferences = 100 } }; + var compare = new CompareLogic { Config = { MaxDifferences = 10 } }; compare.Config.MembersToIgnore = new List { "SheetPilePoint", Index: dam clients/DamUI/trunk/src/Dam/Data/DamEngineIo/FillDamUiFromXmlInput.cs =================================================================== diff -u -r582 -r594 --- dam clients/DamUI/trunk/src/Dam/Data/DamEngineIo/FillDamUiFromXmlInput.cs (.../FillDamUiFromXmlInput.cs) (revision 582) +++ dam clients/DamUI/trunk/src/Dam/Data/DamEngineIo/FillDamUiFromXmlInput.cs (.../FillDamUiFromXmlInput.cs) (revision 594) @@ -23,14 +23,11 @@ using System.Collections.Generic; using System.Linq; using Deltares.DamEngine.Io.XmlInput; -using Deltares.Geometry; -using Deltares.Geotechnics.GeotechnicalGeometry; using Deltares.Geotechnics.Soils; using Deltares.Geotechnics.SurfaceLines; using Deltares.Standard.Extensions; using Soil = Deltares.Geotechnics.Soils.Soil; using SoilProfile1D = Deltares.Geotechnics.Soils.SoilProfile1D; -using SoilProfile2D = Deltares.Geotechnics.Soils.SoilProfile2D; using SurfaceLine = Deltares.DamEngine.Io.XmlInput.SurfaceLine; namespace Deltares.Dam.Data.DamEngineIo @@ -55,10 +52,12 @@ damProjectData.WaterBoard.Dikes = new List(); damProjectData.WaterBoard.Dikes.Add(new Dike()); Dike dike = damProjectData.WaterBoard.Dikes[0]; - TransferSurfaceLines(input.SurfaceLines, dike.SurfaceLines2); + + var localSurfaceLines = new List(); + TransferSurfaceLines(input.SurfaceLines, localSurfaceLines); dike.SoilList = new SoilList(); TransferSoils(input.Soils, dike.SoilList); - TransferLocations(input.Locations, dike.Locations, dike.SurfaceLines2); + TransferLocations(input.Locations, dike.Locations, localSurfaceLines); TransferSoilProfiles1D(input.SoilProfiles1D, dike.SoilProfiles, dike.SoilList); TransferSegments(input.Segments, dike.SoilProfiles, damProjectData.WaterBoard.Segments); return damProjectData; @@ -118,7 +117,7 @@ } } - private static void TransferLocations(DamEngine.Io.XmlInput.Location[] inputLocations, IList dikeLocations, IList dikeSurfaceLines2) + private static void TransferLocations(DamEngine.Io.XmlInput.Location[] inputLocations, IList dikeLocations, IList dikeSurfaceLines) { for (int i = 0; i < inputLocations.Length; i++) { @@ -145,8 +144,8 @@ location.PlLineOffsetBelowDikeTopAtPolder = waternetOptions.Pl1BelowCrestPolderside; location.PlLineOffsetBelowShoulderBaseInside = waternetOptions.Pl1BelowShoulderCrestPolderside; location.PlLineOffsetBelowDikeToeAtPolder = waternetOptions.Pl1BelowToeDikePolderside; - SurfaceLine2 surfaceLine = dikeSurfaceLines2.First(n => n.Name.Equals(inputLocation.SurfaceLineName)); - location.SurfaceLine2 = surfaceLine; + SurfaceLine2 surfaceLine = dikeSurfaceLines.First(n => n.Name.Equals(inputLocation.SurfaceLineName)); + location.LocalXZSurfaceLine2 = surfaceLine; if (inputLocation.DesignScenarios != null) { for (int j = 0; j < inputLocation.DesignScenarios.Length; j++) Index: dam clients/DamUI/trunk/src/Dam/Data/DamEngineIo/FillXmlInputFromDamUi.cs =================================================================== diff -u -r582 -r594 --- dam clients/DamUI/trunk/src/Dam/Data/DamEngineIo/FillXmlInputFromDamUi.cs (.../FillXmlInputFromDamUi.cs) (revision 582) +++ dam clients/DamUI/trunk/src/Dam/Data/DamEngineIo/FillXmlInputFromDamUi.cs (.../FillXmlInputFromDamUi.cs) (revision 594) @@ -21,6 +21,7 @@ using System; using System.Collections.Generic; +using System.Linq; using Deltares.DamEngine.Io.XmlInput; using Deltares.Geotechnics.SurfaceLines; using Soil = Deltares.Geotechnics.Soils.Soil; @@ -41,21 +42,41 @@ public static Input CreateInput(DamProjectData damProjectData) { ValidateDamProjectData(damProjectData); + Input input = new Input(); input.DamProjectType = ConversionHelper.ConvertToInputDamProjectType(damProjectData.DamProjectType); Dike dike = damProjectData.WaterBoard.Dikes[0]; + + // Process locations input.Locations = new DamEngine.Io.XmlInput.Location[dike.Locations.Count]; TransferLocations(dike.Locations, input.Locations); - input.SurfaceLines = new SurfaceLine[dike.SurfaceLines2.Count]; - TransferSurfaceLines(dike.SurfaceLines2, input.SurfaceLines); + + // Process surfacelines + List localSurfaceLines = new List(); + for (int i = 0; i < dike.Locations.Count; i++) + { + var crtSurfaceLine = dike.Locations[i].LocalXZSurfaceLine2; + if (!localSurfaceLines.Any(sl => sl.Name.Equals(crtSurfaceLine.Name))) + { + localSurfaceLines.Add(crtSurfaceLine); + } + } + input.SurfaceLines = new SurfaceLine[localSurfaceLines.Count]; + TransferSurfaceLines(localSurfaceLines, input.SurfaceLines); + + // Process soils input.Soils = new DamEngine.Io.XmlInput.Soil[dike.SoilList.Soils.Count]; TransferSoils(dike.SoilList.Soils, input.Soils); + + // Process soilprofiles if (dike.SoilProfiles != null) { var profilesCount = dike.SoilProfiles.Count; input.SoilProfiles1D = new DamEngine.Io.XmlInput.SoilProfile1D[profilesCount]; TransferSoilProfiles1D(dike.SoilProfiles, input.SoilProfiles1D); } + + // Process segments if (damProjectData.WaterBoard.Segments != null) { input.Segments = new DamEngine.Io.XmlInput.Segment[damProjectData.WaterBoard.Segments.Count]; @@ -154,7 +175,7 @@ var location = dikeLocations[i]; var inputLocation = new DamEngine.Io.XmlInput.Location(); - inputLocation.SurfaceLineName = location.SurfaceLine2.Name; + inputLocation.SurfaceLineName = location.LocalXZSurfaceLine2.Name; var waternetOptions = new LocationWaternetOptions(); waternetOptions.PhreaticLineCreationMethod = ConversionHelper.ConvertToInputPhreaticLineCreationMethod(location.PLLineCreationMethod);