# CustomObjectGrips class

Namespace: [Rhino.DocObjects.Custom](https://developer.rhino3d.com/api/rhinocommon/namespace/rhino.docobjects.custom.md) · Assembly: [RhinoCommon](https://developer.rhino3d.com/api/rhinocommon/assembly/rhinocommon.md)

```cs
public abstract class CustomObjectGrips : IDisposable
```

## Constructors

- [CustomObjectGrips](https://developer.rhino3d.com/api/rhinocommon/type/rhino.docobjects.custom.customobjectgrips/ctor.md): (2 overloads)

## Finalizer

- [~CustomObjectGrips](https://developer.rhino3d.com/api/rhinocommon/type/rhino.docobjects.custom.customobjectgrips/finalize.md)

## Properties

- [GripCount](https://developer.rhino3d.com/api/rhinocommon/type/rhino.docobjects.custom.customobjectgrips/gripcount.md)
- [GripsMoved](https://developer.rhino3d.com/api/rhinocommon/type/rhino.docobjects.custom.customobjectgrips/gripsmoved.md): If GripsMoved is true if some of the grips have ever been moved GripObject.NewLocation() sets GripsMoved=true.
- [GripsType](https://developer.rhino3d.com/api/rhinocommon/type/rhino.docobjects.custom.customobjectgrips/gripstype.md): What these grips control. Set at construction.
- [NewLocation](https://developer.rhino3d.com/api/rhinocommon/type/rhino.docobjects.custom.customobjectgrips/newlocation.md): true if some of the grips have been moved. GripObject.NewLocation() sets NewLocation=true. Derived classes can set NewLocation to false after updating temporary display information.
- [OwnerObject](https://developer.rhino3d.com/api/rhinocommon/type/rhino.docobjects.custom.customobjectgrips/ownerobject.md): Owner of the grips.

## Methods

- [AddGrip](https://developer.rhino3d.com/api/rhinocommon/type/rhino.docobjects.custom.customobjectgrips/addgrip.md)
- [Dispose](https://developer.rhino3d.com/api/rhinocommon/type/rhino.docobjects.custom.customobjectgrips/dispose.md): (2 overloads)
- [Dragging](https://developer.rhino3d.com/api/rhinocommon/type/rhino.docobjects.custom.customobjectgrips/dragging.md): (static) Determines if grips are currently being dragged.
- [Grip](https://developer.rhino3d.com/api/rhinocommon/type/rhino.docobjects.custom.customobjectgrips/grip.md)
- [NeighborGrip](https://developer.rhino3d.com/api/rhinocommon/type/rhino.docobjects.custom.customobjectgrips/neighborgrip.md): Get neighbors.
- [NewGeometry](https://developer.rhino3d.com/api/rhinocommon/type/rhino.docobjects.custom.customobjectgrips/newgeometry.md): If the grips control just one object, then override NewGeometry(). When NewGeometry() is called, return new geometry calculated from the current grip locations. This happens once at the end of a grip drag.
- [NurbsCurve](https://developer.rhino3d.com/api/rhinocommon/type/rhino.docobjects.custom.customobjectgrips/nurbscurve.md): If the grips control a NURBS curve, this returns a pointer to that curve. You can look at but you must NEVER change this curve. Return a curve held in a field, never a temporary: Rhino keeps the underlying pointer after this call returns.
- [NurbsCurveGrip](https://developer.rhino3d.com/api/rhinocommon/type/rhino.docobjects.custom.customobjectgrips/nurbscurvegrip.md): If the grips are control points of a NURBS curve, then this gets the grip that controls the i-th CV.
- [NurbsSurface](https://developer.rhino3d.com/api/rhinocommon/type/rhino.docobjects.custom.customobjectgrips/nurbssurface.md): If the grips control a NURBS surface, this returns a pointer to that surface. You can look at but you must NEVER change this surface. Return a surface held in a field, never a temporary: Rhino keeps the underlying pointer after this call returns.
- [NurbsSurfaceGrip](https://developer.rhino3d.com/api/rhinocommon/type/rhino.docobjects.custom.customobjectgrips/nurbssurfacegrip.md): If the grips are control points of a NURBS surface, then this gets the index of the grip that controls the (i,j)-th CV.
- [OnDraw](https://developer.rhino3d.com/api/rhinocommon/type/rhino.docobjects.custom.customobjectgrips/ondraw.md): Draws the grips. In your implementation, override this if you need to draw dynamic elements and then call this base implementation to draw the grips themselves.
- [OnReset](https://developer.rhino3d.com/api/rhinocommon/type/rhino.docobjects.custom.customobjectgrips/onreset.md): Resets location of all grips to original spots and cleans up stuff that was created by dynamic dragging. This is required when dragging is canceled or in the Copy command when grips are "copied". The override should clean up dynamic workspace stuff.
- [OnResetMeshes](https://developer.rhino3d.com/api/rhinocommon/type/rhino.docobjects.custom.customobjectgrips/onresetmeshes.md): Just before Rhino turns off object grips, it calls this function. If grips have modified any display meshes, they must override this function and restore the meshes to their original states.
- [OnUpdateMesh](https://developer.rhino3d.com/api/rhinocommon/type/rhino.docobjects.custom.customobjectgrips/onupdatemesh.md): Just before Rhino shades an object with grips on, it calls this method to update the display meshes. Grips that modify surface or mesh objects must override this function and modify the display meshes here.
- [RegisterGripsEnabler](https://developer.rhino3d.com/api/rhinocommon/type/rhino.docobjects.custom.customobjectgrips/registergripsenabler.md): (static)
