Index: DamEngine/trunk/src/Deltares.DamEngine.TestHelpers/Geometry/PersistableGeometry.cs
===================================================================
diff -u
--- DamEngine/trunk/src/Deltares.DamEngine.TestHelpers/Geometry/PersistableGeometry.cs (revision 0)
+++ DamEngine/trunk/src/Deltares.DamEngine.TestHelpers/Geometry/PersistableGeometry.cs (revision 4871)
@@ -0,0 +1,66 @@
+// Copyright (C) Stichting Deltares 2024. All rights reserved.
+//
+// This file is part of the Dam Engine.
+//
+// The Dam Engine is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+//
+// All names, logos, and references to "Deltares" are registered trademarks of
+// Stichting Deltares and remain full property of Stichting Deltares at all times.
+// All rights reserved.
+
+using System.Collections.Generic;
+
+namespace Deltares.DamEngine.TestHelpers.Geometry;
+
+///
+/// Persistable Geometry object (for json serialization)
+///
+public class PersistableGeometry
+{
+ public List Surfaces { get; set; }
+}
+
+///
+/// Persistable Surface object (for json serialization)
+///
+public class PersistableSurface
+{
+ public PersistableOuterLoop OuterLoop { get; set; }
+}
+
+///
+/// Persistable Outerloop object (for json serialization)
+///
+public class PersistableOuterLoop
+{
+ public List Curves { get; set; }
+}
+
+///
+/// Persistable Curve object (for json serialization)
+///
+public class PersistableCurve
+{
+ public PersistablePoint HeadPoint { get; set; }
+ public PersistablePoint EndPoint { get; set; }
+}
+
+///
+/// Persistable Point object (for json serialization)
+///
+public class PersistablePoint
+{
+ public double X { get; set; }
+ public double Z { get; set; }
+}
\ No newline at end of file
Index: DamEngine/trunk/src/Deltares.DamEngine.TestHelpers/Geometry/GeometryExporter.cs
===================================================================
diff -u
--- DamEngine/trunk/src/Deltares.DamEngine.TestHelpers/Geometry/GeometryExporter.cs (revision 0)
+++ DamEngine/trunk/src/Deltares.DamEngine.TestHelpers/Geometry/GeometryExporter.cs (revision 4871)
@@ -0,0 +1,107 @@
+// Copyright (C) Stichting Deltares 2024. All rights reserved.
+//
+// This file is part of the Dam Engine.
+//
+// The Dam Engine is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+//
+// All names, logos, and references to "Deltares" are registered trademarks of
+// Stichting Deltares and remain full property of Stichting Deltares at all times.
+// All rights reserved.
+
+using System.IO;
+using System.Text.Json;
+using Deltares.DamEngine.Data.Geometry;
+
+namespace Deltares.DamEngine.TestHelpers.Geometry;
+
+///
+/// Export the geometry to a file
+///
+public static class GeometryExporter
+{
+ ///
+ /// Export the geometry to a json file
+ ///
+ ///
+ ///
+ public static void ExportToJsonFile(GeometryData geometry, string fileName)
+ {
+ var jsonSerializerOptions = new JsonSerializerOptions
+ {
+ WriteIndented = true
+ };
+ PersistableGeometry persistableGeometry = GeometryExporterHelper.CreateFromGeometryData(geometry);
+ string output = JsonSerializer.Serialize(persistableGeometry, jsonSerializerOptions);
+ // Save output to text file
+ File.WriteAllText(fileName, output);
+ }
+
+ ///
+ /// Export the geometry to a text file
+ ///
+ ///
+ ///
+ public static void ExportToFile(GeometryData geometry, string fileName)
+ {
+ using (var writer = new StreamWriter(fileName))
+ {
+ // Export points
+ writer.WriteLine("[BEGIN POINTS]");
+ foreach (Point2D point in geometry.Points)
+ {
+ writer.WriteLine($"{point.X}, {point.Z}");
+ }
+
+ writer.WriteLine("[END POINTS]");
+
+ // Export curves
+ writer.WriteLine("[BEGIN CURVES]");
+ foreach (GeometryCurve curve in geometry.Curves)
+ {
+ writer.WriteLine($"Curve: ({curve.HeadPoint.X}, {curve.HeadPoint.Z}) - ({curve.EndPoint.X}, {curve.EndPoint.Z})");
+ }
+
+ writer.WriteLine("[END CURVES]");
+
+ // Export surfaces
+ writer.WriteLine("[BEGIN SURFACES]");
+ foreach (GeometrySurface surface in geometry.Surfaces)
+ {
+ // Outerloop
+ writer.WriteLine($"Surface: {surface.Name}");
+ writer.WriteLine($"OuterLoop: {surface.OuterLoop.Name}");
+ foreach (GeometryCurve curve in surface.OuterLoop.CurveList)
+ {
+ writer.WriteLine($"({curve.HeadPoint.X}, {curve.HeadPoint.Z}) - ({curve.EndPoint.X}, {curve.EndPoint.Z})");
+ }
+
+ writer.WriteLine("");
+
+ // Innerloops
+ foreach (GeometryLoop innerLoop in surface.InnerLoops)
+ {
+ writer.WriteLine($"InnerLoop: {innerLoop.Name}");
+ foreach (GeometryCurve curve in innerLoop.CurveList)
+ {
+ writer.WriteLine($"Curve: ({curve.HeadPoint.X}, {curve.HeadPoint.Z}) - ({curve.EndPoint.X}, {curve.EndPoint.Z})");
+ }
+
+ writer.WriteLine("");
+ }
+ }
+
+ writer.WriteLine("[END SURFACES]");
+ }
+ }
+}
\ No newline at end of file
Index: DamEngine/trunk/src/Deltares.DamEngine.TestHelpers/Geometry/GeometryExporterHelper.cs
===================================================================
diff -u
--- DamEngine/trunk/src/Deltares.DamEngine.TestHelpers/Geometry/GeometryExporterHelper.cs (revision 0)
+++ DamEngine/trunk/src/Deltares.DamEngine.TestHelpers/Geometry/GeometryExporterHelper.cs (revision 4871)
@@ -0,0 +1,68 @@
+// Copyright (C) Stichting Deltares 2024. All rights reserved.
+//
+// This file is part of the Dam Engine.
+//
+// The Dam Engine is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+//
+// All names, logos, and references to "Deltares" are registered trademarks of
+// Stichting Deltares and remain full property of Stichting Deltares at all times.
+// All rights reserved.
+
+using System.Linq;
+using Deltares.DamEngine.Data.Geometry;
+
+namespace Deltares.DamEngine.TestHelpers.Geometry;
+
+///
+/// Helper class for exporting geometry
+///
+public static class GeometryExporterHelper
+{
+ ///
+ /// Create a persistable geometry object from a GeometryData object
+ ///
+ ///
+ ///
+ public static PersistableGeometry CreateFromGeometryData(GeometryData geometry)
+ {
+ var persistableGeometry = new PersistableGeometry
+ {
+ Surfaces = []
+ };
+ foreach (GeometrySurface surface in geometry.Surfaces)
+ {
+ persistableGeometry.Surfaces.Add(new PersistableSurface
+ {
+ OuterLoop = new PersistableOuterLoop
+ {
+ Curves = surface.OuterLoop.CurveList.Select(curve => new PersistableCurve
+ {
+ HeadPoint = new PersistablePoint
+ {
+ X = curve.HeadPoint.X,
+ Z = curve.HeadPoint.Z
+ },
+ EndPoint = new PersistablePoint
+ {
+ X = curve.EndPoint.X,
+ Z = curve.EndPoint.Z
+ }
+ }).ToList()
+ }
+ });
+ }
+
+ return persistableGeometry;
+ }
+}
\ No newline at end of file