# ISurfaceAssistant interface

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

```cs
public interface ISurfaceAssistant
```

Base interface for surface-like type assistants. Do not implement this interface from scratch, instead inherit from SurfaceAssistant.

**Derived types:** [SurfaceAssistant<T>](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.assistant.surfaceassistant-1.md)

## Properties

- [IsReimplementation](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.assistant.isurfaceassistant/isreimplementation.md): Gets whether or not this assistant is a type-safe re-implementation of a more generic assistant.
- [ReimplementationBase](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.assistant.isurfaceassistant/reimplementationbase.md): Gets the base assistant (if any) this assistant is a re-implementation of.
- [Type](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.assistant.isurfaceassistant/type.md): Gets the type associated with this assistant.

## Methods

- [BoundingBox](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.assistant.isurfaceassistant/boundingbox.md): Gets the bounding box of a surface.
- [ConvertToBrep](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.assistant.isurfaceassistant/converttobrep.md): Convert the instance into a Rhino Brep type which best describes the original instance. Note this method need not return a duplicate of the input, if a duplicate is required by the caller then a ReferenceEquals check must be performed.
- [EvaluateCurvature](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.assistant.isurfaceassistant/evaluatecurvature.md): Evaluate the surface curvature at the given parameter.
- [EvaluateNormal](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.assistant.isurfaceassistant/evaluatenormal.md): Evaluate the normal vector of the surface at the given parameter.
- [EvaluatePosition](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.assistant.isurfaceassistant/evaluateposition.md): Evaluate the position of the surface at the given parameter.
- [EvaluateTangent](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.assistant.isurfaceassistant/evaluatetangent.md): Evaluate the tangent of the surface at the given parameter.
- [EvaluateUV](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.assistant.isurfaceassistant/evaluateuv.md): Evaluate the U and V directions of the surface at the given parameter.
- [Explode](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.assistant.isurfaceassistant/explode.md): Explode a surface into smaller fragments, each representing a subtype of surface.
- [ExplodeRecursive](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.assistant.isurfaceassistant/exploderecursive.md): Explode a surface into the smallest possible fragments.
- [FindClosestParameter](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.assistant.isurfaceassistant/findclosestparameter.md): Find the locus on the surface closest to a test point.
- [FlipDirection](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.assistant.isurfaceassistant/flipdirection.md): Flip the normal direction of the surface.
- [IsClosed](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.assistant.isurfaceassistant/isclosed.md): Determine whether the surface is closed (i.e. solid).
- [IsPlanar](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.assistant.isurfaceassistant/isplanar.md): (2 overloads) Determine whether the surface is planar.
- [Slice](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.assistant.isurfaceassistant/slice.md): Compute the intersection between a surface and a plane.
