Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion src/MeshKernelNET/Api/IMeshKernelApi.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1013,9 +1013,10 @@ int Mesh2dComputeOrthogonalization(int meshKernelId,
/// </summary>
/// <param name="meshKernelId">Id of the mesh state pertaining to the current domain</param>
/// <param name="disposableMesh2D">The mesh to merge to the current domain</param>
/// <param name="geometryListPolygon">Input polygon to define the region of the operation. Can be empty -> whole meshes are considered</param>
/// <param name="searchFraction">Fraction of the shortest edge (along an edge to be connected) to use when determining neighbour edge closeness</param>
/// <returns>Error code</returns>
int Mesh2dMergeAndConnectMeshes(int meshKernelId, in DisposableMesh2D disposableMesh2D, double searchFraction);
int Mesh2dMergeAndConnectMeshes(int meshKernelId, in DisposableMesh2D disposableMesh2D,in DisposableGeometryList geometryListPolygon, double searchFraction);

/// <summary>
/// Converts the projection of a mesh2d
Expand Down
6 changes: 5 additions & 1 deletion src/MeshKernelNET/Api/MeshKernelApi.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
Expand Down
7 changes: 6 additions & 1 deletion src/MeshKernelNET/Native/MeshKernelDll.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1155,11 +1155,16 @@ internal static extern int Mesh2dComputeOrthogonalization([In] int meshKernelId,
/// </summary>
/// <param name="meshKernelId">Id of the mesh state pertaining to the current domain</param>
/// <param name="mesh2DNative">The mesh to merge to the current domain</param>
/// <param name="geometryListNativePolygon">The polygon where to connect the meshes </param>
/// <param name="searchFraction">Fraction of the shortest edge (along an edge to be connected) to use when determining neighbour edge closeness</param>
/// <param name="connect">Boolean value indicating if the two meshes should be connected using triangles</param>
/// <returns>Error code</returns>
[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);

/// <summary>
/// Converts the projection of a mesh2d
Expand Down
3 changes: 2 additions & 1 deletion test/MeshKernelNETTest/Api/MeshKernelTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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())
Expand All @@ -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));
Expand Down