Index: DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/DamEngineIo/FillXmlInputFromDamUi.cs =================================================================== diff -u -r6203 -r6283 --- DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/DamEngineIo/FillXmlInputFromDamUi.cs (.../FillXmlInputFromDamUi.cs) (revision 6203) +++ DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/DamEngineIo/FillXmlInputFromDamUi.cs (.../FillXmlInputFromDamUi.cs) (revision 6283) @@ -82,26 +82,16 @@ input.Locations = new DamEngine.Io.XmlInput.Location[filteredJobs.Count]; TransferLocations(filteredLocations, input.Locations); - // Process surfacelines - var localSurfaceLines = new List(); - for (var i = 0; i < filteredLocations.Count; i++) - { - SurfaceLine2 crtSurfaceLine = filteredLocations[i].LocalXZSurfaceLine2; - if (!localSurfaceLines.Any(sl => sl.Name.Equals(crtSurfaceLine.Name))) - { - localSurfaceLines.Add(crtSurfaceLine); - } - } + // Process surface lines + List usedSurfaceLines = DetermineUsedSurfaceLines(filteredLocations); + input.SurfaceLines = new SurfaceLine[usedSurfaceLines.Count]; + TransferSurfaceLines(usedSurfaceLines, input.SurfaceLines); - 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 - IList localSegments = EnsureInputLocationsSegmentsAreInSegments(damProjectData.WaterBoard.Segments, filteredLocations); // Fill 1D profiles in case of DamClassicStability if (dike.SoilProfiles != null) { @@ -113,12 +103,13 @@ input.SoilProfiles2D = soilProfiles2DToSerialize.ToArray(); TransferTrafficLoadDegreeOfConsolidation(dike.TrafficLoadDegreeOfConsolidations, input); - + // Process segments - if (localSegments != null) + IList usedSegments = DetermineUsedSegments(filteredLocations); + if (usedSegments != null) { - input.Segments = new DamEngine.Io.XmlInput.Segment[localSegments.Count]; - TransferSegments(localSegments, input.Segments); + input.Segments = new DamEngine.Io.XmlInput.Segment[usedSegments.Count]; + TransferSegments(usedSegments, input.Segments); } if (damProjectData.InputTimeSerieCollection != null) @@ -136,25 +127,38 @@ return input; } - private static IList EnsureInputLocationsSegmentsAreInSegments(IList segments, List localLocations) + private static IList DetermineUsedSegments(List localLocations) { - var localSegments = new List(); - localSegments.AddRange(segments); - foreach (Location localLocation in localLocations) + var usedSegments = new List(); + foreach (Location location in localLocations) { - Segment seg = localSegments.FirstOrDefault(x => x.Name == localLocation.Segment.Name); - if (seg == null) + if (!usedSegments.Any(sl => sl.Name.Equals(location.Segment.Name))) { - localSegments.Add(localLocation.Segment); + usedSegments.Add(location.Segment); } } - return localSegments; + return usedSegments; } + + private static List DetermineUsedSurfaceLines(IList locations) + { + var usedSurfaceLines = new List(); + foreach (Location location in locations) + { + SurfaceLine2 crtSurfaceLine = location.LocalXZSurfaceLine2; + if (!usedSurfaceLines.Any(sl => sl.Name.Equals(crtSurfaceLine.Name))) + { + usedSurfaceLines.Add(crtSurfaceLine); + } + } + return usedSurfaceLines; + } + private static void TransferSensorData(SensorData sensorData, InputSensorData inputSensorData) { - // Transfer sensorgroups + // Transfer sensor groups var sensorGroupIndex = 0; inputSensorData.SensorGroups = new SensorGroup[sensorData.SensorGroups.Count]; foreach (Group sensorGroup in sensorData.SensorGroups) @@ -176,7 +180,7 @@ sensorGroupIndex++; } - // Transfer sensorlocations + // Transfer sensor locations var senserLocationIndex = 0; inputSensorData.SensorLocations = new SensorLocation[sensorData.SensorLocations.Count]; foreach (Sensors.SensorLocation sensorLocation in sensorData.SensorLocations) @@ -417,8 +421,8 @@ } } - private static void TransferSoils(List soils, DamEngine.Io.XmlInput.Soil[] inputSoils) - { + private static void TransferSoils(List soils, DamEngine.Io.XmlInput.Soil[] inputSoils) { + for (var i = 0; i < soils.Count; i++) { Soil soil = soils[i];