From a5093a97c1dd332bb456b3111b5b76019615932f Mon Sep 17 00:00:00 2001 From: AlexKosterDeltares Date: Tue, 1 Jul 2025 10:25:17 +0200 Subject: [PATCH 1/3] Added polygon to Mesh2dMergeAndConnectMeshes --- Nuget.config | 30 ++++++++++++++++++++ src/MeshKernelNET/Api/IMeshKernelApi.cs | 3 +- src/MeshKernelNET/Api/MeshKernelApi.cs | 3 +- test/MeshKernelNETTest/Api/MeshKernelTest.cs | 3 +- 4 files changed, 36 insertions(+), 3 deletions(-) create mode 100644 Nuget.config diff --git a/Nuget.config b/Nuget.config new file mode 100644 index 0000000..a5b0fde --- /dev/null +++ b/Nuget.config @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/MeshKernelNET/Api/IMeshKernelApi.cs b/src/MeshKernelNET/Api/IMeshKernelApi.cs index d4c0013..4e2d325 100644 --- a/src/MeshKernelNET/Api/IMeshKernelApi.cs +++ b/src/MeshKernelNET/Api/IMeshKernelApi.cs @@ -1013,9 +1013,10 @@ int Mesh2dComputeOrthogonalization(int meshKernelId, /// /// Id of the mesh state pertaining to the current domain /// The mesh to merge to the current domain + /// Input polygon to define the region of the operation. Can be empty -> whole meshes are considered /// Fraction of the shortest edge (along an edge to be connected) to use when determining neighbour edge closeness /// Error code - int Mesh2dMergeAndConnectMeshes(int meshKernelId, in DisposableMesh2D disposableMesh2D, double searchFraction); + int Mesh2dMergeAndConnectMeshes(int meshKernelId, in DisposableMesh2D disposableMesh2D,DisposableGeometryList geometryListPolygon, double searchFraction); /// /// Converts the projection of a mesh2d diff --git a/src/MeshKernelNET/Api/MeshKernelApi.cs b/src/MeshKernelNET/Api/MeshKernelApi.cs index 35a5a13..3f9150c 100644 --- a/src/MeshKernelNET/Api/MeshKernelApi.cs +++ b/src/MeshKernelNET/Api/MeshKernelApi.cs @@ -950,11 +950,12 @@ public int Mesh2dMergeMeshes(int meshKernelId, false); } - public int Mesh2dMergeAndConnectMeshes(int meshKernelId, in DisposableMesh2D disposableMesh2D, double searchFraction) + public int Mesh2dMergeAndConnectMeshes(int meshKernelId, in DisposableMesh2D disposableMesh2D,DisposableGeometryList geometryListPolygon, double searchFraction) { Mesh2DNative mesh2D = disposableMesh2D.CreateNativeObject(); return MeshKernelDll.Mesh2dConnectMeshes(meshKernelId, ref mesh2D, + geometryListPolygon, searchFraction, true); } diff --git a/test/MeshKernelNETTest/Api/MeshKernelTest.cs b/test/MeshKernelNETTest/Api/MeshKernelTest.cs index 91121db..cfc51f7 100644 --- a/test/MeshKernelNETTest/Api/MeshKernelTest.cs +++ b/test/MeshKernelNETTest/Api/MeshKernelTest.cs @@ -2277,6 +2277,7 @@ public void Mesh2dMergeMeshesThroughApi() public void Mesh2dMergeAndConnectMeshesThroughApi() { // Setup + using(var disposableGeometryList = new DisposableGeometryList()) using (DisposableMesh2D firstMesh = CreateMesh2D(3, 3, 1, 1)) using (DisposableMesh2D secondMesh = CreateMesh2D(6, 6, 0.5, 0.5, 1.0)) using (var api = new MeshKernelApi()) @@ -2292,7 +2293,7 @@ public void Mesh2dMergeAndConnectMeshesThroughApi() // Execute const double searchFraction = 0.4; - var result = api.Mesh2dMergeAndConnectMeshes(id, secondMesh, searchFraction); + var result = api.Mesh2dMergeAndConnectMeshes(id, secondMesh,disposableGeometryList, searchFraction); // Assert Assert.That(result, Is.EqualTo(0)); From 03a1e25f08101befc2e7428d11afd696c6c18035 Mon Sep 17 00:00:00 2001 From: AlexKosterDeltares Date: Thu, 3 Jul 2025 12:08:56 +0200 Subject: [PATCH 2/3] Fix build probled --- src/MeshKernelNET/Api/IMeshKernelApi.cs | 2 +- src/MeshKernelNET/Api/MeshKernelApi.cs | 7 +++++-- src/MeshKernelNET/Native/MeshKernelDll.cs | 7 ++++++- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/MeshKernelNET/Api/IMeshKernelApi.cs b/src/MeshKernelNET/Api/IMeshKernelApi.cs index 4e2d325..1f28904 100644 --- a/src/MeshKernelNET/Api/IMeshKernelApi.cs +++ b/src/MeshKernelNET/Api/IMeshKernelApi.cs @@ -1016,7 +1016,7 @@ int Mesh2dComputeOrthogonalization(int meshKernelId, /// Input polygon to define the region of the operation. Can be empty -> whole meshes are considered /// Fraction of the shortest edge (along an edge to be connected) to use when determining neighbour edge closeness /// Error code - int Mesh2dMergeAndConnectMeshes(int meshKernelId, in DisposableMesh2D disposableMesh2D,DisposableGeometryList geometryListPolygon, double searchFraction); + int Mesh2dMergeAndConnectMeshes(int meshKernelId, in DisposableMesh2D disposableMesh2D,in DisposableGeometryList geometryListPolygon, double searchFraction); /// /// Converts the projection of a mesh2d diff --git a/src/MeshKernelNET/Api/MeshKernelApi.cs b/src/MeshKernelNET/Api/MeshKernelApi.cs index 3f9150c..8f203dc 100644 --- a/src/MeshKernelNET/Api/MeshKernelApi.cs +++ b/src/MeshKernelNET/Api/MeshKernelApi.cs @@ -943,19 +943,22 @@ public int Mesh2dComputeOrthogonalization(int meshKernelId, public int Mesh2dMergeMeshes(int meshKernelId, in DisposableMesh2D disposableMesh2D) { + GeometryListNative geometryListPolygonNative = new GeometryListNative { numberOfCoordinates = 0 }; Mesh2DNative mesh2D = disposableMesh2D.CreateNativeObject(); return MeshKernelDll.Mesh2dConnectMeshes(meshKernelId, ref mesh2D, + geometryListPolygonNative, 0.0, false); } - public int Mesh2dMergeAndConnectMeshes(int meshKernelId, in DisposableMesh2D disposableMesh2D,DisposableGeometryList geometryListPolygon, double searchFraction) + public int Mesh2dMergeAndConnectMeshes(int meshKernelId, in DisposableMesh2D disposableMesh2D, in DisposableGeometryList geometryListPolygon, double searchFraction) { Mesh2DNative mesh2D = disposableMesh2D.CreateNativeObject(); + GeometryListNative geometryListPolygonNative = geometryListPolygon?.CreateNativeObject() ?? new GeometryListNative { numberOfCoordinates = 0 }; return MeshKernelDll.Mesh2dConnectMeshes(meshKernelId, ref mesh2D, - geometryListPolygon, + geometryListPolygonNative, searchFraction, true); } diff --git a/src/MeshKernelNET/Native/MeshKernelDll.cs b/src/MeshKernelNET/Native/MeshKernelDll.cs index 8171cbc..28a25f4 100644 --- a/src/MeshKernelNET/Native/MeshKernelDll.cs +++ b/src/MeshKernelNET/Native/MeshKernelDll.cs @@ -1155,11 +1155,16 @@ internal static extern int Mesh2dComputeOrthogonalization([In] int meshKernelId, /// /// Id of the mesh state pertaining to the current domain /// The mesh to merge to the current domain + /// The polygon where to connect the meshes /// Fraction of the shortest edge (along an edge to be connected) to use when determining neighbour edge closeness /// Boolean value indicating if the two meshes should be connected using triangles /// Error code [DllImport(MeshKernelDllName, EntryPoint = "mkernel_mesh2d_connect_meshes", CallingConvention = CallingConvention.Cdecl)] - internal static extern int Mesh2dConnectMeshes([In] int meshKernelId, [In] ref Mesh2DNative mesh2DNative, [In] double searchFraction, [In] bool connect); + internal static extern int Mesh2dConnectMeshes([In] int meshKernelId, + [In] ref Mesh2DNative mesh2DNative, + [In] GeometryListNative geometryListNativePolygon, + [In] double searchFraction, + [In] bool connect); /// /// Converts the projection of a mesh2d From 176a4ea08696ba3f25f42c4a8175828ed92bb3af Mon Sep 17 00:00:00 2001 From: AlexKosterDeltares Date: Thu, 3 Jul 2025 12:19:50 +0200 Subject: [PATCH 3/3] Remove (added) nuget file --- Nuget.config | 30 ------------------------------ 1 file changed, 30 deletions(-) delete mode 100644 Nuget.config diff --git a/Nuget.config b/Nuget.config deleted file mode 100644 index a5b0fde..0000000 --- a/Nuget.config +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file