Index: DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/Geometry2DImporter/SoilProfile2DImporter.cs =================================================================== diff -u -r5912 -r5918 --- DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/Geometry2DImporter/SoilProfile2DImporter.cs (.../SoilProfile2DImporter.cs) (revision 5912) +++ DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/Geometry2DImporter/SoilProfile2DImporter.cs (.../SoilProfile2DImporter.cs) (revision 5918) @@ -25,6 +25,7 @@ using System.Linq; using Deltares.Dam.StixFileReader; using Deltares.DamEngine.Data.Geometry; +using Deltares.DamEngine.Data.Standard; using Deltares.Geotechnics.Soils; using Deltares.Standard.Language; using GeometryPoint = Deltares.Geometry.GeometryPoint; @@ -142,25 +143,19 @@ for (var i = 0; i < readSoilProfile.Surfaces.Count; i++) { GeometryPointString topCurves = readSoilProfile.Surfaces[i].GeometrySurface.DetermineTopGeometrySurface(); - GeometryPoint point1 = topCurves.Points[0]; - GeometryPoint point2 = topCurves.Points[1]; - GeometryPoint point = new GeometryPoint((point1.X + point2.X) / 2, 0, (point1.Z + point2.Z) / 2); - Soil soil = FindSoilInOldSurfaces(originalSurfaces, point, xSoilGeometry2DOrigin); - if (soil == null) - { - throw new InvalidOperationException("Soil should always be found for surface " + i + " at point X =" + point.X + " point Z = " + point.Z); - } + double x = (topCurves.Points[0].X + topCurves.Points[1].X) / 2.0; + double z = (topCurves.Points[0].Z + topCurves.Points[1].Z) / 2.0; + x -= xSoilGeometry2DOrigin; + z -= GeometryConstants.Accuracy; + Soil soil = FindSoilInOldSurfaces(originalSurfaces, x, z); readSoilProfile.Surfaces[i].Soil = soil; } } - private static Soil FindSoilInOldSurfaces(List originalSurfaces, GeometryPoint point, - double xSoilGeometry2DOrigin) + private static Soil FindSoilInOldSurfaces(List originalSurfaces, double x, double z) { - //var np = new GeometryPoint(point.X, point.Y, point.Z); - GeometryPoint np = (GeometryPoint) point.Clone(); - np.X -= xSoilGeometry2DOrigin; - np.Z -= GeometryConstants.Accuracy; + var np = new GeometryPoint(x, 0, z); + foreach (var soilLayer2D in originalSurfaces) { if (soilLayer2D.GeometrySurface.OuterLoop.IsPointInLoopArea(np)) @@ -174,14 +169,13 @@ st = st + " " + geometryPoint.ToString(); } - throw new InvalidOperationException("Soil should always be found at org point X =" + np.X + " point Z = " + np.Z + - " in " + st + " for new mid point X =" + point.X + " mid point Z = " + point.Z + "with offset" + xSoilGeometry2DOrigin); - return null; + throw new InvalidOperationException("Soil should always be found at point X =" + x + " point Z = " + z + + " in " + st + "as is equal np.X = " + np.X + " np.Z = " + np.Z); } private static List AdaptGeometryForXSoilGeometry2DOrigin(SoilProfile2D profile2D, double xSoilGeometry2DOrigin) { - if (Math.Abs(xSoilGeometry2DOrigin) < GeometryConstants.Accuracy) + if (xSoilGeometry2DOrigin.IsNearEqual(GeometryConstants.Accuracy)) { return null; }