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);