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));