# How to merge two point clouds

**URL:** <https://forum.commonvisionblox.com/t/how-to-merge-two-point-clouds/960>\
**Category:** .Net API\
**Created:** [November 18, 2019, 2:40pm UTC](https://forum.commonvisionblox.com/t/how-to-merge-two-point-clouds/960 "2019-11-18T14:40:47Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![MSe](https://avatars.discourse-cdn.com/v4/letter/m/7cd45c/32.png) [@MSe](https://forum.commonvisionblox.com/u/MSe)\
**Post date:** [November 18, 2019, 2:40pm UTC](https://forum.commonvisionblox.com/t/how-to-merge-two-point-clouds/960/1 "2019-11-18T14:40:47Z")

</div>

I`ve got two calibrated (with AQS12Piece) point clouds and want to merge them. How can I achieve this?

---

<div class="post-metadata">

**Author:** ![Arno](https://avatars.discourse-cdn.com/v4/letter/a/a5b964/32.png) [@Arno](https://forum.commonvisionblox.com/u/Arno)\
**Post date:** [November 18, 2019, 3:30pm UTC](https://forum.commonvisionblox.com/t/how-to-merge-two-point-clouds/960/2 "2019-11-18T15:30:02Z")

</div>

Hello MSe,

unfortunatly this is not yet integrated in cvb.  
But you can write this own PointCloud extension:

```cs
static class PointCloudExtensions
{
  public static SparsePointCloud Concatenate(this PointCloud first, PointCloud second)
  {
     if (first == null)
        throw new ArgumentNullException(nameof(first));
     if (second == null)
        throw new ArgumentNullException(nameof(second));

     var target = SparsePointCloud.Create<Point3Df>(first.NumPoints + second.NumPoints);
     unsafe
     {
        var pTarget = (Point3Df*)target.PointComponents.X.BasePtr;
        foreach (var pt in first.TryEnumeratePointsAs<Point3Df>())
        {
          *pTarget = pt;
          ++pTarget;
        }
        foreach (var pt in second.TryEnumeratePointsAs<Point3Df>())
        {
          *pTarget = pt;
          ++pTarget;
        }
      }
      return target;
    }
  }
}

```

Kind regards  
Arno Dietz
