# PointCloud class

Namespace: [Rhino.Geometry](https://developer.rhino3d.com/api/rhinocommon/namespace/rhino.geometry.md) · Assembly: [RhinoCommon](https://developer.rhino3d.com/api/rhinocommon/assembly/rhinocommon.md)

```cs
[Serializable]
public class PointCloud : GeometryBase, IEnumerable<PointCloudItem>
```

Represents a collection of coordinates with optional normal vectors and colors.

## Constructors

- [PointCloud](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.pointcloud/ctor.md): (4 overloads) Initializes a new instance of the [PointCloud](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.pointcloud.md) class that is empty.

## Properties

- [ContainsColors](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.pointcloud/containscolors.md): Gets a value indicating whether or not the points in this point cloud have colors assigned to them.
- [ContainsHiddenFlags](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.pointcloud/containshiddenflags.md): Gets a value indicating whether or not the points in this point cloud have hidden flags assigned to them.
- [ContainsNormals](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.pointcloud/containsnormals.md): Gets a value indicating whether or not the points in this point cloud have normals assigned to them.
- [ContainsPointValues](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.pointcloud/containspointvalues.md): Gets a value indicating whether or not the points in this point cloud have extra values assigned to them. Extra values can be used to store a user-defined values, such as intensity.
- [Count](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.pointcloud/count.md): Gets the number of points in this point cloud.
- [HiddenPointCount](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.pointcloud/hiddenpointcount.md): Gets the number of points that have their Hidden flag set.

## Indexers

- [this[]](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.pointcloud/item.md): Gets the item at the given index.

## Methods

- [Add](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.pointcloud/add.md): (5 overloads) Append a new point to the end of the list.
- [AddRange](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.pointcloud/addrange.md): (5 overloads) Appends a collection of points and normal vectors to this point cloud.
- [AppendNew](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.pointcloud/appendnew.md): Appends a new PointCloudItem to the end of this point cloud.
- [AsReadOnlyListOfPoints](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.pointcloud/asreadonlylistofpoints.md): Returns an enumerator and list indexer over point cloud locations.
- [ClearColors](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.pointcloud/clearcolors.md): Destroys the color information in this point cloud.
- [ClearHiddenFlags](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.pointcloud/clearhiddenflags.md): Destroys the hidden flag information in this point cloud.
- [ClearNormals](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.pointcloud/clearnormals.md): Destroys the normal vector information in this point cloud.
- [ClearPointValues](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.pointcloud/clearpointvalues.md): Destroys the extra value information in this point cloud. Extra values can be used to store a user-defined values, such as intensity.
- [ClosestPoint](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.pointcloud/closestpoint.md): Returns index of the closest point in the point cloud to a given test point.
- [CreateContourCurves](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.pointcloud/createcontourcurves.md): (2 overloads) Creates a planar curves by intersecting a plane with a point cloud.
- [CreateFromMesh](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.pointcloud/createfrommesh.md): (static) Creates a point cloud from a mesh.
- [CreateSectionCurve](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.pointcloud/createsectioncurve.md): (2 overloads) Creates a planar curve by intersecting a plane with a point cloud.
- [ExpertGetValues](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.pointcloud/expertgetvalues.md): Expert tool to get all values of a point cloud item. This method minimizes the number of pInvoke function calls.
- [GetColors](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.pointcloud/getcolors.md): Copy all the point colors in this point cloud to an array.
- [GetEnumerator](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.pointcloud/getenumerator.md): Gets an enumerator that allows to modify each point cloud point.
- [GetNormals](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.pointcloud/getnormals.md): Copy all the normal vectors in this point cloud to an array.
- [GetPoints](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.pointcloud/getpoints.md): Copy all the point coordinates in this point cloud to an array.
- [GetPointValues](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.pointcloud/getpointvalues.md): Copy all the extra point values in this point cloud to an array. Extra values can be used to store a user-defined value, such as intensity.
- [GetRandomSubsample](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.pointcloud/getrandomsubsample.md): (2 overloads) Returns a random subsample of a point cloud.
- [GetUnsafeLock](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.pointcloud/getunsafelock.md): Allows the developer to obtain unsafe pointers to the underlying unmanaged data structures of the PointCloud.
- [Insert](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.pointcloud/insert.md): (5 overloads) Inserts a new point into the point list.
- [InsertNew](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.pointcloud/insertnew.md): Inserts a new [PointCloudItem](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.pointclouditem.md) at a specific position of the point cloud.
- [InsertRange](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.pointcloud/insertrange.md): Append a collection of points to this point cloud.
- [Merge](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.pointcloud/merge.md): Merges, or appends, a specified point cloud into this one.
- [PointAt](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.pointcloud/pointat.md): Returns the location of the point at a specific index.
- [ReleaseUnsafeLock](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.pointcloud/releaseunsafelock.md): Updates the PointCloud data with the information that was stored via the [PointCloudUnsafeLock](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.pointcloudunsafelock.md).
- [RemoveAt](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.pointcloud/removeat.md): Remove the point at the given index.
- [RemoveRange](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.pointcloud/removerange.md): Removes points at given indices.
- [ShrinkWrap](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.pointcloud/shrinkwrap.md): Returns a ShrinkWrap mesh from this point cloud object.
- [Split](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.pointcloud/split.md): Split a point cloud into two parts using a plane, or returns false if the pointcloud is not partitioned by plane.
- [IEnumerable.GetEnumerator](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.pointcloud/system-collections-ienumerable-getenumerator.md)

## Inherited Members

- From [GeometryBase](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase.md): [HasBrepForm](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/hasbrepform.md), [IsDeformable](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/isdeformable.md), [IsDocumentControlled](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/isdocumentcontrolled.md), [IsShallowDuplicate](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/isshallowduplicate.md), [ObjectType](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/objecttype.md), [UserStringCount](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/userstringcount.md), [ComponentIndex](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/componentindex.md), [DataCRC](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/datacrc.md), [DeleteAllUserStrings](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/deletealluserstrings.md), [DeleteUserString](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/deleteuserstring.md), [Dispose](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/dispose.md), [Duplicate](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/duplicate.md), [DuplicateShallow](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/duplicateshallow.md), [GetBoundingBox](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/getboundingbox.md), [GetUserString](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/getuserstring.md), [GetUserStrings](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/getuserstrings.md), [MakeDeformable](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/makedeformable.md), [MemoryEstimate](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/memoryestimate.md), [NonConstOperation](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/nonconstoperation.md), [OnSwitchToNonConst](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/onswitchtononconst.md), [Rotate](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/rotate.md), [Scale](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/scale.md), [SetUserString](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/setuserstring.md), [Transform](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/transform.md), [Translate](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/translate.md)
- From [CommonObject](https://developer.rhino3d.com/api/rhinocommon/type/rhino.runtime.commonobject.md): [Disposed](https://developer.rhino3d.com/api/rhinocommon/type/rhino.runtime.commonobject/disposed.md), [HasUserData](https://developer.rhino3d.com/api/rhinocommon/type/rhino.runtime.commonobject/hasuserdata.md), [IsValid](https://developer.rhino3d.com/api/rhinocommon/type/rhino.runtime.commonobject/isvalid.md), [UserData](https://developer.rhino3d.com/api/rhinocommon/type/rhino.runtime.commonobject/userdata.md), [UserDictionary](https://developer.rhino3d.com/api/rhinocommon/type/rhino.runtime.commonobject/userdictionary.md), [ConstructConstObject](https://developer.rhino3d.com/api/rhinocommon/type/rhino.runtime.commonobject/constructconstobject.md), [Dispose](https://developer.rhino3d.com/api/rhinocommon/type/rhino.runtime.commonobject/dispose.md), [EnsurePrivateCopy](https://developer.rhino3d.com/api/rhinocommon/type/rhino.runtime.commonobject/ensureprivatecopy.md), [GetObjectData](https://developer.rhino3d.com/api/rhinocommon/type/rhino.runtime.commonobject/getobjectdata.md), [IsValidWithLog](https://developer.rhino3d.com/api/rhinocommon/type/rhino.runtime.commonobject/isvalidwithlog.md), [ToJSON](https://developer.rhino3d.com/api/rhinocommon/type/rhino.runtime.commonobject/tojson.md)
