
####################
A3DProjectPointCloud
####################

.. c:function:: A3DStatus A3DProjectPointCloud(unsigned int uRiBrepModelSize, A3DRiBrepModel **pRiBrepModel, A3DUns32 uPointCloudSize, A3DVector3dData *pPointCloudToProject, A3DBool bUseExactComputation, A3DUns32 uNbThreads, A3DProjectedPointCloudData **ppProjectedPointCloud)

   .. rst-class:: sig-pretty-signature
   
      | :c:enum:`~A3DStatus` A3DProjectPointCloud(*unsigned int* **uRiBrepModelSize**\ , :c:type:`~A3DRiBrepModel`\ ** **pRiBrepModel**\ , :c:type:`~A3DUns32` **uPointCloudSize**\ , :c:struct:`~A3DVector3dData`\ * **pPointCloudToProject**\ , :c:type:`~A3DBool` **bUseExactComputation**\ , :c:type:`~A3DUns32` **uNbThreads**\ , :c:struct:`~A3DProjectedPointCloudData`\ ** **ppProjectedPointCloud**\ )
   
   Function to project Point Cloud on BrepModel. 
   
   **Parameters**
   
   
      **uRiBrepModelSize**\ : Number of BrepModels in pRiBrepModel. 
   
      **pRiBrepModel**\ : Array of BRepModels. 
   
      **uPointCloudSize**\ : Number of points in pPointCloudToProject. 
   
      **pPointCloudToProject**\ : Point cloud to project. This point cloud must be in the same coordinate system as the BrepData structures stored in BrepModel. 
   
      **bUseExactComputation**\ : Flag to use exact topology. When this flag is false, the algorithm drops the point cloud on the faceted geometry, otherwise, the exact topology is used. 
   
      **uNbThreads**\ : Number of threads wanted. 0 means non multi-thread. Please avoid setting a number of threads larger than the number of CPU cores. 
   
      **ppProjectedPointCloud**\ : Point cloud projected. ppProjectedPointCloud is automatically allocated by A3DProjectPointCloud. It must be freed with the custom free memory callback. 
   
   
   **Returns**
   
   
      ``A3D_SUCCESS`` on success, or an error code on failure
   
   




