# NurbsSurfacePointList class

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

```cs
public sealed class NurbsSurfacePointList : IEnumerable<ControlPoint>, IEpsilonComparable<NurbsSurfacePointList>
```

Provides access to the control points of a NURBS surface.

## Properties

- [CountU](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.collections.nurbssurfacepointlist/countu.md): Gets the number of control points in the U direction of this surface.
- [CountV](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.collections.nurbssurfacepointlist/countv.md): Gets the number of control points in the V direction of this surface.
- [PointSize](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.collections.nurbssurfacepointlist/pointsize.md): Returns the control point size, or the number of doubles per control point. For rational curves, PointSize = Surface.Dimension + 1. For non-rational curves, PointSize = Surface.Dimension.

## Methods

- [EnsurePrivateCopy](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.collections.nurbssurfacepointlist/ensureprivatecopy.md): If you want to keep a copy of this class around by holding onto it in a variable after a command completes, call EnsurePrivateCopy to make sure that this class is not tied to the document. You can call this function as many times as you want.
- [EpsilonEquals](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.collections.nurbssurfacepointlist/epsilonequals.md): Check that all values in other are within epsilon of the values in this
- [GetControlPoint](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.collections.nurbssurfacepointlist/getcontrolpoint.md): Gets the control point at the given (u, v) index.
- [GetGrevillePoint](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.collections.nurbssurfacepointlist/getgrevillepoint.md): Gets the 2-D Greville point associated with the control point at the given (u, v) index.
- [GetPoint](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.collections.nurbssurfacepointlist/getpoint.md): (2 overloads) Gets a world 3-D, or Euclidean, control point at the given (u, v) index. The 4-D representation is (x, y, z, 1.0).
- [GetWeight](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.collections.nurbssurfacepointlist/getweight.md): Gets the weight of a control point at the given (u, v) index. Note, if the surface is non-rational, the weight will be 1.0.
- [SetControlPoint](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.collections.nurbssurfacepointlist/setcontrolpoint.md): (2 overloads) Sets the control point at the given (u, v) index.
- [SetPoint](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.collections.nurbssurfacepointlist/setpoint.md): (5 overloads) Sets a homogeneous control point at the given (u, v) index, where the 4-D representation is (x, y, z, w). The world 3-D, or Euclidean, representation is (x/w, y/w, z/w).
- [SetWeight](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.collections.nurbssurfacepointlist/setweight.md): Sets the weight of a control point at the given (u, v) index. Note, if the surface is non-rational, it will be converted to rational.
- [IEnumerable<ControlPoint>.GetEnumerator](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.collections.nurbssurfacepointlist/system-collections-generic-ienumerable-rhino-geometry-controlpoint-getenumerator.md)
- [IEnumerable.GetEnumerator](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.collections.nurbssurfacepointlist/system-collections-ienumerable-getenumerator.md)
- [UVNDirectionsAt](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.collections.nurbssurfacepointlist/uvndirectionsat.md): Calculates the U, V, and N directions of a NURBS surface control point similar to the method used by Rhino's MoveUVN command.
- [ValidateSpacing](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.collections.nurbssurfacepointlist/validatespacing.md): Simple check of distance between adjacent control points
