diff --git a/src/MeshKernelNET/Api/IMeshKernelApi.cs b/src/MeshKernelNET/Api/IMeshKernelApi.cs index d4c0013..1f28904 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,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 35a5a13..8f203dc 100644 --- a/src/MeshKernelNET/Api/MeshKernelApi.cs +++ b/src/MeshKernelNET/Api/MeshKernelApi.cs @@ -943,18 +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, 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, + 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 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));