# ICurveAssistant 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 ICurveAssistant
```

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

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

## Properties

- [IsReimplementation](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.assistant.icurveassistant/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.icurveassistant/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.icurveassistant/type.md): Gets the type associated with this assistant.

## Methods

- [BoundingBox](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.assistant.icurveassistant/boundingbox.md): Gets the bounding box of a curve.
- [ConvertToNurbsCurve](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.assistant.icurveassistant/converttonurbscurve.md): Convert the instance into a Rhino NURBS curve 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.
- [ConvertToPolyline](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.assistant.icurveassistant/converttopolyline.md): Convert the instance into a polyline.
- [ConvertToRhinoCurve](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.assistant.icurveassistant/converttorhinocurve.md): Convert the instance into a Rhino curve 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.
- [DivideByCount](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.assistant.icurveassistant/dividebycount.md): Divide the curve into a number of equal length segments.
- [DivideByDistance](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.assistant.icurveassistant/dividebydistance.md): Divide a curve into segments whose end-points are a fixed distance apart.
- [DivideByLength](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.assistant.icurveassistant/dividebylength.md): Divide the curve into equal length segments.
- [EvaluateCurvature](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.assistant.icurveassistant/evaluatecurvature.md): Evaluate the curvature of the curve at the given parameter.
- [EvaluateDerivatives](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.assistant.icurveassistant/evaluatederivatives.md): Evaluate the first N derivatives of the curve at the given parameter.
- [EvaluatePerpendicular](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.assistant.icurveassistant/evaluateperpendicular.md): Evaluate the perpendicular plane of the curve at the given parameter.
- [EvaluatePosition](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.assistant.icurveassistant/evaluateposition.md): Evaluate the position of the curve at the given parameter.
- [EvaluateTangent](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.assistant.icurveassistant/evaluatetangent.md): Evaluate the tangent of the curve at the given parameter.
- [Explode](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.assistant.icurveassistant/explode.md): Explode a curve into smaller segments, each representing a subtype of curve.
- [ExplodeRecursive](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.assistant.icurveassistant/exploderecursive.md): Explode a curve into the smallest possible segments.
- [Extend](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.assistant.icurveassistant/extend.md): Extend the curve.
- [FindClosestParameter](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.assistant.icurveassistant/findclosestparameter.md): Find the point on the curve closest to a test point.
- [FindCurvatureExtremes](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.assistant.icurveassistant/findcurvatureextremes.md): Find the two parameters with the lowest and highest curvature.
- [FindDiscontinuities](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.assistant.icurveassistant/finddiscontinuities.md): Find all discontinuities along the curve up to and including a target continuity.
- [FindFurthestParameter](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.assistant.icurveassistant/findfurthestparameter.md): Find the point on the curve furthest from a test point.
- [FindInflections](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.assistant.icurveassistant/findinflections.md): Find all inflection points along the curve.
- [FindPositionExtremes](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.assistant.icurveassistant/findpositionextremes.md): Find the two parameters closest to and furthest away from a plane.
- [FlipDirection](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.assistant.icurveassistant/flipdirection.md): Flip the curve.
- [GetDomain](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.assistant.icurveassistant/getdomain.md): Get the domain of an instance of T.
- [GetEndPoints](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.assistant.icurveassistant/getendpoints.md): Get the end-points of a curve.
- [GetEndTangents](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.assistant.icurveassistant/getendtangents.md): Get the tangents at the ends of a curve.
- [GetLength](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.assistant.icurveassistant/getlength.md): Measure the total length of this curve.
- [GetSpans](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.assistant.icurveassistant/getspans.md): Gets an array of curve domain spans. A span is a section of the curve that is reasonably simple in shape. Discontinuities in curves typically signal transitions from one span to another, but it depends on the curve type how it divides itself up.
- [IntersectWith](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.assistant.icurveassistant/intersectwith.md): Find all the intersection parameters between this curve and a plane.
- [IsClosed](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.assistant.icurveassistant/isclosed.md): Determine whether the curve is closed.
- [IsLinear](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.assistant.icurveassistant/islinear.md): (2 overloads) Determine whether the curve is linear.
- [IsPeriodic](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.assistant.icurveassistant/isperiodic.md): Determine whether the curve is periodic.
- [IsPlanar](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.assistant.icurveassistant/isplanar.md): (2 overloads) Determine whether the curve is planar.
- [LengthAtParameter](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.assistant.icurveassistant/lengthatparameter.md): Measure the length of a curve from the start to a specific parameter.
- [ParameterAtLength](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.assistant.icurveassistant/parameteratlength.md): Gets the parameter at a specific length along the curve.
- [SetDomain](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.assistant.icurveassistant/setdomain.md): Assign a new parameter domain to the curve.
- [Split](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.assistant.icurveassistant/split.md): Split a curve into two parts.
- [Trim](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.assistant.icurveassistant/trim.md): Extract a subcurve from an instance of T.
