# Deform class

Namespace: [Grasshopper2.Types.Shapes](https://developer.rhino3d.com/api/gh2/namespace/grasshopper2.types.shapes.md) · Assembly: [Grasshopper2](https://developer.rhino3d.com/api/gh2/assembly/grasshopper2.md)

```cs
public abstract class Deform : IStorable
```

A wrapper class hierarchy around the Rhino SpaceMorph types. This wrapper stuff is supposed to make it possible to reliably (de)serialise spacemorphs.

**Derived types:** [BendDeform](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.shapes.benddeform.md), [CageDeform](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.shapes.cagedeform.md), [CombinedDeform](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.shapes.combineddeform.md), [CurlDeform](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.shapes.curldeform.md), [CurveFlowDeform](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.shapes.curveflowdeform.md), [CurveMirrorDeform](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.shapes.curvemirrordeform.md), [ExpandDeform](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.shapes.expanddeform.md), [FieldDeform](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.shapes.fielddeform.md), [IdentityDeform](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.shapes.identitydeform.md), [MaelstromDeform](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.shapes.maelstromdeform.md), [OffsetDeform](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.shapes.offsetdeform.md), [SplopDeform](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.shapes.splopdeform.md), [SporphDeform](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.shapes.sporphdeform.md), [StretchDeform](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.shapes.stretchdeform.md), [SurfaceFlowDeform](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.shapes.surfaceflowdeform.md), [SurfaceMirrorDeform](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.shapes.surfacemirrordeform.md), [TaperDeform](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.shapes.taperdeform.md), [TransformedDeform](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.shapes.transformeddeform.md), [TwistDeform](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.shapes.twistdeform.md), [WringDeform](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.shapes.wringdeform.md)

## Methods

- [CreateMorph](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.shapes.deform/createmorph.md): Create a new morph from scratch. You usually want to call [Deform.ToMorph(double)](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.shapes.deform/tomorph.md) so you get the cached result. However if you wish to set properties on the morph such as [SpaceMorph.PreserveStructure](https://mcneel-apidocs-rhinocommon-7f6eb10c6967.herokuapp.com/api/rhinocommon/type/rhino.geometry.spacemorph/), then you should get a brand new instance each time.
- [IsValid](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.shapes.deform/isvalid.md): Test the validity of this deformation.
- [Store](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.shapes.deform/store.md)
- [ToMorph](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.shapes.deform/tomorph.md): (2 overloads) Emit a Rhino spacemorph which describes this deformation.
- [ToString](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.shapes.deform/tostring.md): Must override this to name the deformation. I.e. "Splop", "Bend", etc.
- [ToStringDetails](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.shapes.deform/tostringdetails.md): Override this to provide a detailed description which would be sufficient for sorting and comparison.
