# IGH_Graph interface

Namespace: [Grasshopper.Kernel.Graphs](https://developer.rhino3d.com/api/gh1/namespace/grasshopper.kernel.graphs.md) · Assembly: [Grasshopper](https://developer.rhino3d.com/api/gh1/assembly/grasshopper.md)

```cs
public interface IGH_Graph : GH_ISerializable
```

**Derived types:** [GH_AbstractGraph](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.graphs.gh-abstractgraph.md)

## Properties

- [Description](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.graphs.igh-graph/description.md): Gets the description of the graph type
- [GraphTypeID](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.graphs.igh-graph/graphtypeid.md): Gets the ID of the graph type
- [Grips](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.graphs.igh-graph/grips.md): Gets the collection of grips that define this graph
- [Icon_16x16](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.graphs.igh-graph/icon-16x16.md): Gets the icon associated with the graph
- [IsValid](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.graphs.igh-graph/isvalid.md): Gets the validity of the graph instance.
- [Name](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.graphs.igh-graph/name.md): Gets the name of the graph type

## Methods

- [ClearCaches](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.graphs.igh-graph/clearcaches.md): This method will be called when it is suspected that all caches have gone stale. If your graph class uses any custom caching, override this method and clear your caches.
- [Draw_PostRenderGraph](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.graphs.igh-graph/draw-postrendergraph.md): Override this function if you want to draw something on top of the Graph curve.
- [Draw_PostRenderGrid](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.graphs.igh-graph/draw-postrendergrid.md): Override this function if you want to draw something on top of the Graph Grid.
- [Draw_PostRenderGrip](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.graphs.igh-graph/draw-postrendergrip.md): Override this function if you want to draw something on top of the current Grip
- [Draw_PostRenderTags](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.graphs.igh-graph/draw-postrendertags.md): Override this function if you want to draw something on top of the Domain tags. This function is called whether or not cnt.LockGrips is true
- [Draw_PreRenderGraph](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.graphs.igh-graph/draw-prerendergraph.md): Override this function if you want to draw something behind of or instead of the default Graph curve
- [Draw_PreRenderGrid](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.graphs.igh-graph/draw-prerendergrid.md): Override this function if you want to draw something behind of or instead of the default Grid.
- [Draw_PreRenderGrip](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.graphs.igh-graph/draw-prerendergrip.md): Override this function if you want to draw something in addition to or instead of the current Grip
- [Draw_PreRenderTags](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.graphs.igh-graph/draw-prerendertags.md): Override this function if you want to draw something behind of or instead of the default Domain tags. This function is called whether or not cnt.LockGrips is true
- [Duplicate](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.graphs.igh-graph/duplicate.md): Returns a full duplicate (perhaps minus any cache values) of the graph.
- [EmitProxyObject](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.graphs.igh-graph/emitproxyobject.md): Override this function if you want to be able to edit the graph through a PropertyGrid.
- [GDI_GraphPath](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.graphs.igh-graph/gdi-graphpath.md): Override this function if you wish to provide a customized graphics path for the UI of the graph. The region is only provided as a reference, the returned path points should be in unit domain coordinates.
- [OnGraphChanged](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.graphs.igh-graph/ongraphchanged.md)
- [PrepareForUse](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.graphs.igh-graph/prepareforuse.md): This method is called when a Graph is about to be displayed/used, maybe for the first time ever, maybe not.
- [ValueAt](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.graphs.igh-graph/valueat.md): Evaluates a single parameter in the unit range

## Events

- [GraphChanged](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.graphs.igh-graph/graphchanged.md): This event is raised whenever the graph changes.

## Inherited Members

- From [GH_ISerializable](https://developer.rhino3d.com/api/gh1/type/gh-io.gh-iserializable.md): [Read](https://developer.rhino3d.com/api/gh1/type/gh-io.gh-iserializable/read.md), [Write](https://developer.rhino3d.com/api/gh1/type/gh-io.gh-iserializable/write.md)
