Represents a Non Uniform Rational B-Splines (NURBS) curve.

Constructors

NurbsCurve

#Since v5.0
Constructs a new NURBS curve with a specific degree and control point count.
public NurbsCurve(
degree,
Degree of curve. Must be equal to or larger than 1 and smaller than or equal to 11.
pointCount
Number of control-points.
)

NurbsCurve

#ExampleSince v5.0
Constructs a new NURBS curve with knot and CV memory allocated.
public NurbsCurve(
dimension,
>=1.
rational,
true to make a rational NURBS.
order,
(>= 2) The order=degree+1.
pointCount
(>= order) number of control vertices.
)

NurbsCurve

#Since v5.0
Initializes a NURBS curve by copying its values from another NURBS curve.
public NurbsCurve(
NurbsCurve
other
The other curve. This value can be null.
)

NurbsCurve

#
Protected constructor for internal use.
protected NurbsCurve(
info,
Serialization data.
context
Serialization stream.
)

Properties

Degree

Gets the maximum algebraic degree of any span or a good estimate if curve spans are not algebraic.
public int Degree { get; }
inherited fromCurve

Dimension

Gets the dimension of the object.

The dimension is typically three. For parameter space trimming curves the dimension is two. In rare cases the dimension can be one or greater than three.

public int Dimension { get; }
inherited fromCurve

Disposed

Indicates if this object has been disposed or the document it originally belonged to has been disposed.
public bool Disposed { get; }
inherited fromCommonObject

Domain

Gets or sets the domain of the curve.
public Interval Domain { get; set; }
inherited fromCurve

HasBezierSpans

#Since v5.0
Returns true if the NURBS curve has Bezier spans (all distinct knots have multiplicity = degree)
public bool HasBezierSpans { get; }

HasBrepForm

Returns true if the Brep.TryConvertBrep function will be successful for this object
public bool HasBrepForm { get; }
inherited fromGeometryBase

HasUserData

Gets true if this class has any custom information attached to it through UserData.
public bool HasUserData { get; }
inherited fromCommonObject

IsClosed

Gets a value indicating whether or not this curve is a closed curve.
public bool IsClosed { get; }
inherited fromCurve

IsDeformable

true if object can be accurately modified with "squishy" transformations like projections, shears, and non-uniform scaling.
public bool IsDeformable { get; }
inherited fromGeometryBase

IsDocumentControlled

If true this object may not be modified. Any properties or functions that attempt to modify this object when it is set to "IsReadOnly" will throw a NotSupportedException.
public sealed override bool IsDocumentControlled { get; }
inherited fromGeometryBase

IsPeriodic

Gets a value indicating whether or not this curve is considered to be Periodic.
public bool IsPeriodic { get; }
inherited fromCurve

IsRational

#Since v5.0
Gets a value indicating whether or not the curve is rational. Rational curves have control-points with custom weights.
public bool IsRational { get; }

IsShallowDuplicate

Is this instance a 'shallow copy'. Shallow copies are no different than regular instances with the exception that they will convert to complete independent 'deep' copies if a non const operation is perform on the instance (something that mutates the internal data)
public bool IsShallowDuplicate { get; }
inherited fromGeometryBase

IsSubDFriendly

Returns true if the curve is a cubic, non-rational, uniform NURBS curve that is either periodic or has natural end conditions. Otherwise, false is returned.
public bool IsSubDFriendly { get; }
inherited fromCurve
Remarks: A "natural" spline has zero 2nd derivatives (and hence zero curvature) at the start and end. A "periodic" spline has unclampled periodic knots and periodic control points.

IsValid

Tests an object to see if it is valid.
public virtual bool IsValid { get; }
inherited fromCommonObject

Knots

#ExampleSince v5.0
Gets access to the knots (or "knot vector") of this NURBS curve.
public NurbsCurveKnotList Knots { get; }

ObjectType

Useful for switch statements that need to differentiate between basic object types like points, curves, surfaces, and so on.
[CLSCompliant(false)] public ObjectType ObjectType { get; }
inherited fromGeometryBase

Order

#Since v5.0
Gets the order of the curve. Order = Degree + 1.
public int Order { get; }

PointAtEnd

Evaluates point at the end of the curve.
public Point3d PointAtEnd { get; }
inherited fromCurve

PointAtMid

Evaluates point at the middle, or mid, of the curve.
public Point3d PointAtMid { get; }
inherited fromCurve

PointAtStart

Evaluates point at the start of the curve.
public Point3d PointAtStart { get; }
inherited fromCurve

Points

#Since v5.0
Gets access to the control points of this NURBS curve.
public NurbsCurvePointList Points { get; }

SpanCount

Gets the number of non-empty smooth (c-infinity) spans in the curve.
public int SpanCount { get; }
inherited fromCurve

TangentAtEnd

Evaluate unit tangent vector at the end of the curve.
public Vector3d TangentAtEnd { get; }
inherited fromCurve
Remarks: No error handling.
Unit tangent vector of the curve at the end point.

TangentAtStart

Evaluates the unit tangent vector at the start of the curve.
public Vector3d TangentAtStart { get; }
inherited fromCurve
Remarks: No error handling.
Unit tangent vector of the curve at the start point.

UserData

List of custom information that is attached to this class.
public UserDataList UserData { get; }
inherited fromCommonObject

UserDictionary

Dictionary of custom information attached to this class. The dictionary is actually user data provided as an easy to use shareable set of information.
public ArchivableDictionary UserDictionary { get; }
inherited fromCommonObject

UserStringCount

Gets the amount of user strings.
public int UserStringCount { get; }
inherited fromGeometryBase

Methods

Append

#Since v7.13
Appends a NURBS curve to this curve.
public bool Append(
nurbsCurve
The NURBS curve to append.
)

ChangeClosedCurveSeam

If this curve is closed, then modify it so that the start/end point is at curve parameter t.
public bool ChangeClosedCurveSeam(
t
Curve parameter of new start/end point. The returned curves domain will start at t.
)
inherited fromCurve
true on success, false on failure.

ChangeDimension

Changes the dimension of a curve.
public bool ChangeDimension(
desiredDimension
The desired dimension.
)
inherited fromCurve
true if the curve's dimension was already desiredDimension or if the curve's dimension was successfully changed to desiredDimension; otherwise false.

ClosedCurveOrientation

Determines the orientation (counterclockwise or clockwise) of a closed, planar curve in the world XY plane. Only works with simple (no self intersections) closed, planar curves.
[ConstOperation] public CurveOrientation ClosedCurveOrientation()
inherited fromCurve
The orientation of this curve with respect to world XY plane.

ClosedCurveOrientation

Determines the orientation (counterclockwise or clockwise) of a closed, planar curve in a given plane. Only works with simple (no self intersections) closed, planar curves.
[ConstOperation] public CurveOrientation ClosedCurveOrientation(
plane
The plane in which to solve the orientation.
)
inherited fromCurve
The orientation of this curve in the given plane.

ClosedCurveOrientation

Determines the orientation (counterclockwise or clockwise) of a closed, planar curve. Only works with simple (no self intersections) closed, planar curves.
[ConstOperation] public CurveOrientation ClosedCurveOrientation(
xform
Transformation to map the curve to the world XY plane.
)
inherited fromCurve
The orientation of this curve in the world XY-plane.

ClosedCurveOrientation

Determines the orientation (counterclockwise or clockwise) of a closed, planar curve in a given plane. Only works with simple (no self intersections) closed, planar curves.
[ConstOperation] public CurveOrientation ClosedCurveOrientation(
upDirection
A vector that is considered "up".
)
inherited fromCurve
The orientation of this curve with respect to a defined up direction.

ClosestPoint

Finds the parameter of the point on a curve that is closest to testPoint. If the maximumDistance parameter is > 0, then only points whose distance to the given point is <= maximumDistance will be returned. Using a positive value of maximumDistance can substantially speed up the search.
[ConstOperation] public bool ClosestPoint(
testPoint,
Point to project.
out double
t,
parameter of local closest point returned here.
maximumDistance
The maximum allowed distance.

Past this distance, the search is given up and false is returned.

Use 0 to turn off this parameter.

)
inherited fromCurve
true on success, false on failure.

ClosestPoint

Finds parameter of the point on a curve that is closest to testPoint. If the maximumDistance parameter is > 0, then only points whose distance to the given point is <= maximumDistance will be returned. Using a positive value of maximumDistance can substantially speed up the search.
[ConstOperation] public bool ClosestPoint(
testPoint,
Point to search from.
out double
t
Parameter of local closest point.
)
inherited fromCurve
true on success, false on failure.

ClosestPoints

Gets closest points between this and another curves.
[ConstOperation] public bool ClosestPoints(
otherCurve,
The other curve.
out Point3d
pointOnThisCurve,
The point on this curve. This out parameter is assigned during this call.
out Point3d
pointOnOtherCurve
The point on other curve. This out parameter is assigned during this call.
)
inherited fromCurve
true on success; false on error.

ClosestPoints

Finds the object (and the closest point in that object) that is closest to this curve.

Breps, surfaces, curves and point clouds are examples of objects that can be passed to this function.

[ConstOperation] public bool ClosestPoints(
geometry,
A list, an array or any enumerable set of geometry to search.
out Point3d
pointOnCurve,
The point on curve. This out parameter is assigned during this call.
out Point3d
pointOnObject,
The point on geometry. This out parameter is assigned during this call.
out int
whichGeometry,
The index of the geometry. This out parameter is assigned during this call.
maximumDistance
Maximum allowable distance. Past this distance, the research is given up and false is returned.
)
inherited fromCurve
true on success; false if no object was found or selected.
ArgumentNullExceptionIf geometry is null.

ClosestPoints

Finds the object (and the closest point in that object) that is closest to this curve.

Breps, surfaces, curves and point clouds are examples of objects that can be passed to this function.

[ConstOperation] public bool ClosestPoints(
geometry,
A list, an array or any enumerable set of geometry to search.
out Point3d
pointOnCurve,
The point on curve. This out parameter is assigned during this call.
out Point3d
pointOnObject,
The point on geometry. This out parameter is assigned during this call.
out int
whichGeometry
The index of the geometry. This out parameter is assigned during this call.
)
inherited fromCurve
true on success; false if no object was found or selected.
ArgumentNullExceptionIf geometry is null.

CombineShortSegments

Looks for segments that are shorter than tolerance that can be combined. For NURBS of degree greater than 1, spans are combined by removing knots. Similarly for NURBS segments of polycurves. Otherwise, RemoveShortSegments() is called. Does not change the domain, but it will change the relative parameterization.
public bool CombineShortSegments(
tolerance
)
inherited fromCurve
True if short segments were combined or removed. False otherwise.

ComponentIndex

If this piece of geometry is a component in something larger, like a BrepEdge in a Brep, then this function returns the component index.
[ConstOperation] public ComponentIndex ComponentIndex()
inherited fromGeometryBase
This object's component index. If this object is not a sub-piece of a larger geometric entity, then the returned index has m_type = ComponentIndex.InvalidType and m_index = -1.

ConstructConstObject

Assigns a parent object and a sub-object index to this.
protected void ConstructConstObject(
parentObject,
The parent object.
subobjectIndex
The sub-object index.
)
inherited fromCommonObject

Contains

Computes the relationship between a point and a closed curve region. This curve must be closed or the return value will be Unset.
[ConstOperation] public PointContainment Contains(
testPoint,
Point to test.
plane,
Plane in which to compare point and region.
tolerance
Tolerance to use during comparison.
)
inherited fromCurve
Relationship between point and curve region.

Contains

Computes the relationship between a point and a closed curve region. This curve must be closed or the return value will be Unset.
[ConstOperation] public PointContainment Contains(
testPoint,
Point to test.
plane
Plane in which to compare point and region.
)
obsoleteUse version that takes a tolerance
Obsoleteinherited fromCurve
Relationship between point and curve region.

Contains

Computes the relationship between a point and a closed curve region. This curve must be closed or the return value will be Unset. Both curve and point are projected to the World XY plane.
[ConstOperation] public PointContainment Contains(
testPoint
Point to test.
)
obsoleteUse version that takes a tolerance
Obsoleteinherited fromCurve
Relationship between point and curve region.

ControlPolygon

Gets the curve's control polygon.
[ConstOperation] public Polyline ControlPolygon()
inherited fromCurve
The control polygon as a polyline if successful, null otherwise.

ConvertSpanToBezier

#Since v7.25
Converts a span of the NURBS curve into a Bezier.
[ConstOperation] public BezierCurve ConvertSpanToBezier(
spanIndex
The span index, where (0 <= spanIndex <= Points.Count - Order).
)
Bezier curve if successful, null otherwise.

Create

#ExampleSince v5.0
Constructs a 3D NURBS curve from a list of control points.
public static NurbsCurve Create(
periodic,
If true, create a periodic uniform curve. If false, create a clamped uniform curve.
degree,
(>=1) degree=order-1.
points
control vertex locations.
)
new NURBS curve on success null on error.

CreateFromArc

#Since v6.0
Create a uniform non-rational cubic NURBS approximation of an arc.
public static NurbsCurve CreateFromArc(
arc,
degree,
>=1
cvCount
CV count >=5
)
NURBS curve approximation of an arc on success

CreateFromArc

#Since v5.0
Gets a rational degree 2 NURBS curve representation of the arc. Note that the parameterization of NURBS curve does not match arc's transcendental parameterization.
public static NurbsCurve CreateFromArc(
arc
)
Curve on success, null on failure.

CreateFromCircle

#Since v6.0
Create a uniform non-rational cubic NURBS approximation of a circle.
public static NurbsCurve CreateFromCircle(
circle,
degree,
>=1
cvCount
CV count >=5
)
NURBS curve approximation of a circle on success

CreateFromCircle

#Since v5.0
Gets a rational degree 2 NURBS curve representation of the circle. Note that the parameterization of NURBS curve does not match circle's transcendental parameterization. Use GetRadianFromNurbFormParameter() and GetParameterFromRadian() to convert between the NURBS curve parameter and the transcendental parameter.
public static NurbsCurve CreateFromCircle(
circle
)
Curve on success, null on failure.

CreateFromEllipse

#Since v5.0
Gets a rational degree 2 NURBS curve representation of the ellipse.

Note that the parameterization of the NURBS curve does not match with the transcendental parameterization of the ellipsis.

public static NurbsCurve CreateFromEllipse(
ellipse
)
A NURBS curve representation of this ellipse or null if no such representation could be made.

CreateFromFitPoints

#Since v8.0
Fits a NURBS curve to a dense, ordered set of points.
public static NurbsCurve CreateFromFitPoints(
points,
An enumeration of 3D points.
tolerance,
The fitting tolerance. When in doubt, use the document's model absolute tolerance.
periodic
Set true to create a periodic curve.
)
A NURBS curve if successful, or null on failure.

CreateFromFitPoints

#Since v8.0
Fits a NURBS curve to a dense, ordered set of points.
public static NurbsCurve CreateFromFitPoints(
points,
An enumeration of 3D points.
tolerance,
The fitting tolerance. When in doubt, use the document's model absolute tolerance.
degree,
The desired degree of the output curve.
periodic,
Set true to create a periodic curve.
startTangent,
The tangent direction at the start of the curve. If unknown, set to Vector3d.Unset.
endTangent
The tangent direction at the end of the curve. If unknown, set to Vector3d.Unset.
)
A NURBS curve if successful, or null on failure.

CreateFromLine

#Since v5.0
Gets a non-rational, degree 1 NURBS curve representation of the line.
public static NurbsCurve CreateFromLine(
line
)
Curve on success, null on failure.

CreateHSpline

#Since v7.0
Construct an H-spline from a sequence of interpolation points and optional start and end derivative information
public static NurbsCurve CreateHSpline(
points,
Points to interpolate
startTangent,
Unit tangent vector or Unset
endTangent
Unit tangent vector or Unset
)
NURBS curve approximation of an arc on success

CreateHSpline

#Since v7.0
Construct an H-spline from a sequence of interpolation points
public static NurbsCurve CreateHSpline(
points
Points to interpolate
)

CreateNonRationalArcBezier

#Since v8.0
Creates a non-rational approximation of a rational arc as a single bezier segment
public static NurbsCurve CreateNonRationalArcBezier(
degree,
The degree of the non-rational approximation, can be either 3, 4, or 5
center,
The arc center
start,
A point in the direction of the start point of the arc
end,
A point in the direction of the end point of the arc
radius,
The radius of the arc
tanSlider,
a number between zero and one which moves the tangent control point toward the mid control point of an equivalent quadratic rational arc
midSlider
a number between zero and one which moves the mid control points toward the mid control point of an equivalent quadratic rational arc
)
The approximated arc.

CreateParabolaFromFocus

#Since v6.0
Creates a parabola from focus and end points.
public static NurbsCurve CreateParabolaFromFocus(
focus,
The focal point.
startPoint,
The start point.
endPoint
The end point
)
A 2 degree NURBS curve if successful, false otherwise.

CreateParabolaFromPoints

#Since v8.0
Creates a parabola from three points.
public static NurbsCurve CreateParabolaFromPoints(
startPoint,
The start point.
innerPoint,
A point on the curve.
endPoint
The end point
)
A 2 degree NURBS curve if successful, false otherwise.

CreateParabolaFromVertex

#Since v6.0
Creates a parabola from vertex and end points.
public static NurbsCurve CreateParabolaFromVertex(
vertex,
The vertex point.
startPoint,
The start point.
endPoint
The end point
)
A 2 degree NURBS curve if successful, false otherwise.

CreatePlanarRailFrames

#Since v7.0
Computes planar rail sweep frames at specified parameters.
public Plane[] CreatePlanarRailFrames(
parameters,
A collection of curve parameters.
normal
Unit normal to the plane.
)
An array of planes if successful, or an empty array on failure.

CreateRailFrames

#Since v7.0
Computes relatively parallel rail sweep frames at specified parameters.
public Plane[] CreateRailFrames(
parameters
A collection of curve parameters.
)
An array of planes if successful, or an empty array on failure.

CreateSpiral

#Since v5.2
Create a C2 non-rational uniform cubic NURBS approximation of a swept helix or spiral.
public static NurbsCurve CreateSpiral(
railCurve,
The rail curve.
t0,
Starting portion of rail curve's domain to sweep along.
t1,
Ending portion of rail curve's domain to sweep along.
radiusPoint,
Point used only to get a vector that is perpendicular to the axis. In particular, this vector must not be (anti)parallel to the axis vector.
pitch,
The pitch. Positive values produce counter-clockwise orientation, negative values produce clockwise orientation.
turnCount,
The turn count. If != 0, then the resulting helix will have this many turns. If = 0, then pitch must be != 0 and the approximate distance between turns will be set to pitch. Positive values produce counter-clockwise orientation, negative values produce clockwise orientation.
radius0,
The starting radius. At least one radii must be nonzero. Negative values are allowed.
radius1,
The ending radius. At least one radii must be nonzero. Negative values are allowed.
pointsPerTurn
Number of points to interpolate per turn. Must be greater than 4. When in doubt, use 12.
)
NurbsCurve on success, null on failure.

CreateSpiral

#Since v5.2
Creates a C1 cubic NURBS approximation of a helix or spiral. For a helix, you may have radius0 == radius1. For a spiral radius0 == radius1 produces a circle. Zero and negative radii are permissible.
public static NurbsCurve CreateSpiral(
axisStart,
Helix's axis starting point or center of spiral.
axisDir,
Helix's axis vector or normal to spiral's plane.
radiusPoint,
Point used only to get a vector that is perpendicular to the axis. In particular, this vector must not be (anti)parallel to the axis vector.
pitch,
The pitch, where a spiral has a pitch = 0, and pitch > 0 is the distance between the helix's "threads".
turnCount,
The number of turns in spiral or helix. Positive values produce counter-clockwise orientation, negative values produce clockwise orientation. Note, for a helix, turnCount * pitch = length of the helix's axis.
radius0,
The starting radius.
radius1
The ending radius.
)
NurbsCurve on success, null on failure.

CreateSubDFriendly

#Since v7.0
Create a NURBS curve, that is suitable for calculations like lofting SubD objects, from an existing curve.
public static NurbsCurve CreateSubDFriendly(
curve,
Curve to rebuild as a SubD friendly curve.
pointCount,
Desired number of control points. If periodicClosedCurve is true, the number must be >= 6, otherwise the number must be >= 4.
periodicClosedCurve
True if the SubD friendly curve should be closed and periodic. False in all other cases.
)
A SubD friendly NURBS curve is successful, null otherwise.

CreateSubDFriendly

#Since v7.0
Create a NURBS curve, that is suitable for calculations like lofting SubD objects, from an existing curve.
public static NurbsCurve CreateSubDFriendly(
curve
Curve to rebuild as a SubD friendly curve.
)
A SubD friendly NURBS curve is successful, null otherwise.

CreateSubDFriendly

#Since v7.0
Create a NURBS curve, that is suitable for calculations like lofting SubD objects, through a sequence of curves.
public static NurbsCurve CreateSubDFriendly(
points,
An enumeration of points. Adjacent points must not be equal. If periodicClosedCurve is false, there must be at least two points. If periodicClosedCurve is true, there must be at least three points and it is not necessary to duplicate the first and last points. When periodicClosedCurve is true and the first and last points are equal, the duplicate last point is automatically ignored.
interpolatePoints,
True if the curve should interpolate the points. False if points specify control point locations. In either case, the curve will begin at the first point and end at the last point.
periodicClosedCurve
True to create a periodic closed curve. Do not duplicate the start/end point in the point input.
)
A SubD friendly NURBS curve is successful, null otherwise.

CurvatureAt

Evaluate the curvature vector at a curve parameter.
[ConstOperation] public Vector3d CurvatureAt(
t
Evaluation parameter.
)
inherited fromCurve
Remarks: No error handling.
Curvature vector of the curve at the parameter t.

DataCRC

Returns a CRC calculated from the information that defines the object. This CRC can be used as a quick way to see if two objects are not identical.
[CLSCompliant(false)] public uint DataCRC(
currentRemainder
The current remainder value.
)
inherited fromGeometryBase
CRC of the information the defines the object.

DeleteAllUserStrings

public void DeleteAllUserStrings()
inherited fromGeometryBase

DeleteUserString

public bool DeleteUserString(
key
)
inherited fromGeometryBase

DerivativeAt

Evaluate the derivatives at the specified curve parameter.
[ConstOperation] public Vector3d[] DerivativeAt(
t,
Curve parameter to evaluate.
derivativeCount,
Number of derivatives to evaluate, must be at least 0.
side
Side of parameter to evaluate. If the parameter is at a kink, it makes a big difference whether the evaluation is from below or above.
)
inherited fromCurve
An array of vectors that represents all the derivatives starting at zero.

DerivativeAt

Evaluate the derivatives at the specified curve parameter.
[ConstOperation] public Vector3d[] DerivativeAt(
t,
Curve parameter to evaluate.
derivativeCount
Number of derivatives to evaluate, must be at least 0.
)
inherited fromCurve
An array of vectors that represents all the derivatives starting at zero.

Dispose

Actively reclaims unmanaged resources that this instance uses.
public void Dispose()
inherited fromCommonObject

Dispose

For derived class implementers.

This method is called with argument true when class user calls Dispose(), while with argument false when the Garbage Collector invokes the finalizer, or Finalize() method.

You must reclaim all used unmanaged resources in both cases, and can use this chance to call Dispose on disposable fields if the argument is true.

Also, you must call the base virtual method within your overriding method.

protected override void Dispose(
disposing
true if the call comes from the Dispose() method; false if it comes from the Garbage Collector finalizer.
)
inherited fromCurve

DivideAsContour

Divides this curve at fixed steps along a defined contour line.
[ConstOperation] public Point3d[] DivideAsContour(
contourStart,
The start of the contouring line.
contourEnd,
The end of the contouring line.
interval
A distance to measure on the contouring axis.
)
inherited fromCurve
An array of points; or null on error.

DivideByCount

Divide the curve into a number of equal-length segments.
[ConstOperation] public double[] DivideByCount(
segmentCount,
Segment count. Note that the number of division points may differ from the segment count.
includeEnds,
If true, then the point at the start of the first division segment is returned.
out Point3d[]
points
A list of division points. If the function returns successfully, this point-array will be filled in.
)
inherited fromCurve
Array containing division curve parameters on success, null on failure.

DivideByCount

Divide the curve into a number of equal-length segments.
[ConstOperation] public double[] DivideByCount(
segmentCount,
Segment count. Note that the number of division points may differ from the segment count.
includeEnds
If true, then the point at the start of the first division segment is returned.
)
inherited fromCurve
List of curve parameters at the division points on success, null on failure.

DivideByLength

Divide the curve into specific length segments.
[ConstOperation] public double[] DivideByLength(
segmentLength,
The length of each and every segment (except potentially the last one).
includeEnds,
If true, then the point at the start of the first division segment is returned.
reverse,
If true, then the divisions start from the end of the curve.
out Point3d[]
points
If function is successful, points at each parameter value are returned in points.
)
inherited fromCurve
Array containing division curve parameters if successful, null on failure.

DivideByLength

Divide the curve into specific length segments.
[ConstOperation] public double[] DivideByLength(
segmentLength,
The length of each and every segment (except potentially the last one).
includeEnds,
If true, then the point at the start of the first division segment is returned.
reverse
If true, then the divisions start from the end of the curve.
)
inherited fromCurve
Array containing division curve parameters if successful, null on failure.

DivideByLength

Divide the curve into specific length segments.
[ConstOperation] public double[] DivideByLength(
segmentLength,
The length of each and every segment (except potentially the last one).
includeEnds,
If true, then the point at the start of the first division segment is returned.
out Point3d[]
points
If function is successful, points at each parameter value are returned in points.
)
inherited fromCurve
Array containing division curve parameters if successful, null on failure.

DivideByLength

Divide the curve into specific length segments.
[ConstOperation] public double[] DivideByLength(
segmentLength,
The length of each and every segment (except potentially the last one).
includeEnds
If true, then the point at the start of the first division segment is returned.
)
inherited fromCurve
Array containing division curve parameters if successful, null on failure.

DivideEquidistant

Calculates 3d points on a curve where the linear distance between the points is equal.
public Point3d[] DivideEquidistant(
distance,
The distance between division points.
out double[]
curveParameters
If successful, an array of curve parameters at the point locations.
)
inherited fromCurve
Remarks: Unlike the other divide methods, which divides a curve based on arc length, or the distance along the curve between two points, this function divides a curve based on the linear distance between points.
An array of equidistant points, or null on error.

DivideEquidistant

Calculates 3d points on a curve where the linear distance between the points is equal.
[ConstOperation] public Point3d[] DivideEquidistant(
distance
The distance between division points.
)
inherited fromCurve
Remarks: Unlike the other divide methods, which divides a curve based on arc length, or the distance along the curve between two points, this function divides a curve based on the linear distance between points.
An array of equidistant points, or null on error.

Duplicate

Constructs an exact duplicate of this Curve.
public override GeometryBase Duplicate()
inherited fromCurve

DuplicateCurve

Constructs an exact duplicate of this curve.
public Curve DuplicateCurve()
inherited fromCurve
An exact copy of this curve.

DuplicateSegments

Duplicates curve segments. Explodes polylines, polycurves and G1 discontinuous NURBS curves. Single segment curves, such as lines, arcs, unkinked NURBS curves, are duplicated.
public Curve[] DuplicateSegments()
inherited fromCurve
Remarks: Unlike Curve.GetSubCurves(), this method produces results based on the curve's data structure.
An array of all the segments that make up this curve.

DuplicateShallow

Constructs a light copy of this object. By "light", it is meant that the same underlying data is used until something is done to attempt to change it. For example, you could have a shallow copy of a very heavy mesh object and the same underlying data will be used when doing things like inspecting the number of faces on the mesh. If you modify the location of one of the mesh vertices, the shallow copy will create a full duplicate of the underlying mesh data and the shallow copy will become a deep copy.
public GeometryBase DuplicateShallow()
inherited fromGeometryBase
An object of the same type as this object.

This behavior is overridden by implementing classes.

EnsurePrivateCopy

If you want to keep a copy of this class around by holding onto it in a variable after a command completes, call EnsurePrivateCopy to make sure that this class is not tied to the document. You can call this function as many times as you want.
public void EnsurePrivateCopy()
inherited fromCommonObject

EpsilonEquals

#Since v5.4
Check that all values in other are within epsilon of the values in this
[ConstOperation] public bool EpsilonEquals(
other,
epsilon
)
EpsilonEquals

Extend

Extends a curve until it intersects a collection of objects.
[ConstOperation] public Curve Extend(
side,
The end of the curve to extend.
style,
The style or type of extension to use.
geometry
A collection of objects. Allowable object types are Curve, Surface, Brep.
)
inherited fromCurve
New extended curve result on success, null on failure.

Extend

Extends a curve to a point.
[ConstOperation] public Curve Extend(
side,
The end of the curve to extend.
style,
The style or type of extension to use.
endPoint
A new end point.
)
inherited fromCurve
New extended curve result on success, null on failure.

Extend

Extends a curve by a specific length.
[ConstOperation] public Curve Extend(
side,
Curve end to extend.
length,
Length to add to the curve end.
style
Extension style.
)
inherited fromCurve
A curve with extended ends or null on failure.

Extend

Where possible, analytically extends curve to include the given domain. This will not work on closed curves. The original curve will be identical to the restriction of the resulting curve to the original curve domain.
[ConstOperation] public Curve Extend(
t0,
Start of extension domain, if the start is not inside the Domain of this curve, an attempt will be made to extend the curve.
t1
End of extension domain, if the end is not inside the Domain of this curve, an attempt will be made to extend the curve.
)
inherited fromCurve
Extended curve on success, null on failure.

Extend

Where possible, analytically extends curve to include the given domain. This will not work on closed curves. The original curve will be identical to the restriction of the resulting curve to the original curve domain.
[ConstOperation] public Curve Extend(
domain
Extension domain.
)
inherited fromCurve
Extended curve on success, null on failure.

ExtendByArc

Extends a curve by an Arc until it intersects a collection of objects.
[ConstOperation] public Curve ExtendByArc(
side,
The end of the curve to extend.
geometry
A collection of objects. Allowable object types are Curve, Surface, Brep.
)
inherited fromCurve
New extended curve result on success, null on failure.

ExtendByLine

Extends a curve by a line until it intersects a collection of objects.
[ConstOperation] public Curve ExtendByLine(
side,
The end of the curve to extend.
geometry
A collection of objects. Allowable object types are Curve, Surface, Brep.
)
inherited fromCurve
New extended curve result on success, null on failure.

ExtendOnSurface

Extends a curve on a surface.
[ConstOperation] public Curve ExtendOnSurface(
side,
The end of the curve to extend.
face
BrepFace that contains the curve.
)
inherited fromCurve
New extended curve result on success, null on failure.

ExtendOnSurface

Extends a curve on a surface.
[ConstOperation] public Curve ExtendOnSurface(
side,
The end of the curve to extend.
surface
Surface that contains the curve.
)
inherited fromCurve
New extended curve result on success, null on failure.

ExtremeParameters

Returns the parameter values of all local extrema. Parameter values are in increasing order so consecutive extrema define an interval on which each component of the curve is monotone. Note, non-periodic curves always return the end points.
[ConstOperation] public double[] ExtremeParameters(
direction
The direction in which to perform the calculation.
)
inherited fromCurve
The parameter values of all local extrema.

Fair

Fairs a curve object. Fair works best on degree 3 (cubic) curves. Attempts to remove large curvature variations while limiting the geometry changes to be no more than the specified tolerance.
[ConstOperation] public Curve Fair(
distanceTolerance,
Maximum allowed distance the faired curve is allowed to deviate from the input.
angleTolerance,
(in radians) kinks with angles <= angleTolerance are smoothed out 0.05 is a good default.
clampStart,
The number of (control vertices-1) to preserve at start.

0 = preserve start point

1 = preserve start point and 1st derivative

2 = preserve start point, 1st and 2nd derivative

clampEnd,
Same as clampStart.
iterations
The number of iterations to use in adjusting the curve.
)
inherited fromCurve
Returns new faired Curve on success, null on failure.

FilletSurfaceToCurve

Creates a constant-radius fillet surface between a surface and the curve.
public bool FilletSurfaceToCurve(
face,
the face being filleted.
t,
A parameter on the curve, indicating region of fillet.
u,
A parameter in the u direction of the face indicating which side of the curve to fillet.
v,
A parameter in the v direction of the face indicating which side of the curve to fillet.
radius,
The radius of the constant-radius fillet desired. NOTE: using arcSliders will change the shape of the arcs themselves
alignToCurve,
Does the user want the fillet to align to the curve? 0 - No, ignore the curve's b-spline structure 1 - Yes, match the curves's degree, spans, CVs as much as possible 2 - Same as 1, but iterate to fit to tolerance Note that a value of 1 or 2 will cause nBezierSrfs to be ignored
railDegree,
Desired fillet degree (3 or 5) in the u-direction, along the curve
arcDegree,
Desired fillet degree (2, 3, 4, or 5) in the v-direction, along the fillet arcs.If 2, then the surface is rational in v
arcSliders,
Array of 2 sliders to shape the fillet in the arc direction, used for arcDegree = 3, 4, or 5; input { 0.0, 0.0 } to ignore [0] (-1 to 1) slides tangent arms from base (-1) to theoretical(1) [1] (-1 to 1) slides inner CV(s) from base (-1) to theoretical(1)
numBezierSrfs,
If >0, this indicates the number of equally-spaced fillet surfaces to be output in the rail direction, each surface Bézier in u.
tolerance,
The tolerance. In in doubt, the document's absolute tolerance.
out_fillets,
he results of the fillet calculation.
out double[]
fitResults
array of doubles indicating fitting results: [0] max 3d point deviation along curve [1] max 3d point deviation along face [2] max angle deviation along face(in degrees) [3] max angle deviation between Bézier surfaces(in degrees) [4] max curvature difference between Bézier surfaces
)
inherited fromCurve
true if successful, false otherwise.

FilletSurfaceToRail

Creates a surface between two surfaces, with a fixed rail curve on the first surface.
[ConstOperation] public bool FilletSurfaceToRail(
faceWithCurve,
The first face on which the curve exists
secondFace,
The second face
u1,
A parameter in the u direction of the second face at the side you want to keep after filleting.
v1,
A parameter in the v direction of the second face at the side you want to keep after filleting.
railDegree,
Desired fillet degree (3 or 5) in the u-direction, along the rails
arcDegree,
esired fillet degree (2, 3, 4, or 5) in the v-direction, along the fillet arcs.If 2, then the surface is rational in v
arcSliders,
Array of 2 sliders to shape the fillet in the arc direction, used for arcDegree = 3, 4, or 5; input { 0.0, 0.0 } to ignore [0] (-1 to 1) slides tangent arms from base (-1) to theoretical(1) [1] (-1 to 1) slides inner CV(s) from base (-1) to theoretical(1)
numBezierSrfs,
If >0, this indicates the number of equally-spaced fillet surfaces to be output in the rail direction, each surface Bézier in u.
extend,
If true, then when one input surface is longer than the other, the fillet surface is extended to the input surface edges.
split_type,
The split type
tolerance,
The tolerance. In in doubt, the document's absolute tolerance.
out_fillets,
The results of the fillet calculation.
out_breps0,
The trim or split results of the Brep owned by faceWithCurve.
out_breps1,
The trim or split results of the Brep owned by pFace1.
out double[]
fitResults
array of doubles indicating fitting results: [0] max 3d point deviation along surface 0 [1] max 3d point deviation along surface 1 [2] max angle deviation along surface 0 (in degrees) [3] max angle deviation along surface 1 (in degrees) [4] max angle deviation between Bézier surfaces(in degrees) [5] max curvature difference between Bézier surfaces
)
inherited fromCurve
Remarks: The trim or split input Breps are in OutBreps0, and OutBreps1. If the input faces are from the same Brep, nothing will be added to OutBreps1.If you specified a split type of RhinoFilletSurfaceSplitType::Nothing, then nothing will be added to either OutBreps0 or OutBreps1.
true if successful, false otherwise.

FindLocalInflection

Local minimization for point on a curve with tangent perpendicular to N.
public bool FindLocalInflection(
N,
This vector and the curve tangent define a plane. In this plane, there is a vector V perpendicular to the tangent.
subDomain,
Subdomain of curve to evaluate. This must not be empty.
seed,
A seed parameter, which must be included in the subdomain.
out double
curveParameter,
The parameter on the curve if successful, RhinoMath.UnsetValue if unsuccessful.
out double
angleError
The measure, in radians, of the angle between N and V. The angle will be zero when the result is an inflection.
)
inherited fromCurve
Remarks: The algorithm minimizes the square of the dot product of N with the curve tangent. It is possible that the result will not be close to zero.
true if the minimization succeeds, regardless of angle_error, false if unsuccessful.

Fit

Fits a new curve through an existing curve.
[ConstOperation] public Curve Fit(
degree,
The degree of the returned Curve. Must be bigger than 1.
fitTolerance,
The fitting tolerance. If fitTolerance is RhinoMath.UnsetValue or <=0.0, the document absolute tolerance is used.
angleTolerance
The kink smoothing tolerance in radians.

If angleTolerance is 0.0, all kinks are smoothed

If angleTolerance is >0.0, kinks smaller than angleTolerance are smoothed

If angleTolerance is RhinoMath.UnsetValue or <0.0, the document angle tolerance is used for the kink smoothing

)
inherited fromCurve
Returns a new fitted Curve if successful, null on failure.

FrameAt

Returns a 3d frame at a parameter.
[ConstOperation] public bool FrameAt(
t,
Evaluation parameter.
out Plane
plane
The frame is returned here.
)
inherited fromCurve
true on success, false on failure.

GetBoundingBox

Bounding box solver. Gets the world axis aligned bounding box for the geometry.
[ConstOperation] public BoundingBox GetBoundingBox(
accurate
If true, a physically accurate bounding box will be computed. If not, a bounding box estimate will be computed. For some geometry types there is no difference between the estimate and the accurate bounding box. Estimated bounding boxes can be computed much (much) faster than accurate (or "tight") bounding boxes. Estimated bounding boxes are always similar to or larger than accurate bounding boxes.
)
inherited fromGeometryBase
The bounding box of the geometry in world coordinates or BoundingBox.Empty if not bounding box could be found.

GetBoundingBox

Aligned Bounding box solver. Gets the plane aligned bounding box.
[ConstOperation] public BoundingBox GetBoundingBox(
plane,
Orientation plane for BoundingBox.
out Box
worldBox
Aligned box in World coordinates.
)
inherited fromGeometryBase
A BoundingBox in plane coordinates.

GetBoundingBox

Aligned Bounding box solver. Gets the plane aligned bounding box.
[ConstOperation] public BoundingBox GetBoundingBox(
plane
Orientation plane for BoundingBox.
)
inherited fromGeometryBase
A BoundingBox in plane coordinates.

GetBoundingBox

Aligned Bounding box solver. Gets the world axis aligned bounding box for the transformed geometry.
[ConstOperation] public virtual BoundingBox GetBoundingBox(
xform
Transformation to apply to object prior to the BoundingBox computation. The geometry itself is not modified.
)
inherited fromGeometryBase
The accurate bounding box of the transformed geometry in world coordinates or BoundingBox.Empty if not bounding box could be found.

GetConicSectionType

Returns the type of conic section based on the curve's shape.
[ConstOperation] public ConicSectionType GetConicSectionType()
inherited fromCurve

GetConicSectionType

Returns the type of conic section based on the curve's shape.
[ConstOperation] public ConicSectionType GetConicSectionType(
out Point3d
focus1,
The first focus point, if applicable.
out Point3d
focus2,
The second focus point, if applicable.
out Point3d
center
The center point, if applicable.
)
inherited fromCurve

GetCurveParameterFromNurbsFormParameter

Convert a NURBS curve parameter to a curve parameter.
[ConstOperation] public bool GetCurveParameterFromNurbsFormParameter(
nurbsParameter,
NURBS form parameter.
out double
curveParameter
Curve parameter.
)
inherited fromCurve
Remarks: If HasNurbForm returns 2, this function converts the curve parameter to the NURBS curve parameter.
true on success, false on failure.

GetLength

Gets the length of the curve with a fractional tolerance of 1.0e-8.
[ConstOperation] public double GetLength()
inherited fromCurve
The length of the curve on success, or zero on failure.

GetLength

Get the length of a sub-section of the curve.
[ConstOperation] public double GetLength(
fractionalTolerance,
Desired fractional precision. fabs(("exact" length from start to t) - arc_length)/arc_length <= fractionalTolerance.
subdomain
The calculation is performed on the specified sub-domain of the curve (must be non-decreasing).
)
inherited fromCurve
The length of the sub-curve on success, or zero on failure.

GetLength

Get the length of the curve.
[ConstOperation] public double GetLength(
fractionalTolerance
Desired fractional precision. fabs(("exact" length from start to t) - arc_length)/arc_length <= fractionalTolerance.
)
inherited fromCurve
The length of the curve on success, or zero on failure.

GetLength

Get the length of a sub-section of the curve with a fractional tolerance of 1e-8.
[ConstOperation] public double GetLength(
subdomain
The calculation is performed on the specified sub-domain of the curve (must be non-decreasing).
)
inherited fromCurve
The length of the sub-curve on success, or zero on failure.

GetLocalPerpPoint

Search for a location on the curve, near seedParmameter, that is perpendicular to a test point.
[ConstOperation] public bool GetLocalPerpPoint(
testPoint,
The test point.
seedParmameter,
A "seed" parameter on the curve.
subDomain,
The sub-domain of the curve to search.
out double
curveParameter
The parameter value at the perpendicular point
)
inherited fromCurve
True if a solution is found, false otherwise.

GetLocalPerpPoint

Search for a location on the curve, near seedParmameter, that is perpendicular to a test point.
[ConstOperation] public bool GetLocalPerpPoint(
testPoint,
The test point.
seedParmameter,
A "seed" parameter on the curve.
out double
curveParameter
The parameter value at the perpendicular point
)
inherited fromCurve
True if a solution is found, false otherwise.

GetLocalTangentPoint

Search for a location on the curve, near seedParmameter, that is tangent to a test point.
[ConstOperation] public bool GetLocalTangentPoint(
testPoint,
The test point.
seedParmameter,
A "seed" parameter on the curve.
subDomain,
The sub-domain of the curve to search.
out double
curveParameter
The parameter value at the tangent point
)
inherited fromCurve
True if a solution is found, false otherwise.

GetLocalTangentPoint

Search for a location on the curve, near seedParmameter, that is tangent to a test point.
[ConstOperation] public bool GetLocalTangentPoint(
testPoint,
The test point.
seedParmameter,
A "seed" parameter on the curve.
out double
curveParameter
The parameter value at the tangent point
)
inherited fromCurve
True if a solution is found, false otherwise.

GetNextDiscontinuity

Searches for a derivative, tangent, or curvature discontinuity.
[ConstOperation] public bool GetNextDiscontinuity(
continuityType,
Type of continuity to search for.
t0,
Search begins at t0. If there is a discontinuity at t0, it will be ignored. This makes it possible to repeatedly call GetNextDiscontinuity() and step through the discontinuities.
t1,
(t0 != t1) If there is a discontinuity at t1 it will be ignored unless continuityType is a locus discontinuity type and t1 is at the start or end of the curve.
cosAngleTolerance,
default = cos(1 degree) Used only when continuity is G1_continuous or G2_continuous. If the cosine of the angle between two tangent vectors is <= cosAngleTolerance, then a G1 discontinuity is reported. For G2, values tighter than cos(1 degree) are treated as cos(1 degree), and angles less than about 18 degrees are doubled for the curvature direction test. With the default, a G2 discontinuity is reported if the curvature vectors differ by more than 2 degrees.
curvatureTolerance,
(default = RhinoMath.SqrtEpsilon) Used only when continuity is G2_continuous. If K0 and K1 are curvatures evaluated from above and below and |K0 - K1| <= curvatureTolerance, then the curvature is considered continuous. Otherwise, a curvature discontinuity is reported if the curvature direction test fails or ||K0| - |K1|| > 0.05 * max(|K0|, |K1|). Increasing curvatureTolerance can only loosen the test.
out double
t
If a discontinuity is found, then t reports the parameter at the discontinuity.
)
inherited fromCurve
Parametric continuity tests c = (C0_continuous, ..., G2_continuous): true if a parametric discontinuity was found strictly between t0 and t1. Note well that all curves are parametrically continuous at the ends of their domains. Locus continuity tests c = (C0_locus_continuous, ...,G2_locus_continuous): true if a locus discontinuity was found strictly between t0 and t1 or at t1 is the at the end of a curve. Note well that all open curves (IsClosed()=false) are locus discontinuous at the ends of their domains. All closed curves (IsClosed()=true) are at least C0_locus_continuous at the ends of their domains.

GetNextDiscontinuity

Searches for a derivative, tangent, or curvature discontinuity.
[ConstOperation] public bool GetNextDiscontinuity(
continuityType,
Type of continuity to search for.
t0,
Search begins at t0. If there is a discontinuity at t0, it will be ignored. This makes it possible to repeatedly call GetNextDiscontinuity() and step through the discontinuities.
t1,
(t0 != t1) If there is a discontinuity at t1 it will be ignored unless continuityType is a locus discontinuity type and t1 is at the start or end of the curve.
out double
t
If a discontinuity is found, then t reports the parameter at the discontinuity.
)
inherited fromCurve
Remarks: G1 uses a 1 degree tangent angle tolerance. G2 reports a discontinuity if the curvature vectors differ in direction by more than 2 degrees or in magnitude by more than 5%. These tolerances do not depend on the document's angle tolerance.
Parametric continuity tests c = (C0_continuous, ..., G2_continuous): true if a parametric discontinuity was found strictly between t0 and t1. Note well that all curves are parametrically continuous at the ends of their domains. Locus continuity tests c = (C0_locus_continuous, ...,G2_locus_continuous): true if a locus discontinuity was found strictly between t0 and t1 or at t1 is the at the end of a curve. Note well that all open curves (IsClosed()=false) are locus discontinuous at the ends of their domains. All closed curves (IsClosed()=true) are at least C0_locus_continuous at the ends of their domains.

GetNurbsFormParameterFromCurveParameter

Convert a curve parameter to a NURBS curve parameter.
[ConstOperation] public bool GetNurbsFormParameterFromCurveParameter(
curveParameter,
Curve parameter.
out double
nurbsParameter
NURBS form parameter.
)
inherited fromCurve
Remarks: If GetNurbForm returns 2, this function converts the curve parameter to the NURBS curve parameter.
true on success, false on failure.

GetObjectData

Populates a System.Runtime.Serialization.SerializationInfo with the data needed to serialize the target object.
[SecurityPermission(SecurityAction.LinkDemand, Flags = SecurityPermissionFlag.SerializationFormatter)] public virtual void GetObjectData(
info,
The System.Runtime.Serialization.SerializationInfo to populate with data.
context
The destination (see System.Runtime.Serialization.StreamingContext) for this serialization.
)
inherited fromCommonObject

GetPerpendicularFrames

Gets a collection of perpendicular frames along the curve. Perpendicular frames are also known as 'Zero-twisting frames' and they minimize rotation from one frame to the next.
[ConstOperation] public Plane[] GetPerpendicularFrames(
parameters
A collection of strictly increasing curve parameters to place perpendicular frames on.
)
inherited fromCurve
An array of perpendicular frames on success or null on failure.
InvalidOperationExceptionThrown when the curve parameters are not increasing.

GetSubCurves

Gets subcurves from a curve. The results will be similar to what is produced by Rhino's Explode command.
public Curve[] GetSubCurves()
inherited fromCurve
Remarks: Unlike Curve.DuplicateSegments(), this method produces results based on the curve's geometry.
An array of subcurves that make up this curve.

GetUserString

Gets user string from this geometry.
public string GetUserString(
key
id used to retrieve the string.
)
inherited fromGeometryBase
string associated with the key if successful. null if no key was found.

GetUserStrings

Gets a copy of all (user key string, user value string) pairs attached to this geometry.
public NameValueCollection GetUserStrings()
inherited fromGeometryBase
A new collection.

GrevilleParameter

#Since v5.0
Gets the greville (edit point) parameter that belongs to the control point at the specified index.
[ConstOperation] public double GrevilleParameter(
index
Index of Greville (Edit) point.
)

GrevilleParameters

#Since v5.0
Gets all Greville parameters for this curve.
[ConstOperation] public double[] GrevilleParameters()

GrevillePoint

#Since v5.0
Gets the Greville parameter that belongs to the control point at the specified index.
[ConstOperation] public Point3d GrevillePoint(
index
Index of Greville point.
)

GrevillePoints

#Since v5.0
Gets all Greville points for this curve.
[ConstOperation] public Point3dList GrevillePoints()

GrevillePoints

#Since v6.18
Gets Greville points for this curve.
[ConstOperation] public Point3dList GrevillePoints(
all
If true, then all Greville points are returns. If false, only edit points are returned.
)
A list of points if successful, null otherwise.

HasNurbsForm

Does a NURBS curve representation of this curve exist?
[ConstOperation] public int HasNurbsForm()
inherited fromCurve
0 unable to create NURBS representation with desired accuracy. 1 success - NURBS parameterization matches the curve's to the desired accuracy 2 success - NURBS point locus matches the curve's and the domain of the NURBS curve is correct. However, This curve's parameterization and the NURBS curve parameterization may not match. This situation happens when getting NURBS representations of curves that have a transcendental parameterization like circles.

IncreaseDegree

#ExampleSince v5.0
Increase the degree of this curve.
public bool IncreaseDegree(
desiredDegree
The desired degree. Degrees should be number between and including 1 and 11.
)
true on success, false on failure.

InflectionPoints

Returns a curve's inflection points. An inflection point is a location on a curve at which the sign of the curvature (i.e., the concavity) changes. The curvature at these locations is always 0.
[ConstOperation] public Point3d[] InflectionPoints()
inherited fromCurve
An array of points if successful, null if not successful or on error.

InflectionPoints

Returns a curve's inflection points. An inflection point is a location on a curve at which the sign of the curvature (i.e., the concavity) changes. The curvature at these locations is always 0.
[ConstOperation] public Point3d[] InflectionPoints(
out double[]
curveParameters
An array of curve parameters at the inflection points.
)
inherited fromCurve
An array of points if successful, null if not successful or on error.

IsArc

Test a curve to see if it can be represented by an arc or circle within RhinoMath.ZeroTolerance.
public bool IsArc()
inherited fromCurve
true if the curve can be represented by an arc or a circle within tolerance.

IsArc

Test a curve to see if it can be represented by an arc or circle within the given tolerance.
public bool IsArc(
tolerance
Tolerance to use when checking.
)
inherited fromCurve
true if the curve can be represented by an arc or a circle within tolerance.

IsCircle

Test a curve to see if it can be represented by a circle within RhinoMath.ZeroTolerance.
public bool IsCircle()
inherited fromCurve
true if the Curve can be represented by a circle within tolerance.

IsCircle

Test a curve to see if it can be represented by a circle within the given tolerance.
public bool IsCircle(
tolerance
Tolerance to use when checking.
)
inherited fromCurve
true if the curve can be represented by a circle to within tolerance.

IsClosable

Decide if it makes sense to close off this curve by moving the endpoint to the start based on start-end gap size and length of curve as approximated by chord defined by 6 points.
[ConstOperation] public bool IsClosable(
tolerance,
Maximum allowable distance between start and end. If start - end gap is greater than tolerance, this function will return false.
minimumAbsoluteSize,
If greater than 0.0 and none of the interior sampled points are at least minimumAbsoluteSize from start, this function will return false.
minimumRelativeSize
If greater than 1.0 and chord length is less than minimumRelativeSize*gap, this function will return false.
)
inherited fromCurve
true if start and end points are close enough based on above conditions.

IsClosable

Decide if it makes sense to close off this curve by moving the endpoint to the start based on start-end gap size and length of curve as approximated by chord defined by 6 points.
[ConstOperation] public bool IsClosable(
tolerance
Maximum allowable distance between start and end. If start - end gap is greater than tolerance, this function will return false.
)
inherited fromCurve
true if start and end points are close enough based on above conditions.

IsContinuous

Test continuity at a curve parameter value.
[ConstOperation] public bool IsContinuous(
continuityType,
Type of continuity to test for.
t
Parameter to test.
)
inherited fromCurve
Remarks: G1 uses a 1 degree tangent angle tolerance. G2 reports a discontinuity if the curvature vectors differ in direction by more than 2 degrees or in magnitude by more than 5%. These tolerances do not depend on the document's angle tolerance.
true if the curve has at least the c type continuity at the parameter t.

IsDuplicate

#Since v5.0
Determines if two curves are similar.
public static bool IsDuplicate(
curveA,
First curve used in comparison.
curveB,
Second curve used in comparison.
ignoreParameterization,
if true, parameterization and orientation are ignored.
tolerance
tolerance to use when comparing control points.
)
true if curves are similar within tolerance.

IsEllipse

Test a curve to see if it can be represented by an ellipse within RhinoMath.ZeroTolerance.
public bool IsEllipse()
inherited fromCurve
true if the Curve can be represented by an ellipse within tolerance.

IsEllipse

Test a curve to see if it can be represented by an ellipse within a given tolerance.
public bool IsEllipse(
tolerance
Tolerance to use for checking.
)
inherited fromCurve
true if the Curve can be represented by an ellipse within tolerance.

IsInPlane

Test a curve to see if it lies in a specific plane.
public bool IsInPlane(
testPlane,
Plane to test for.
tolerance
Tolerance to use when checking.
)
inherited fromCurve
true if the maximum distance from the curve to the testPlane is <= tolerance.

IsInPlane

Test a curve to see if it lies in a specific plane.
public bool IsInPlane(
testPlane
Plane to test for.
)
inherited fromCurve
true if the maximum distance from the curve to the testPlane is <= RhinoMath.ZeroTolerance.

IsLinear

Test a curve to see if it is linear to within RhinoMath.ZeroTolerance units (1e-12).
public bool IsLinear()
inherited fromCurve
true if the curve is linear.

IsLinear

Test a curve to see if it is linear to within the custom tolerance.
public bool IsLinear(
tolerance
Tolerance to use when checking linearity.
)
inherited fromCurve
true if the ends of the curve are farther than tolerance apart and the maximum distance from any point on the curve to the line segment connecting the curve ends is <= tolerance.

IsPlanar

Test a curve for planarity.
public bool IsPlanar()
inherited fromCurve
true if the curve is planar (flat) to within RhinoMath.ZeroTolerance units (1e-12).

IsPlanar

Test a curve for planarity.
public bool IsPlanar(
tolerance
Tolerance to use when checking.
)
inherited fromCurve
true if there is a plane such that the maximum distance from the curve to the plane is <= tolerance.

IsPolyline

Several types of Curve can have the form of a polyline including a degree 1 NurbsCurve, a PolylineCurve, and a PolyCurve all of whose segments are some form of polyline. IsPolyline tests a curve to see if it can be represented as a polyline.
public bool IsPolyline()
inherited fromCurve
true if this curve can be represented as a polyline; otherwise, false.

IsShort

Used to quickly find short curves.
[ConstOperation] public bool IsShort(
tolerance,
Length threshold value for "shortness".
subdomain
The test is performed on the interval that is the intersection of sub-domain with Domain()
)
inherited fromCurve
Remarks: Faster than calling Length() and testing the result.
true if the length of the curve is <= tolerance.

IsShort

Used to quickly find short curves.
[ConstOperation] public bool IsShort(
tolerance
Length threshold value for "shortness".
)
inherited fromCurve
Remarks: Faster than calling Length() and testing the result.
true if the length of the curve is <= tolerance.

IsValidWithLog

Determines if an object is valid. Also provides a report on errors if this object happens not to be valid.
public bool IsValidWithLog(
out string
log
A textual log. This out parameter is assigned during this call.
)
inherited fromCommonObject
true if this object is valid; false otherwise.

LcoalClosestPoint

Find parameter of the point on a curve that is locally closest to the testPoint. The search for a local close point starts at a seed parameter.
[ConstOperation] [EditorBrowsable(EditorBrowsableState.Never)] public bool LcoalClosestPoint(
testPoint,
A point to test against.
seed,
The seed parameter.
out double
t
>Parameter of the curve that is closest to testPoint.
)
obsoleteTypo: use LocalClosestPoint
Obsoleteinherited fromCurve
true if the search is successful, false if the search fails.

LengthParameter

Gets the parameter along the curve which coincides with a given length along the curve.
[ConstOperation] public bool LengthParameter(
segmentLength,
Length of segment to measure. Must be less than or equal to the length of the sub-domain.
out double
t,
Parameter such that the length of the curve from the start of the sub-domain to t is s.
fractionalTolerance,
Desired fractional precision. fabs(("exact" length from start to t) - arc_length)/arc_length <= fractionalTolerance.
subdomain
The calculation is performed on the specified sub-domain of the curve rather than the whole curve.
)
inherited fromCurve
true on success, false on failure.

LengthParameter

Gets the parameter along the curve which coincides with a given length along the curve.
[ConstOperation] public bool LengthParameter(
segmentLength,
Length of segment to measure. Must be less than or equal to the length of the curve.
out double
t,
Parameter such that the length of the curve from the curve start point to t equals s.
fractionalTolerance
Desired fractional precision. fabs(("exact" length from start to t) - arc_length)/arc_length <= fractionalTolerance.
)
inherited fromCurve
true on success, false on failure.

LengthParameter

Gets the parameter along the curve which coincides with a given length along the curve. A fractional tolerance of 1e-8 is used in this version of the function.
[ConstOperation] public bool LengthParameter(
segmentLength,
Length of segment to measure. Must be less than or equal to the length of the sub-domain.
out double
t,
Parameter such that the length of the curve from the start of the sub-domain to t is s.
subdomain
The calculation is performed on the specified sub-domain of the curve rather than the whole curve.
)
inherited fromCurve
true on success, false on failure.

LengthParameter

Gets the parameter along the curve which coincides with a given length along the curve. A fractional tolerance of 1e-8 is used in this version of the function.
[ConstOperation] public bool LengthParameter(
segmentLength,
Length of segment to measure. Must be less than or equal to the length of the curve.
out double
t
Parameter such that the length of the curve from the curve start point to t equals length.
)
inherited fromCurve
true on success, false on failure.

LocalClosestPoint

Find parameter of the point on a curve that is locally closest to the testPoint. The search for a local close point starts at a seed parameter.
[ConstOperation] public bool LocalClosestPoint(
testPoint,
A point to test against.
seed,
The seed parameter.
out double
t
>Parameter of the curve that is closest to testPoint.
)
inherited fromCurve
true if the search is successful, false if the search fails.

MakeClosed

If IsClosed, just return true. Otherwise, decide if curve can be closed as follows: Linear curves polylinear curves with 2 segments, NURBS with 3 or less control points cannot be made closed. Also, if tolerance > 0 and the gap between start and end is larger than tolerance, curve cannot be made closed. Adjust the curve's endpoint to match its start point.
public bool MakeClosed(
tolerance
If nonzero, and the gap is more than tolerance, curve cannot be made closed.
)
inherited fromCurve
true on success, false on failure.

MakeCompatible

#Since v6.0
For expert use only. From the input curves, make an array of compatible NURBS curves.
public static NurbsCurve[] MakeCompatible(
curves,
The input curves.
startPt,
The start point. To omit, specify Point3d.Unset.
endPt,
The end point. To omit, specify Point3d.Unset.
simplifyMethod,
The simplify method.
numPoints,
The number of rebuild points.
refitTolerance,
The refit tolerance.
angleTolerance
The angle tolerance in radians.
)
The output NURBS surfaces if successful.

MakeDeformable

If possible, converts the object into a form that can be accurately modified with "squishy" transformations like projections, shears, an non-uniform scaling.
public bool MakeDeformable()
inherited fromGeometryBase
false if object cannot be converted to a deformable object. true if object was already deformable or was converted into a deformable object.

MakePiecewiseBezier

#Since v5.0
Clamps ends and adds knots so the NURBS curve has Bezier spans (all distinct knots have multiplicity = degree).
public bool MakePiecewiseBezier(
setEndWeightsToOne
If true and the first or last weight is not one, then the first and last spans are re-parameterized so that the end weights are one.
)
true on success, false on failure.

MakeUniform

#Since v8.24
Changes a NURBS curve so each control point affects the curve exactly the same way. This make the knot vectors uniform without changing the control point locations. This will change the object shape slightly.
public bool MakeUniform()
True if successful, false otherwise.

MatchToCurve

#Since v8.0
Constructs a NURBS curve with the start and end matching the start and end of targetCurve, and Greville points on targetCurve.
public NurbsCurve MatchToCurve(
targetCurve,
The target curve.
maxEndDistance,
If maxEndDistance dist > 0, the curve's start must be within maxEndDistance of targetCurve start. If maxEndDistance dist > 0, the curve's end must be within maxEndDistance of targetCurve end.
maxInteriorDistance,
If maxInteriorDistance > 0, all interior Greville points of the curve must be within maxInteriorDistance of targetCurve.
matchTolerance,
The matching tolerance.
maxLevel
If maxLevel > 0, the result will be refined up to that many times, attempting to get the result within matchTolerance. If matchTolerance <= 0, no refinement will be done. In any case, the parameters closest points on targetCurve of the Greville points of the curve must be monotonic increasing.
)
Curve on success, null on failure.

MaxCurvaturePoints

Returns a curve's maximum curvature points. The maximum curvature points identify where the curvature starts to decrease in both directions from the points.
[ConstOperation] public Point3d[] MaxCurvaturePoints()
inherited fromCurve
An array of points if successful, null if not successful or on error.

MaxCurvaturePoints

Returns a curve's maximum curvature points. The maximum curvature points identify where the curvature starts to decrease in both directions from the points.
[ConstOperation] public Point3d[] MaxCurvaturePoints(
out double[]
curveParameters
An array of curve parameters at the maximum curvature points.
)
inherited fromCurve
An array of points if successful, null if not successful or on error.

MemoryEstimate

Computes an estimate of the number of bytes that this object is using in memory.
[CLSCompliant(false)] [ConstOperation] public uint MemoryEstimate()
inherited fromGeometryBase
An estimated memory footprint.

NonConstOperation

For derived classes implementers.

Defines the necessary implementation to free the instance from being constant.

protected override void NonConstOperation()
inherited fromCurve

NormalizedLengthParameter

Input the parameter of the point on the curve that is a prescribed arc length from the start of the curve.
[ConstOperation] public bool NormalizedLengthParameter(
s,
Normalized arc length parameter. E.g., 0 = start of curve, 1/2 = midpoint of curve, 1 = end of curve.
out double
t,
Parameter such that the length of the curve from its start to t is arc_length.
fractionalTolerance,
Desired fractional precision. fabs(("exact" length from start to t) - arc_length)/arc_length <= fractionalTolerance.
subdomain
The calculation is performed on the specified sub-domain of the curve.
)
inherited fromCurve
true on success, false on failure.

NormalizedLengthParameter

Input the parameter of the point on the curve that is a prescribed arc length from the start of the curve.
[ConstOperation] public bool NormalizedLengthParameter(
s,
Normalized arc length parameter. E.g., 0 = start of curve, 1/2 = midpoint of curve, 1 = end of curve.
out double
t,
Parameter such that the length of the curve from its start to t is arc_length.
fractionalTolerance
Desired fractional precision. fabs(("exact" length from start to t) - arc_length)/arc_length <= fractionalTolerance.
)
inherited fromCurve
true on success, false on failure.

NormalizedLengthParameter

Input the parameter of the point on the curve that is a prescribed arc length from the start of the curve. A fractional tolerance of 1e-8 is used in this version of the function.
[ConstOperation] public bool NormalizedLengthParameter(
s,
Normalized arc length parameter. E.g., 0 = start of curve, 1/2 = midpoint of curve, 1 = end of curve.
out double
t,
Parameter such that the length of the curve from its start to t is arc_length.
subdomain
The calculation is performed on the specified sub-domain of the curve.
)
inherited fromCurve
true on success, false on failure.

NormalizedLengthParameter

Input the parameter of the point on the curve that is a prescribed arc length from the start of the curve. A fractional tolerance of 1e-8 is used in this version of the function.
[ConstOperation] public bool NormalizedLengthParameter(
s,
Normalized arc length parameter. E.g., 0 = start of curve, 1/2 = midpoint of curve, 1 = end of curve.
out double
t
Parameter such that the length of the curve from its start to t is arc_length.
)
inherited fromCurve
true on success, false on failure.

NormalizedLengthParameters

Input the parameter of the point on the curve that is a prescribed arc length from the start of the curve.
[ConstOperation] public double[] NormalizedLengthParameters(
s,
Array of normalized arc length parameters. E.g., 0 = start of curve, 1/2 = midpoint of curve, 1 = end of curve.
absoluteTolerance,
If absoluteTolerance > 0, then the difference between (s[i+1]-s[i])*curve_length and the length of the curve segment from t[i] to t[i+1] will be <= absoluteTolerance.
fractionalTolerance,
Desired fractional precision for each segment. fabs("true" length - actual length)/(actual length) <= fractionalTolerance.
subdomain
The calculation is performed on the specified sub-domain of the curve. A 0.0 s value corresponds to sub-domain->Min() and a 1.0 s value corresponds to sub-domain->Max().
)
inherited fromCurve
If successful, array of curve parameters such that the length of the curve from its start to t[i] is s[i]*curve_length. Null on failure.

NormalizedLengthParameters

Input the parameter of the point on the curve that is a prescribed arc length from the start of the curve.
[ConstOperation] public double[] NormalizedLengthParameters(
s,
Array of normalized arc length parameters. E.g., 0 = start of curve, 1/2 = midpoint of curve, 1 = end of curve.
absoluteTolerance,
If absoluteTolerance > 0, then the difference between (s[i+1]-s[i])*curve_length and the length of the curve segment from t[i] to t[i+1] will be <= absoluteTolerance.
fractionalTolerance
Desired fractional precision for each segment. fabs("true" length - actual length)/(actual length) <= fractionalTolerance.
)
inherited fromCurve
If successful, array of curve parameters such that the length of the curve from its start to t[i] is s[i]*curve_length. Null on failure.

NormalizedLengthParameters

Input the parameter of the point on the curve that is a prescribed arc length from the start of the curve. A fractional tolerance of 1e-8 is used in this version of the function.
[ConstOperation] public double[] NormalizedLengthParameters(
s,
Array of normalized arc length parameters. E.g., 0 = start of curve, 1/2 = midpoint of curve, 1 = end of curve.
absoluteTolerance,
If absoluteTolerance > 0, then the difference between (s[i+1]-s[i])*curve_length and the length of the curve segment from t[i] to t[i+1] will be <= absoluteTolerance.
subdomain
The calculation is performed on the specified sub-domain of the curve. A 0.0 s value corresponds to sub-domain->Min() and a 1.0 s value corresponds to sub-domain->Max().
)
inherited fromCurve
If successful, array of curve parameters such that the length of the curve from its start to t[i] is s[i]*curve_length. Null on failure.

NormalizedLengthParameters

Input the parameter of the point on the curve that is a prescribed arc length from the start of the curve. A fractional tolerance of 1e-8 is used in this version of the function.
[ConstOperation] public double[] NormalizedLengthParameters(
s,
Array of normalized arc length parameters. E.g., 0 = start of curve, 1/2 = midpoint of curve, 1 = end of curve.
absoluteTolerance
If absoluteTolerance > 0, then the difference between (s[i+1]-s[i])*curve_length and the length of the curve segment from t[i] to t[i+1] will be <= absoluteTolerance.
)
inherited fromCurve
If successful, array of curve parameters such that the length of the curve from its start to t[i] is s[i]*curve_length. Null on failure.

Offset

Offsets this curve. If you have a nice offset, then there will be one entry in the array. If the original curve had kinks or the offset curve had self intersections, you will get multiple segments in the output array.
[ConstOperation] public Curve[] Offset(
plane,
Offset solution plane.
distance,
The positive or negative distance to offset.
tolerance,
The offset or fitting tolerance.
cornerStyle
Corner style for offset kinks.
)
inherited fromCurve
Offset curves on success, null on failure.

Offset

Offsets this curve. If you have a nice offset, then there will be one entry in the array. If the original curve had kinks or the offset curve had self intersections, you will get multiple segments in the output array.
[ConstOperation] public Curve[] Offset(
directionPoint,
A point that indicates the direction of the offset.
normal,
The normal to the offset plane.
distance,
The positive or negative distance to offset.
tolerance,
The offset or fitting tolerance.
cornerStyle
Corner style for offset kinks.
)
inherited fromCurve
Offset curves on success, null on failure.

Offset

Offsets this curve. If you have a nice offset, then there will be one entry in the array. If the original curve had kinks or the offset curve had self intersections, you will get multiple segments in the output array.
[ConstOperation] public Curve[] Offset(
directionPoint,
A point that indicates the direction of the offset.
normal,
The normal to the offset plane.
distance,
The positive or negative distance to offset.
tolerance,
The offset or fitting tolerance.
angleTolerance,
The angle tolerance, in radians, used to decide whether to split at kinks.
loose,
If false, offset within tolerance. If true, offset by moving edit points.
cornerStyle,
Corner style for offset kinks.
endStyle
End style for non-loose, non-closed curve offsets.
)
inherited fromCurve
Offset curves on success, null on failure.

OffsetNormalToSurface

Finds a curve by offsetting an existing curve normal to a surface. The caller is responsible for ensuring that the curve lies on the input surface.
[ConstOperation] public Curve OffsetNormalToSurface(
surface,
Surface from which normals are calculated.
height
Offset distance.
)
inherited fromCurve
Curve offset normal to the surface, if successful, null otherwise. The offset curve is interpolated through a small number of points so if the surface is irregular or complicated, the result will not be a very accurate offset.

OffsetOnSurface

Offset this curve on a brep face surface. This curve must lie on the surface.
[ConstOperation] public Curve[] OffsetOnSurface(
face,
The brep face on which to offset.
distance,
A distance to offset (+)left, (-)right.
fittingTolerance
A fitting tolerance.
)
inherited fromCurve
Offset curves on success, or null on failure.
ArgumentNullExceptionIf face is null.

OffsetOnSurface

Offset a curve on a brep face surface. This curve must lie on the surface.

This overload allows to specify different offsets for different curve parameters.

[ConstOperation] public Curve[] OffsetOnSurface(
face,
The brep face on which to offset.
curveParameters,
Curve parameters corresponding to the offset distances.
offsetDistances,
distances to offset (+)left, (-)right.
fittingTolerance
A fitting tolerance.
)
inherited fromCurve
Offset curves on success, or null on failure.
ArgumentNullExceptionIf face, curveParameters or offsetDistances are null.

OffsetOnSurface

Offset a curve on a brep face surface. This curve must lie on the surface.

This overload allows to specify a surface point at which the offset will pass.

[ConstOperation] public Curve[] OffsetOnSurface(
face,
The brep face on which to offset.
throughPoint,
2d point on the brep face to offset through.
fittingTolerance
A fitting tolerance.
)
inherited fromCurve
Offset curves on success, or null on failure.
ArgumentNullExceptionIf face is null.

OffsetOnSurface

Offset a curve on a surface. This curve must lie on the surface.
[ConstOperation] public Curve[] OffsetOnSurface(
surface,
A surface on which to offset.
distance,
A distance to offset (+)left, (-)right.
fittingTolerance
A fitting tolerance.
)
inherited fromCurve
Offset curves on success, or null on failure.
ArgumentNullExceptionIf surface is null.

OffsetOnSurface

Offset this curve on a surface. This curve must lie on the surface.

This overload allows to specify different offsets for different curve parameters.

[ConstOperation] public Curve[] OffsetOnSurface(
surface,
A surface on which to offset.
curveParameters,
Curve parameters corresponding to the offset distances.
offsetDistances,
Distances to offset (+)left, (-)right.
fittingTolerance
A fitting tolerance.
)
inherited fromCurve
Offset curves on success, or null on failure.
ArgumentNullExceptionIf surface, curveParameters or offsetDistances are null.

OffsetOnSurface

Offset a curve on a surface. This curve must lie on the surface.

This overload allows to specify a surface point at which the offset will pass.

[ConstOperation] public Curve[] OffsetOnSurface(
surface,
A surface on which to offset.
throughPoint,
2d point on the brep face to offset through.
fittingTolerance
A fitting tolerance.
)
inherited fromCurve
Offset curves on success, or null on failure.
ArgumentNullExceptionIf surface is null.

OffsetTangentToSurface

Finds a curve by offsetting an existing curve tangent to a surface. The caller is responsible for ensuring that the curve lies on the input surface.
[ConstOperation] public Curve OffsetTangentToSurface(
surface,
Surface from which tangents are calculated.
height
Offset distance.
)
inherited fromCurve
Curve offset tangent to the surface, if successful, null otherwise. The offset curve is interpolated through a small number of points so if the surface is irregular or complicated, the result will not be a very accurate offset.

OnSwitchToNonConst

Is called when a non-constant operation occurs.
protected override void OnSwitchToNonConst()
inherited fromGeometryBase

PerpendicularFrameAt

Return a 3d frame at a parameter. This is slightly different than FrameAt in that the frame is computed in a way so there is minimal rotation from one frame to the next.
[ConstOperation] public bool PerpendicularFrameAt(
t,
Evaluation parameter.
out Plane
plane
The frame is returned here.
)
inherited fromCurve
true on success, false on failure.

PointAt

Evaluates point at a curve parameter.
[ConstOperation] public Point3d PointAt(
t
Evaluation parameter.
)
inherited fromCurve
Remarks: No error handling.
Point (location of curve at the parameter t).

PointAtLength

Gets a point at a certain length along the curve. The length must be non-negative and less than or equal to the length of the curve. Lengths will not be wrapped when the curve is closed or periodic.
[ConstOperation] public Point3d PointAtLength(
length
Length along the curve between the start point and the returned point.
)
inherited fromCurve
Point on the curve at the specified length from the start point or Poin3d.Unset on failure.

PointAtNormalizedLength

Gets a point at a certain normalized length along the curve. The length must be between or including 0.0 and 1.0, where 0.0 equals the start of the curve and 1.0 equals the end of the curve.
[ConstOperation] public Point3d PointAtNormalizedLength(
length
Normalized length along the curve between the start point and the returned point.
)
inherited fromCurve
Point on the curve at the specified normalized length from the start point or Poin3d.Unset on failure.

PullToBrepFace

Pulls this curve to a brep face and returns the result of that operation.
[ConstOperation] public Curve[] PullToBrepFace(
face,
A brep face.
tolerance
A tolerance value.
)
inherited fromCurve
An array containing the resulting curves after pulling. This array could be empty.
ArgumentNullExceptionIf face is null.

PullToMesh

Projects this curve onto a mesh.
[ConstOperation] public Curve PullToMesh(
Mesh
mesh,
Mesh to project onto.
tolerance,
Input tolerance. When in doubt, the document's model absolute tolerance.
loose
If true, the curve's edit points are pulled back to the mesh. If any edit point misses the mesh, the curve will not be created.
)
inherited fromCurve
A curve if success, or null on failure.

PullToMesh

Makes a polyline approximation of the curve and gets the closest point on the mesh for each point on the curve. Then it "connects the points" so that you have a polyline on the mesh.
[ConstOperation] public PolylineCurve PullToMesh(
Mesh
mesh,
Mesh to project onto.
tolerance
Input tolerance. When in doubt, the document's model absolute tolerance.
)
inherited fromCurve
A curve if success, or null on failure.

Rebuild

Rebuild a curve with a specific point count.
[ConstOperation] public NurbsCurve Rebuild(
pointCount,
Number of control points in the rebuild curve.
degree,
Degree of curve. Valid values are between and including 1 and 11.
preserveTangents
If true, the end tangents of the input curve will be preserved.
)
inherited fromCurve
A NURBS curve on success or null on failure.

RebuildToMatchTemplateCurve

Rebuilds this curve so it takes on the degree, knot vector, and control point count of a template curve.
[ConstOperation] public NurbsCurve RebuildToMatchTemplateCurve(
templateCurve,
The curve to match.
flipSourceDirection,
If true and this curve is open, its direction is flipped (reversed) before sampling. Set this when this curve runs opposite the template.
preserveEndTangents,
If true and the result is open with at least 4 control points, the interior end control points are adjusted so the result's end tangents match this curve's.
makeSubDFriendly,
If true, the result is converted to a SubD friendly curve.
out Line
maximumDeviation
A line from this curve to the rebuilt curve at the point of maximum separation (the "from" point is on this curve, the "to" point is on the rebuilt curve), or Line.Unset if it cannot be computed.
)
inherited fromCurve
The rebuilt NURBS curve, or null if the template curve is unusable or the rebuild fails.

RemoveShortSegments

Looks for segments that are shorter than tolerance that can be removed. Does not change the domain, but it will change the relative parameterization.
public bool RemoveShortSegments(
tolerance
Tolerance which defines "short" segments.
)
inherited fromCurve
true if removable short segments were found. false if no removable short segments were found.

Repair

Repairs a curve.
public bool Repair(
tolerance
The repair tolerance.
)
inherited fromCurve
true if successful, false otherwise.

Reparameterize

#Since v5.0
Use a linear fractional transformation to re-parameterize the NURBS curve. This does not change the curve's domain.
public bool Reparameterize(
c
re-parameterization constant (generally speaking, c should be > 0). The control points and knots are adjusted so that output_nurbs(t) = input_nurbs(lambda(t)), where lambda(t) = c*t/( (c-1)*t + 1 ). Note that lambda(0) = 0, lambda(1) = 1, lambda'(t) > 0, lambda'(0) = c and lambda'(1) = 1/c.
)
Remarks: The CV and knot values are values are changed so that output_nurbs(t) = input_nurbs(lambda(t)).
true if successful.

Reparameterize

Reparameterizes a curve using automatic parameterization.
public Curve Reparameterize()
inherited fromCurve
Remarks: Poorly parameterized objects may not intersect and trim properly when combined with other objects. "Poorly parameterized" means the curve's domain or the surface's u or v spaces are tiny or huge compared to the size of the object. When curves are parameterized with a [0,1] domain, both the accuracy and the precision of geometric calculations like intersections and closest points are reduced, sometimes dramatically. Ideally the domain of a curve is close to it's length.
The reparameterized curve if successful, null otherwise.

Reverse

Reverses the direction of the curve.
public bool Reverse()
inherited fromCurve
Remarks: If reversed, the domain changes from [a,b] to [-b,-a]
true on success, false on failure.

RibbonOffset

Offsets a closed curve in the following way: pProject the curve to a plane with given normal. Then, loose Offset the projection by distance + blend_radius and trim off self-intersection. THen, Offset the remaining curve back in the opposite direction by blend_radius, filling gaps with blends. Finally, use the elevations of the input curve to get the correct elevations of the result.
public Curve RibbonOffset(
distance,
The positive distance to offset the curve.
blendRadius,
Positive, typically the same as distance. When the offset results in a self-intersection that gets trimmed off at a kink, the kink will be blended out using this radius.
directionPoint,
A point that indicates the direction of the offset. If the offset is inward, the point's projection to the plane should be well within the curve. It will be used to decide which part of the offset to keep if there are self-intersections.
normal,
A vector that indicates the normal of the plane in which the offset will occur.
tolerance,
Used to determine self-intersections, not offset error.
out Curve[]
crossSections,
Contains lines between input and the offset that might be useful as input to Brep.CreateFromSweep or some other surface creation tool.
out Surface[]
ruledSurfaces
Contain ruled surfaces between the input and the parts of the offset that correspond exactly. Note, there will be gaps between these at blends.
)
inherited fromCurve
The offset curve if successful.

RibbonOffset

Offsets a closed curve in the following way: pProject the curve to a plane with given normal. Then, loose Offset the projection by distance + blend_radius and trim off self-intersection. THen, Offset the remaining curve back in the opposite direction by blend_radius, filling gaps with blends. Finally, use the elevations of the input curve to get the correct elevations of the result.
public Curve RibbonOffset(
distance,
The positive distance to offset the curve.
blendRadius,
Positive, typically the same as distance. When the offset results in a self-intersection that gets trimmed off at a kink, the kink will be blended out using this radius.
directionPoint,
A point that indicates the direction of the offset. If the offset is inward, the point's projection to the plane should be well within the curve. It will be used to decide which part of the offset to keep if there are self-intersections.
normal,
A vector that indicates the normal of the plane in which the offset will occur.
tolerance,
Used to determine self-intersections, not offset error.
out double[]
outputParameters,
A list of parameter, paired with curveParameters, from the output curve for creating cross sections.
out double[]
curveParameters
A list of parameter, paired with outputParameters, from the input curve for creating cross sections.
)
inherited fromCurve
The offset curve if successful.

RibbonOffset

Offsets a closed curve in the following way: pProject the curve to a plane with given normal. Then, loose Offset the projection by distance + blend_radius and trim off self-intersection. THen, Offset the remaining curve back in the opposite direction by blend_radius, filling gaps with blends. Finally, use the elevations of the input curve to get the correct elevations of the result.
public Curve RibbonOffset(
distance,
The positive distance to offset the curve.
blendRadius,
Positive, typically the same as distance. When the offset results in a self-intersection that gets trimmed off at a kink, the kink will be blended out using this radius.
directionPoint,
A point that indicates the direction of the offset. If the offset is inward, the point's projection to the plane should be well within the curve. It will be used to decide which part of the offset to keep if there are self-intersections.
normal,
A vector that indicates the normal of the plane in which the offset will occur.
tolerance
Used to determine self-intersections, not offset error.
)
inherited fromCurve
The offset curve if successful.

RibbonOffset

Ribbon offset method to mimic RibbonOffset command
public Curve RibbonOffset(
ribbonParameters,
The ribbon offset parameters
out Curve[]
railCurves,
on success an array of split curves representing the sweep rail segments, null on failure
out Curve[]
crossSectionCurves,
on success an array of cross section curves used during brep creation, null on failure
out Brep[]
brepSurfaces
on success and array of breps representing the ribbon surfaces, null on failure
)
inherited fromCurve
return an offset curve on success, null on failure

Rotate

Rotates the object about the specified axis. A positive rotation angle results in a counter-clockwise rotation about the axis (right hand rule).
public bool Rotate(
angleRadians,
Angle of rotation in radians.
rotationAxis,
Direction of the axis of rotation.
rotationCenter
Point on the axis of rotation.
)
inherited fromGeometryBase
true if geometry successfully rotated.

Scale

Scales the object by the specified factor. The scale is centered at the origin.
public bool Scale(
scaleFactor
The uniform scaling factor.
)
inherited fromGeometryBase
true if geometry successfully scaled.

SetEndCondition

#Since v6.0
Set end condition of a NURBS curve to point, tangent and curvature.
public bool SetEndCondition(
bSetEnd,
true: set end of curve, false: set start of curve
continuity,
Position: set start or end point, Tangency: set point and tangent, Curvature: set point, tangent and curvature
point,
point to set
tangent,
tangent to set
curvature
curvature to set
)
true on success, false on failure.

SetEndCondition

#Since v6.0
Set end condition of a NURBS curve to point, tangent and curvature.
public bool SetEndCondition(
bSetEnd,
true: set end of curve, false: set start of curve
continuity,
Position: set start or end point, Tangency: set point and tangent, Curvature: set point, tangent and curvature
point,
point to set
tangent
tangent to set
)
true on success, false on failure.

SetEndPoint

Forces the curve to end at a specified point. Not all curve types support this operation.
public bool SetEndPoint(
point
New end point of curve.
)
inherited fromCurve
Remarks: Some end points cannot be moved. Be sure to check return code
true on success, false on failure.

SetGrevillePoints

#Since v6.4
Sets all Greville edit points for this curve.
public bool SetGrevillePoints(
points
The new point locations. The number of points should match the number of point returned by NurbsCurve.GrevillePoints(false).
)
true if successful, false otherwise.

SetStartPoint

Forces the curve to start at a specified point. Not all curve types support this operation.
public bool SetStartPoint(
point
New start point of curve.
)
inherited fromCurve
Remarks: Some start points cannot be moved. Be sure to check return code.
true on success, false on failure.

SetUserString

Attach a user string (key,value combination) to this geometry.
public bool SetUserString(
key,
id used to retrieve this string.
value
string associated with key.
)
inherited fromGeometryBase
true on success.

Simplify

Returns a geometrically equivalent PolyCurve.

The PolyCurve has the following properties

  1. All the PolyCurve segments are LineCurve, PolylineCurve, ArcCurve, or NurbsCurve.

2. The NURBS Curves segments do not have fully multiple interior knots.

3. Rational NURBS curves do not have constant weights.

4. Any segment for which IsLinear() or IsArc() is true is a Line, Polyline segment, or an Arc.

5. Adjacent co-linear or co-circular segments are combined.

6. Segments that meet with G1-continuity have there ends tuned up so that they meet with G1-continuity to within machine precision.

[ConstOperation] public Curve Simplify(
options,
Simplification options.
distanceTolerance,
A distance tolerance for the simplification.
angleToleranceRadians
An angle tolerance for the simplification.
)
inherited fromCurve
New simplified curve on success, null on failure.

SimplifyEnd

Same as SimplifyCurve, but simplifies only the last two segments at "side" end.
[ConstOperation] public Curve SimplifyEnd(
end,
If CurveEnd.Start the function simplifies the last two start side segments, otherwise if CurveEnd.End the last two end side segments are simplified.
options,
Simplification options.
distanceTolerance,
A distance tolerance for the simplification.
angleToleranceRadians
An angle tolerance for the simplification.
)
inherited fromCurve
New simplified curve on success, null on failure.

Smooth

Smooths a curve by averaging the positions of control points in a specified region.
public Curve Smooth(
smoothFactor,
The smoothing factor, which controls how much control points move towards the average of the neighboring control points. Note that this smoothFactor is equivalent to twice the smooth factor used in the Smooth command: on a polyline, Rhino _Smooth with a factor of 0.2 is the same as Polyline.Smooth(double) with a factor of 0.4.
bXSmooth,
When true control points move in X axis direction.
bYSmooth,
When true control points move in Y axis direction.
bZSmooth,
When true control points move in Z axis direction.
bFixBoundaries,
When true the curve ends don't move.
coordinateSystem,
The coordinates to determine the direction of the smoothing.
plane
If SmoothingCoordinateSystem.CPlane specified, then the construction plane.
)
inherited fromCurve
The smoothed curve if successful, null otherwise.

Smooth

Smooths a curve by averaging the positions of control points in a specified region.
public Curve Smooth(
smoothFactor,
The smoothing factor, which controls how much control points move towards the average of the neighboring control points. Note that this smoothFactor is equivalent to twice the smooth factor used in the Smooth command: on a polyline, Rhino _Smooth with a factor of 0.2 is the same as Polyline.Smooth(double) with a factor of 0.4.
bXSmooth,
When true control points move in X axis direction.
bYSmooth,
When true control points move in Y axis direction.
bZSmooth,
When true control points move in Z axis direction.
bFixBoundaries,
When true the curve ends don't move.
coordinateSystem
The coordinates to determine the direction of the smoothing.
)
inherited fromCurve
The smoothed curve if successful, null otherwise.

SpanDomain

Get the domain of the curve span with the given index. Use the SpanCount property to test how many spans there are.
[ConstOperation] public Interval SpanDomain(
spanIndex
Index of span.
)
inherited fromCurve
Interval of the span with the given index.

SpanVector

Returns the vector of span division parameters for this curve.
public double[] SpanVector()
inherited fromCurve
An array of parameter values that mark the boundaries between spans of the curve.

Split

Splits a curve into pieces using a polysurface.
[ConstOperation] public Curve[] Split(
cutter,
A cutting surface or polysurface.
tolerance,
Tolerance for computing intersections.
angleToleranceRadians
Angle tolerance in radians.
)
inherited fromCurve
An array of curves. This array can be empty.

Split

Splits a curve into pieces using a polysurface.
[ConstOperation] public Curve[] Split(
cutter,
A cutting surface or polysurface.
tolerance
A tolerance for computing intersections.
)
obsoleteUse version that takes an angle tolerance
Obsoleteinherited fromCurve
An array of curves. This array can be empty.

Split

Splits (divides) the curve at the specified parameter. The parameter must be in the interior of the curve's domain.
[ConstOperation] public Curve[] Split(
t
Parameter to split the curve at in the interval returned by Domain().
)
inherited fromCurve
Two curves on success, null on failure.

Split

Splits (divides) the curve at a series of specified parameters. The parameter must be in the interior of the curve domain.
[ConstOperation] public Curve[] Split(
t
Parameters to split the curve at in the interval returned by Domain().
)
inherited fromCurve
Multiple curves on success, null on failure.

Split

Splits a curve into pieces using a cutting plane.
[ConstOperation] public Curve[] Split(
plane,
A cutting plane.
tolerance,
Tolerance for computing intersections.
angleToleranceRadians
Angle tolerance in radians.
)
inherited fromCurve
An array of curves. This array can be empty.

Split

Splits a curve into pieces using a surface.
[ConstOperation] public Curve[] Split(
cutter,
A cutting surface or polysurface.
tolerance,
Tolerance for computing intersections.
angleToleranceRadians
Angle tolerance in radians.
)
inherited fromCurve
An array of curves. This array can be empty.

Split

Splits a curve into pieces using a surface.
[ConstOperation] public Curve[] Split(
cutter,
A cutting surface or polysurface.
tolerance
Tolerance for computing intersections.
)
obsoleteUse version that takes an angle tolerance
Obsoleteinherited fromCurve
An array of curves. This array can be empty.

TangentAt

Evaluates the unit tangent vector at a curve parameter.
[ConstOperation] public Vector3d TangentAt(
t
Evaluation parameter.
)
inherited fromCurve
Remarks: No error handling.
Unit tangent vector of the curve at the parameter t.

ToArcsAndLines

Converts a curve into polycurve consisting of arc segments. Sections of the input curves that are nearly straight are converted to straight-line segments.
[ConstOperation] public PolyCurve ToArcsAndLines(
tolerance,
The tolerance. This is the maximum deviation from arc midpoints to the curve. When in doubt, use the document's model space absolute tolerance.
angleTolerance,
The angle tolerance in radians. This is the maximum deviation of the arc end directions from the curve direction. When in doubt, use the document's model space angle tolerance.
minimumLength,
The minimum segment length.
maximumLength
The maximum segment length.
)
inherited fromCurve
PolyCurve on success, null on error.

ToJSON

Create a JSON string representation of this object
public string ToJSON()
inherited fromCommonObject

ToNurbsCurve

Constructs a NURBS curve representation of this curve.
[ConstOperation] public NurbsCurve ToNurbsCurve()
inherited fromCurve
NURBS representation of the curve on success, null on failure.

ToNurbsCurve

Constructs a NURBS curve representation of this curve.
[ConstOperation] public NurbsCurve ToNurbsCurve(
subdomain
The NURBS representation for this portion of the curve is returned.
)
inherited fromCurve
NURBS representation of the curve on success, null on failure.

ToPolyline

Gets a polyline approximation of a curve.
[ConstOperation] public PolylineCurve ToPolyline(
tolerance,
The tolerance. This is the maximum deviation from line midpoints to the curve. When in doubt, use the document's model space absolute tolerance.
angleTolerance,
The angle tolerance in radians. This is the maximum deviation of the line directions. When in doubt, use the document's model space angle tolerance.
minimumLength,
The minimum segment length.
maximumLength
The maximum segment length.
)
inherited fromCurve
PolyCurve on success, null on error.

ToPolyline

Gets a polyline approximation of a curve.
[ConstOperation] public PolylineCurve ToPolyline(
mainSegmentCount,
If mainSegmentCount <= 0, then both subSegmentCount and mainSegmentCount are ignored. If mainSegmentCount > 0, then subSegmentCount must be >= 1. In this case the NURBS will be broken into mainSegmentCount equally spaced chords. If needed, each of these chords can be split into as many subSegmentCount sub-parts if the subdivision is necessary for the mesh to meet the other meshing constraints. In particular, if subSegmentCount = 0, then the curve is broken into mainSegmentCount pieces and no further testing is performed.
subSegmentCount,
An amount of subsegments.
maxAngleRadians,
( 0 to pi ) Maximum angle (in radians) between unit tangents at adjacent vertices.
maxChordLengthRatio,
Maximum permitted value of (distance chord midpoint to curve) / (length of chord).
maxAspectRatio,
If maxAspectRatio < 1.0, the parameter is ignored. If 1 <= maxAspectRatio < sqrt(2), it is treated as if maxAspectRatio = sqrt(2). This parameter controls the maximum permitted value of (length of longest chord) / (length of shortest chord).
tolerance,
If tolerance = 0, the parameter is ignored. This parameter controls the maximum permitted value of the distance from the curve to the polyline.
minEdgeLength,
The minimum permitted edge length.
maxEdgeLength,
If maxEdgeLength = 0, the parameter is ignored. This parameter controls the maximum permitted edge length.
keepStartPoint,
If true the starting point of the curve is added to the polyline. If false the starting point of the curve is not added to the polyline.
curveDomain
This sub-domain of the NURBS curve is approximated.
)
inherited fromCurve
PolylineCurve on success, null on error.

ToPolyline

Gets a polyline approximation of a curve.
[ConstOperation] public PolylineCurve ToPolyline(
mainSegmentCount,
If mainSegmentCount <= 0, then both subSegmentCount and mainSegmentCount are ignored. If mainSegmentCount > 0, then subSegmentCount must be >= 1. In this case the NURBS will be broken into mainSegmentCount equally spaced chords. If needed, each of these chords can be split into as many subSegmentCount sub-parts if the subdivision is necessary for the mesh to meet the other meshing constraints. In particular, if subSegmentCount = 0, then the curve is broken into mainSegmentCount pieces and no further testing is performed.
subSegmentCount,
An amount of subsegments.
maxAngleRadians,
( 0 to pi ) Maximum angle (in radians) between unit tangents at adjacent vertices.
maxChordLengthRatio,
Maximum permitted value of (distance chord midpoint to curve) / (length of chord).
maxAspectRatio,
If maxAspectRatio < 1.0, the parameter is ignored. If 1 <= maxAspectRatio < sqrt(2), it is treated as if maxAspectRatio = sqrt(2). This parameter controls the maximum permitted value of (length of longest chord) / (length of shortest chord).
tolerance,
If tolerance = 0, the parameter is ignored. This parameter controls the maximum permitted value of the distance from the curve to the polyline.
minEdgeLength,
The minimum permitted edge length.
maxEdgeLength,
If maxEdgeLength = 0, the parameter is ignored. This parameter controls the maximum permitted edge length.
keepStartPoint
If true the starting point of the curve is added to the polyline. If false the starting point of the curve is not added to the polyline.
)
inherited fromCurve
PolylineCurve on success, null on error.

TorsionAt

Evaluate the torsion of a curve at a parameter. Sometimes also called the "second curvature", torsion is the rate of change of a curve's osculating plane.
[ConstOperation] public double TorsionAt(
t
The evaluation parameter.
)
inherited fromCurve
Remarks: See Barrett O'Neill, Elementary Differential Geometry, page 69.
The torsion if successful.

Transform

Transforms the geometry. If the input Transform has a SimilarityType of OrientationReversing, you may want to consider flipping the transformed geometry after calling this function when it makes sense. For example, you may want to call Flip() on a Brep after transforming it.
public bool Transform(
Transform
xform
Transformation to apply to geometry.
)
inherited fromGeometryBase
true if geometry successfully transformed.

Translate

Translates the object along the specified vector.
public bool Translate(
x,
The X component.
y,
The Y component.
z
The Z component.
)
inherited fromGeometryBase
true if geometry successfully translated.

Translate

Translates the object along the specified vector.
public bool Translate(
translationVector
A moving vector.
)
inherited fromGeometryBase
true if geometry successfully translated.

Trim

Shortens a curve by a given length
[ConstOperation] public Curve Trim(
side,
length
)
inherited fromCurve
Trimmed curve if successful, null on failure.

Trim

Removes portions of the curve outside the specified interval.
[ConstOperation] public Curve Trim(
t0,
Start of the trimming interval.
t1
End of the trimming interval.
)
inherited fromCurve
Remarks: If curve is open, then trimming interval must be an increasing interval. If curve is closed, and trimming interval is a decreasing interval, then the portion of the curve across the start/end is returned.
Trimmed portion of this curve is successful, null on failure.

Trim

Removes portions of the curve outside the specified interval.
[ConstOperation] public Curve Trim(
domain
Trimming interval.
)
inherited fromCurve
Remarks: If curve is open, then trimming interval must be an increasing interval. If curve is closed, and trimming interval is a decreasing interval, then the portion of the curve across the start/end is returned.
Trimmed curve if successful, null on failure.

TrimInterval

Trims the curve in-place by removing portions of the curve outside the specified interval.
public bool TrimInterval(
t0,
Start of the trimming interval.
t1
End of the trimming interval.
)
inherited fromCurve
Remarks: Portions of the curve before curve(domain[0]) and after curve(domain[1]) are removed.
True if successful, false otherwise.

TrimInterval

Trims the curve in-place by removing portions of the curve outside the specified interval.
public bool TrimInterval(
domain
Trimming interval.
)
inherited fromCurve
Remarks: Portions of the curve before curve(domain[0]) and after curve(domain[1]) are removed.
True if successful, false otherwise.

TryGetArc

Try to convert this curve into an Arc using a custom tolerance.
public bool TryGetArc(
out Arc
arc,
On success, the Arc will be filled in.
tolerance
Tolerance to use when checking.
)
inherited fromCurve
true if the curve could be converted into an arc.

TryGetArc

Try to convert this curve into an Arc using RhinoMath.ZeroTolerance.
public bool TryGetArc(
out Arc
arc
On success, the Arc will be filled in.
)
inherited fromCurve
true if the curve could be converted into an arc.

TryGetArc

Try to convert this curve into an Arc using a custom tolerance.
public bool TryGetArc(
plane,
Plane in which the comparison is performed.
out Arc
arc,
On success, the Arc will be filled in.
tolerance
Tolerance to use when checking.
)
inherited fromCurve
true if the curve could be converted into an arc within the given plane.

TryGetArc

Try to convert this curve into an Arc using RhinoMath.ZeroTolerance.
public bool TryGetArc(
plane,
Plane in which the comparison is performed.
out Arc
arc
On success, the Arc will be filled in.
)
inherited fromCurve
true if the curve could be converted into an arc within the given plane.

TryGetCircle

Try to convert this curve into a Circle using a custom tolerance.
public bool TryGetCircle(
out Circle
circle,
On success, the Circle will be filled in.
tolerance
Tolerance to use when checking.
)
inherited fromCurve
true if the curve could be converted into a Circle within tolerance.

TryGetCircle

Try to convert this curve into a circle using RhinoMath.ZeroTolerance.
public bool TryGetCircle(
out Circle
circle
On success, the Circle will be filled in.
)
inherited fromCurve
true if the curve could be converted into a Circle.

TryGetEllipse

Try to convert this curve into an Ellipse using a custom tolerance.
public bool TryGetEllipse(
out Ellipse
ellipse,
On success, the Ellipse will be filled in.
tolerance
Tolerance to use when checking.
)
inherited fromCurve
true if the curve could be converted into an Ellipse.

TryGetEllipse

Try to convert this curve into an Ellipse within RhinoMath.ZeroTolerance.
public bool TryGetEllipse(
out Ellipse
ellipse
On success, the Ellipse will be filled in.
)
inherited fromCurve
true if the curve could be converted into an Ellipse.

TryGetEllipse

Try to convert this curve into an Ellipse using a custom tolerance.
public bool TryGetEllipse(
plane,
Plane in which the comparison is performed.
out Ellipse
ellipse,
On success, the Ellipse will be filled in.
tolerance
Tolerance to use when checking.
)
inherited fromCurve
true if the curve could be converted into an Ellipse within the given plane.

TryGetEllipse

Try to convert this curve into an Ellipse within RhinoMath.ZeroTolerance.
public bool TryGetEllipse(
plane,
Plane in which the comparison is performed.
out Ellipse
ellipse
On success, the Ellipse will be filled in.
)
inherited fromCurve
true if the curve could be converted into an Ellipse within the given plane.

TryGetPlane

Test a curve for planarity and return the plane.
public bool TryGetPlane(
out Plane
plane,
On success, the plane parameters are filled in.
tolerance
Tolerance to use when checking.
)
inherited fromCurve
true if there is a plane such that the maximum distance from the curve to the plane is <= tolerance.

TryGetPlane

Test a curve for planarity and return the plane.
public bool TryGetPlane(
out Plane
plane
On success, the plane parameters are filled in.
)
inherited fromCurve
true if there is a plane such that the maximum distance from the curve to the plane is <= RhinoMath.ZeroTolerance.

TryGetPolyline

Several types of Curve can have the form of a polyline including a degree 1 NurbsCurve, a PolylineCurve, and a PolyCurve all of whose segments are some form of polyline. IsPolyline tests a curve to see if it can be represented as a polyline.
public bool TryGetPolyline(
polyline,
If true is returned, then the polyline form is returned here.
out double[]
parameters
if true is returned, then the parameters of the polyline points are returned here.
)
inherited fromCurve
true if this curve can be represented as a polyline; otherwise, false.

TryGetPolyline

Several types of Curve can have the form of a polyline including a degree 1 NurbsCurve, a PolylineCurve, and a PolyCurve all of whose segments are some form of polyline. IsPolyline tests a curve to see if it can be represented as a polyline.
public bool TryGetPolyline(
polyline
If true is returned, then the polyline form is returned here.
)
inherited fromCurve
true if this curve can be represented as a polyline; otherwise, false.

UVNDirectionsAt

#Since v7.0
Calculates the u, V, and N directions of a NURBS curve at a parameter similar to the method used by Rhino's MoveUVN command.
public bool UVNDirectionsAt(
t,
The evaluation parameter.
uDir,
The U direction.
vDir,
The V direction.
nDir
The N direction.
)
true if successful, false otherwise.