Index: Ringtoets/Piping/src/Ringtoets.Piping.Data/Segment2D.cs =================================================================== diff -u -r2da86d14cee084c7d6bfa52136d387cdcdb0a025 -r602479eb3666493485aee246d56b08958a6fc958 --- Ringtoets/Piping/src/Ringtoets.Piping.Data/Segment2D.cs (.../Segment2D.cs) (revision 2da86d14cee084c7d6bfa52136d387cdcdb0a025) +++ Ringtoets/Piping/src/Ringtoets.Piping.Data/Segment2D.cs (.../Segment2D.cs) (revision 602479eb3666493485aee246d56b08958a6fc958) @@ -3,8 +3,17 @@ namespace Ringtoets.Piping.Data { + /// + /// This class represents lines between two . + /// public class Segment2D { + /// + /// Creates a new instance of , with the set to + /// and the set to . + /// + /// The first of the . + /// The second of the . public Segment2D(Point2D first, Point2D second) { if (first == null || second == null) @@ -15,8 +24,14 @@ SecondPoint = second; } + /// + /// The first of the . + /// public Point2D FirstPoint { get; private set; } + /// + /// The second of the . + /// public Point2D SecondPoint { get; private set; } /// @@ -45,10 +60,19 @@ return Math.Abs(FirstPoint.X - SecondPoint.X) < 1e-8; } - protected bool Equals(Segment2D other) + /// + /// Determines whether two segments are connected by each other's + /// and . + /// + /// The segment which may be connected to the . + /// true if the segments are connected. false otherwise. + public bool IsConnected(Segment2D segment) { - return FirstPoint.Equals(other.FirstPoint) && SecondPoint.Equals(other.SecondPoint) || - FirstPoint.Equals(other.SecondPoint) && SecondPoint.Equals(other.FirstPoint); + return + FirstPoint.Equals(segment.FirstPoint) || + FirstPoint.Equals(segment.SecondPoint) || + SecondPoint.Equals(segment.FirstPoint) || + SecondPoint.Equals(segment.SecondPoint); } public override bool Equals(object obj) @@ -61,7 +85,7 @@ { return true; } - if (obj.GetType() != this.GetType()) + if (obj.GetType() != GetType()) { return false; } @@ -72,23 +96,14 @@ { unchecked { - return ((FirstPoint.X + SecondPoint.X).GetHashCode() * 397) ^ (FirstPoint.Y + SecondPoint.Y).GetHashCode(); + return ((FirstPoint.X + SecondPoint.X).GetHashCode()*397) ^ (FirstPoint.Y + SecondPoint.Y).GetHashCode(); } } - /// - /// Determines whether two segments are connected by each other's - /// and . - /// - /// The segment which may be connected to the . - /// true if the segments are connected. false otherwise. - public bool IsConnected(Segment2D segment) + protected bool Equals(Segment2D other) { - return - FirstPoint.Equals(segment.FirstPoint) || - FirstPoint.Equals(segment.SecondPoint) || - SecondPoint.Equals(segment.FirstPoint) || - SecondPoint.Equals(segment.SecondPoint); + return FirstPoint.Equals(other.FirstPoint) && SecondPoint.Equals(other.SecondPoint) || + FirstPoint.Equals(other.SecondPoint) && SecondPoint.Equals(other.FirstPoint); } } } \ No newline at end of file Index: Ringtoets/Piping/src/Ringtoets.Piping.IO/Calculation/Math2D.cs =================================================================== diff -u -r2da86d14cee084c7d6bfa52136d387cdcdb0a025 -r602479eb3666493485aee246d56b08958a6fc958 --- Ringtoets/Piping/src/Ringtoets.Piping.IO/Calculation/Math2D.cs (.../Math2D.cs) (revision 2da86d14cee084c7d6bfa52136d387cdcdb0a025) +++ Ringtoets/Piping/src/Ringtoets.Piping.IO/Calculation/Math2D.cs (.../Math2D.cs) (revision 602479eb3666493485aee246d56b08958a6fc958) @@ -1,6 +1,5 @@ using System; using Ringtoets.Piping.Data; -using Ringtoets.Piping.IO.Properties; namespace Ringtoets.Piping.IO.Calculation { @@ -14,27 +13,40 @@ /// public const double EpsilonForComparisons = 1e-8; + /// + /// Determines the intersection point of a line which passes through the and + /// the ; and a line which passes through the + /// and the . When the lines are parallel, then null will be returned, + /// as no intersection point exists. + /// + /// A which the first line passes through. + /// Another which the first line passes through. + /// A which the second line passes through. + /// Another which the second line passes through. + /// An with coordinates at the point where the lines intersect. Or null when no + /// intersection point exists (lines are parallel). /// /// Taken from: https://www.topcoder.com/community/data-science/data-science-tutorials/geometry-concepts-line-intersection-and-its-applications/ /// Based on https://en.wikipedia.org/wiki/Line%E2%80%93line_intersection /// - public static Point2D LineIntersectionWithLine(Point2D firstPoint, Point2D secondPoint, Point2D verticalLineFirstPoint, Point2D verticalLineSecondPoint) + public static Point2D LineIntersectionWithLine(Point2D firstPoint, Point2D secondPoint, Point2D thirdPoint, Point2D fourthPoint) { var aLine = secondPoint.Y - firstPoint.Y; var bLine = firstPoint.X - secondPoint.X; - var cLine = aLine * firstPoint.X + bLine * firstPoint.Y; + var cLine = aLine*firstPoint.X + bLine*firstPoint.Y; - var aOtherLine = verticalLineSecondPoint.Y - verticalLineFirstPoint.Y; - var bOtherLine = verticalLineFirstPoint.X - verticalLineSecondPoint.X; - var cOtherLine = aOtherLine * verticalLineFirstPoint.X + bOtherLine * verticalLineFirstPoint.Y; + var aOtherLine = fourthPoint.Y - thirdPoint.Y; + var bOtherLine = thirdPoint.X - fourthPoint.X; + var cOtherLine = aOtherLine*thirdPoint.X + bOtherLine*thirdPoint.Y; - var determinant = aLine * bOtherLine - aOtherLine * bLine; + var determinant = aLine*bOtherLine - aOtherLine*bLine; if (Math.Abs(determinant) < EpsilonForComparisons) { return null; } - return new Point2D { + return new Point2D + { X = (bOtherLine*cLine - bLine*cOtherLine)/determinant, Y = (aLine*cOtherLine - aOtherLine*cLine)/determinant }; Fisheye: Tag 602479eb3666493485aee246d56b08958a6fc958 refers to a dead (removed) revision in file `Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PointCollectionHelperTest.cs'. Fisheye: No comparison available. Pass `N' to diff? Index: Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/Ringtoets.Piping.Data.Test.csproj =================================================================== diff -u -r2da86d14cee084c7d6bfa52136d387cdcdb0a025 -r602479eb3666493485aee246d56b08958a6fc958 --- Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/Ringtoets.Piping.Data.Test.csproj (.../Ringtoets.Piping.Data.Test.csproj) (revision 2da86d14cee084c7d6bfa52136d387cdcdb0a025) +++ Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/Ringtoets.Piping.Data.Test.csproj (.../Ringtoets.Piping.Data.Test.csproj) (revision 602479eb3666493485aee246d56b08958a6fc958) @@ -60,7 +60,7 @@ - + Index: Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/Segment2DLoopCollectionHelperTest.cs =================================================================== diff -u --- Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/Segment2DLoopCollectionHelperTest.cs (revision 0) +++ Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/Segment2DLoopCollectionHelperTest.cs (revision 602479eb3666493485aee246d56b08958a6fc958) @@ -0,0 +1,64 @@ +using System; +using NUnit.Framework; +using Ringtoets.Piping.Data.TestUtil; + +namespace Ringtoets.Piping.Data.Test +{ + public class Segment2DLoopCollectionHelperTest + { + [Test] + public void CreateFromString_OnePoint_ReturnsExpectedPoints() + { + // Call + var result = Segment2DLoopCollectionHelper.CreateFromString(String.Join(Environment.NewLine, + "3", + "..1..", + ".....", + "....." + )).ToArray(); + + // Assert + Assert.AreEqual(1, result.Length); + Assert.AreEqual(2, result[0].FirstPoint.X); + Assert.AreEqual(2, result[0].FirstPoint.Y); + } + + [Test] + public void CreateFromString_TwoPoint_ReturnsExpectedPoints() + { + // Call + var result = Segment2DLoopCollectionHelper.CreateFromString(String.Join(Environment.NewLine, + "3", + "..1..", + ".....", + "....2" + )).ToArray(); + + // Assert + Assert.AreEqual(2, result.Length); + Assert.AreEqual(2, result[0].FirstPoint.X); + Assert.AreEqual(2, result[0].FirstPoint.Y); + Assert.AreEqual(4, result[0].SecondPoint.X); + Assert.AreEqual(0, result[0].SecondPoint.Y); + } + + [Test] + public void CreateFromString_TwoPointReversed_ReturnsExpectedPoints() + { + // Call + var result = Segment2DLoopCollectionHelper.CreateFromString(String.Join(Environment.NewLine, + "3", + "..2..", + ".....", + "....1" + )).ToArray(); + + // Assert + Assert.AreEqual(2, result.Length); + Assert.AreEqual(2, result[0].SecondPoint.X); + Assert.AreEqual(2, result[0].SecondPoint.Y); + Assert.AreEqual(4, result[0].FirstPoint.X); + Assert.AreEqual(0, result[0].FirstPoint.Y); + } + } +} \ No newline at end of file Index: Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/Segment2DTest.cs =================================================================== diff -u -r2da86d14cee084c7d6bfa52136d387cdcdb0a025 -r602479eb3666493485aee246d56b08958a6fc958 --- Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/Segment2DTest.cs (.../Segment2DTest.cs) (revision 2da86d14cee084c7d6bfa52136d387cdcdb0a025) +++ Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/Segment2DTest.cs (.../Segment2DTest.cs) (revision 602479eb3666493485aee246d56b08958a6fc958) @@ -220,7 +220,7 @@ } [Test] - public void IsConnected_ThreeSegments_AreAllConnected() + public void IsConnected_ThreeConnectedSegments_AreAllConnected() { // Setup var random = new Random(22); @@ -250,7 +250,7 @@ } [Test] - public void IsConnected_ThreeSegments_AreAllDisconnected() + public void IsConnected_TwoSeperateSegments_AreDisconnected() { // Setup var random = new Random(22); Fisheye: Tag 602479eb3666493485aee246d56b08958a6fc958 refers to a dead (removed) revision in file `Ringtoets/Piping/test/Ringtoets.Piping.Data.TestUtil/PointCollectionHelper.cs'. Fisheye: No comparison available. Pass `N' to diff? Index: Ringtoets/Piping/test/Ringtoets.Piping.Data.TestUtil/Ringtoets.Piping.Data.TestUtil.csproj =================================================================== diff -u -ra950714ad9510756331d862aa35695fa0b2ed03b -r602479eb3666493485aee246d56b08958a6fc958 --- Ringtoets/Piping/test/Ringtoets.Piping.Data.TestUtil/Ringtoets.Piping.Data.TestUtil.csproj (.../Ringtoets.Piping.Data.TestUtil.csproj) (revision a950714ad9510756331d862aa35695fa0b2ed03b) +++ Ringtoets/Piping/test/Ringtoets.Piping.Data.TestUtil/Ringtoets.Piping.Data.TestUtil.csproj (.../Ringtoets.Piping.Data.TestUtil.csproj) (revision 602479eb3666493485aee246d56b08958a6fc958) @@ -40,7 +40,7 @@ - + Index: Ringtoets/Piping/test/Ringtoets.Piping.Data.TestUtil/Segment2DLoopCollectionHelper.cs =================================================================== diff -u --- Ringtoets/Piping/test/Ringtoets.Piping.Data.TestUtil/Segment2DLoopCollectionHelper.cs (revision 0) +++ Ringtoets/Piping/test/Ringtoets.Piping.Data.TestUtil/Segment2DLoopCollectionHelper.cs (revision 602479eb3666493485aee246d56b08958a6fc958) @@ -0,0 +1,99 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text.RegularExpressions; + +namespace Ringtoets.Piping.Data.TestUtil +{ + /// + /// The class helps to construct collections of points by reading a string (from file or directly) and + /// transforming this in objects that can be used in tests. + /// + public static class Segment2DLoopCollectionHelper + { + /// + /// Creates a loop from a given string. The string needs to be formatted as follows. + /// + /// First line contains the number of lines (n). + /// The n following lines contain a number of digits. + /// Each digit is a point and should be unique. + /// + /// Example string: + /// + /// "3" + Environment.NewLine + + /// "..1.." + Environment.NewLine + + /// "3...." + Environment.NewLine + + /// "...2." + /// + /// + /// The (correctly formatted) string representing a grid with points. + /// The of which describe a loop. + public static List CreateFromString(string s) + { + var points = new SortedDictionary(); + var lines = s.Split(new [] { Environment.NewLine }, StringSplitOptions.None); + var height = int.Parse(lines[0]); + var lineIndex = 1; + for (int y = height - 1; y >= 0; y--, lineIndex++) + { + foreach (var tuple in AllIndexesOfDigit(lines[lineIndex])) + { + points.Add(tuple.Item1,new Point2D + { + X = tuple.Item2, Y = y + }); + } + } + return CreateLoop(points); + } + + private static List CreateLoop(SortedDictionary points) + { + List loop = new List(points.Count); + var count = points.Values.Count; + for (int i = 0; i < count; i++) + { + var firstPoint = points.Values.ElementAt(i); + var secondPoint = points.Values.ElementAt((i+1)%count); + loop.Add(new Segment2D(firstPoint,secondPoint)); + } + return loop; + } + + /// + /// Returns a of if . + /// The first item in the tuple contains the digit and the second item contains its index. + /// + /// The line which contains digits. + /// A of of + /// which contains the digits and the index of those digits. + /// Thrown when the regex magically matches more or less than it should + /// have (1 digit). + private static IEnumerable> AllIndexesOfDigit(string line) + { + var guess = @"\d"; + var matches = Regex.Matches(line, guess); + foreach (Match match in matches) + { + int digit; + try + { + digit = int.Parse(match.Value); + } + catch (ArgumentNullException e) + { + throw new Exception(e.Message,e); + } + catch (FormatException e) + { + throw new Exception(e.Message, e); + } + catch (OverflowException e) + { + throw new Exception(e.Message, e); + } + yield return Tuple.Create(digit, match.Index); + } + } + } +} Index: Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/Builders/SoilLayer2DTest.cs =================================================================== diff -u -r2da86d14cee084c7d6bfa52136d387cdcdb0a025 -r602479eb3666493485aee246d56b08958a6fc958 --- Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/Builders/SoilLayer2DTest.cs (.../SoilLayer2DTest.cs) (revision 2da86d14cee084c7d6bfa52136d387cdcdb0a025) +++ Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/Builders/SoilLayer2DTest.cs (.../SoilLayer2DTest.cs) (revision 602479eb3666493485aee246d56b08958a6fc958) @@ -127,7 +127,7 @@ public void AsPipingSoilLayers_OuterLoopComplex_ReturnsTwoLayers() { // Setup - var outerLoop = PointCollectionHelper.CreateFromString(String.Join(Environment.NewLine, + var outerLoop = Segment2DLoopCollectionHelper.CreateFromString(String.Join(Environment.NewLine, "6", "..1..2..", "........", @@ -155,7 +155,7 @@ public void AsPipingSoilLayers_OuterLoopInnerLoopSimple_ReturnsTwoLayers() { // Setup - var outerLoop = PointCollectionHelper.CreateFromString(String.Join(Environment.NewLine, + var outerLoop = Segment2DLoopCollectionHelper.CreateFromString(String.Join(Environment.NewLine, "6", "..1..2..", "........", @@ -164,7 +164,7 @@ "........", "..4..3..")); - var innerLoop = PointCollectionHelper.CreateFromString(String.Join(Environment.NewLine, + var innerLoop = Segment2DLoopCollectionHelper.CreateFromString(String.Join(Environment.NewLine, "6", "........", "...12...", @@ -193,7 +193,7 @@ public void AsPipingSoilLayers_OuterLoopInnerLoopComplex_ReturnsThreeLayers() { // Setup - var outerLoop = PointCollectionHelper.CreateFromString(String.Join(Environment.NewLine, + var outerLoop = Segment2DLoopCollectionHelper.CreateFromString(String.Join(Environment.NewLine, "6", "..1..2..", "........", @@ -202,7 +202,7 @@ "........", "..4..3..")); - var innerLoop = PointCollectionHelper.CreateFromString(String.Join(Environment.NewLine, + var innerLoop = Segment2DLoopCollectionHelper.CreateFromString(String.Join(Environment.NewLine, "6", "........", "...1.2..", @@ -231,7 +231,7 @@ public void AsPipingSoilLayers_OuterLoopMultipleInnerLoops_ReturnsThreeLayers() { // Setup - var outerLoop = PointCollectionHelper.CreateFromString(String.Join(Environment.NewLine, + var outerLoop = Segment2DLoopCollectionHelper.CreateFromString(String.Join(Environment.NewLine, "6", "..1..2..", "........", @@ -240,7 +240,7 @@ "........", "..4..3..")); - var innerLoop = PointCollectionHelper.CreateFromString(String.Join(Environment.NewLine, + var innerLoop = Segment2DLoopCollectionHelper.CreateFromString(String.Join(Environment.NewLine, "6", "........", "...12...", @@ -249,7 +249,7 @@ "........", "........")); - var innerLoop2 = PointCollectionHelper.CreateFromString(String.Join(Environment.NewLine, + var innerLoop2 = Segment2DLoopCollectionHelper.CreateFromString(String.Join(Environment.NewLine, "6", "........", "........", @@ -279,7 +279,7 @@ public void AsPipingSoilLayers_OuterLoopOverlappingInnerLoop_ReturnsOneLayer() { // Setup - var outerLoop = PointCollectionHelper.CreateFromString(String.Join(Environment.NewLine, + var outerLoop = Segment2DLoopCollectionHelper.CreateFromString(String.Join(Environment.NewLine, "6", "..1..2..", "........", @@ -288,7 +288,7 @@ ".4....3.", "........")); - var innerLoop = PointCollectionHelper.CreateFromString(String.Join(Environment.NewLine, + var innerLoop = Segment2DLoopCollectionHelper.CreateFromString(String.Join(Environment.NewLine, "6", "........", "........", @@ -317,7 +317,7 @@ public void AsPipingSoilLayers_OuterLoopOverlappingInnerLoopsFirstInnerLoopNotOverBottom_ReturnsOneLayer() { // Setup - var outerLoop = PointCollectionHelper.CreateFromString(String.Join(Environment.NewLine, + var outerLoop = Segment2DLoopCollectionHelper.CreateFromString(String.Join(Environment.NewLine, "6", "..1..2..", "........", @@ -326,7 +326,7 @@ ".4....3.", "........")); - var innerLoop = PointCollectionHelper.CreateFromString(String.Join(Environment.NewLine, + var innerLoop = Segment2DLoopCollectionHelper.CreateFromString(String.Join(Environment.NewLine, "6", "........", "...12...", @@ -335,7 +335,7 @@ "........", "........")); - var innerLoop2 = PointCollectionHelper.CreateFromString(String.Join(Environment.NewLine, + var innerLoop2 = Segment2DLoopCollectionHelper.CreateFromString(String.Join(Environment.NewLine, "6", "........", "........", @@ -365,7 +365,7 @@ public void AsPipingSoilLayers_OuterLoopInnerLoopOnBorderBottom_ReturnsTwoLayers() { // Setup - var outerLoop = PointCollectionHelper.CreateFromString(String.Join(Environment.NewLine, + var outerLoop = Segment2DLoopCollectionHelper.CreateFromString(String.Join(Environment.NewLine, "6", "..1..2..", "........", @@ -374,7 +374,7 @@ ".4....3.", "........")); - var innerLoop = PointCollectionHelper.CreateFromString(String.Join(Environment.NewLine, + var innerLoop = Segment2DLoopCollectionHelper.CreateFromString(String.Join(Environment.NewLine, "6", "........", "........", @@ -403,7 +403,7 @@ public void AsPipingSoilLayers_OuterLoopInnerLoopOverlapTop_ReturnsOneLayer() { // Setup - var outerLoop = PointCollectionHelper.CreateFromString(String.Join(Environment.NewLine, + var outerLoop = Segment2DLoopCollectionHelper.CreateFromString(String.Join(Environment.NewLine, "6", "........", "..1..2..", @@ -412,7 +412,7 @@ ".4....3.", "........")); - var innerLoop = PointCollectionHelper.CreateFromString(String.Join(Environment.NewLine, + var innerLoop = Segment2DLoopCollectionHelper.CreateFromString(String.Join(Environment.NewLine, "6", "...43...", "........", @@ -441,7 +441,7 @@ public void AsPipingSoilLayers_OuterLoopInnerLoopOnBorderTop_ReturnsOneLayer() { // Setup - var outerLoop = PointCollectionHelper.CreateFromString(String.Join(Environment.NewLine, + var outerLoop = Segment2DLoopCollectionHelper.CreateFromString(String.Join(Environment.NewLine, "6", "..1..2..", "........", @@ -450,7 +450,7 @@ ".4....3.", "........")); - var innerLoop = PointCollectionHelper.CreateFromString(String.Join(Environment.NewLine, + var innerLoop = Segment2DLoopCollectionHelper.CreateFromString(String.Join(Environment.NewLine, "6", "...43...", "........", @@ -480,7 +480,7 @@ { // Setup var atX = 2.0; - var outerLoop = PointCollectionHelper.CreateFromString(String.Join(Environment.NewLine, + var outerLoop = Segment2DLoopCollectionHelper.CreateFromString(String.Join(Environment.NewLine, "6", "..1..2..", "........", @@ -508,7 +508,7 @@ { // Setup var atX = 3.0; - var outerLoop = PointCollectionHelper.CreateFromString(String.Join(Environment.NewLine, + var outerLoop = Segment2DLoopCollectionHelper.CreateFromString(String.Join(Environment.NewLine, "6", "..1..2..", "........", @@ -517,7 +517,7 @@ "........", "..4..3..")); - var innerLoop = PointCollectionHelper.CreateFromString(String.Join(Environment.NewLine, + var innerLoop = Segment2DLoopCollectionHelper.CreateFromString(String.Join(Environment.NewLine, "6", "........", "...1.2..", Index: Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/Builders/SoilProfileBuilder2DTest.cs =================================================================== diff -u -r2da86d14cee084c7d6bfa52136d387cdcdb0a025 -r602479eb3666493485aee246d56b08958a6fc958 --- Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/Builders/SoilProfileBuilder2DTest.cs (.../SoilProfileBuilder2DTest.cs) (revision 2da86d14cee084c7d6bfa52136d387cdcdb0a025) +++ Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/Builders/SoilProfileBuilder2DTest.cs (.../SoilProfileBuilder2DTest.cs) (revision 602479eb3666493485aee246d56b08958a6fc958) @@ -104,7 +104,7 @@ var builder = new SoilProfileBuilder2D(profileName, 1.0); builder.Add(new SoilLayer2D { - OuterLoop = PointCollectionHelper.CreateFromString(String.Join(Environment.NewLine, + OuterLoop = Segment2DLoopCollectionHelper.CreateFromString(String.Join(Environment.NewLine, "10", "...", "...", @@ -119,7 +119,7 @@ )) }).Add(new SoilLayer2D { - OuterLoop = PointCollectionHelper.CreateFromString(String.Join(Environment.NewLine, + OuterLoop = Segment2DLoopCollectionHelper.CreateFromString(String.Join(Environment.NewLine, "10", "...", "...", @@ -134,7 +134,7 @@ )) }).Add(new SoilLayer2D { - OuterLoop = PointCollectionHelper.CreateFromString(String.Join(Environment.NewLine, + OuterLoop = Segment2DLoopCollectionHelper.CreateFromString(String.Join(Environment.NewLine, "10", "...", "1.2", @@ -167,7 +167,7 @@ // Setup var profileName = "SomeProfile"; var builder = new SoilProfileBuilder2D(profileName, 2.0); - var loopHole = PointCollectionHelper.CreateFromString(String.Join(Environment.NewLine, + var loopHole = Segment2DLoopCollectionHelper.CreateFromString(String.Join(Environment.NewLine, "5", ".....", ".4.1.", @@ -177,7 +177,7 @@ )); var soilLayer2D = new SoilLayer2D { - OuterLoop = PointCollectionHelper.CreateFromString(String.Join(Environment.NewLine, + OuterLoop = Segment2DLoopCollectionHelper.CreateFromString(String.Join(Environment.NewLine, "5", "2...3", ".....",