# CurveAssistant<T> class

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 abstract class CurveAssistant<T> : ICurveAssistant
```

Specific assistant for curve like types.

**Type parameters:**

- `T`: Type to assist.

**Derived types:** [ArcCurveAssistant](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.assistants.arccurveassistant.md), [CircleCurveAssistant](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.assistants.circlecurveassistant.md), [LineCurveAssistant](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.assistants.linecurveassistant.md), [NaughtyCurveCurveAssistant](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.assistants.naughtycurvecurveassistant.md), [PolylineCurveAssistant](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.assistants.polylinecurveassistant.md), [RectangleCurveAssistant](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.assistants.rectanglecurveassistant.md), [RhinoCurveCurveAssistant](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.assistants.rhinocurvecurveassistant.md), [TriangleCurveAssistant](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.assistants.trianglecurveassistant.md)

## Constructors

- [CurveAssistant<T>](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.assistant.curveassistant-1/ctor.md): Abstract constructor, assigns Type and TypeId fields based on T.

## Properties

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

## Methods

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