public class BrepTrim : CurveProxy
Brep trim information is stored in BrepTrim classes. Brep.Trims is an array of all the trims in the brep. A BrepTrim is derived from CurveProxy so the trim can supply easy to use evaluation tools via the Curve virtual member functions. Note well that the domains and orientations of the curve m_C2[trim.m_c2i] and the trim as a curve may not agree.

Properties

Brep

#Since v5.1
public Brep Brep { get; }
Gets the Brep that owns this trim.

Degree

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

Dimension

public int Dimension { get; }
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.

inherited fromCurve

Disposed

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

Domain

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

Edge

#Since v5.1
public BrepEdge Edge { get; }
Brep edge this trim belongs to. This will be null for singular trims

EndVertex

#Since v6.0
public BrepVertex EndVertex { get; }
BrepVertex at end of trim

Face

#Since v5.1
public BrepFace Face { get; }
Brep face this trim belongs to

HasBrepForm

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

HasUserData

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

IsClosed

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

IsDeformable

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

IsDocumentControlled

public sealed override bool IsDocumentControlled { get; }
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.
inherited fromGeometryBase

IsoStatus

#Since v5.6
public IsoStatus IsoStatus { get; set; }

IsPeriodic

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

IsShallowDuplicate

public bool IsShallowDuplicate { get; }
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)
inherited fromGeometryBase

IsSubDFriendly

public bool IsSubDFriendly { get; }
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.
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

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

Loop

#Since v5.1
public BrepLoop Loop { get; }
Loop that this trim belongs to

ObjectType

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

PointAtEnd

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

PointAtMid

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

PointAtStart

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

ProxyCurveIsReversed

public bool ProxyCurveIsReversed { get; }
True if "this" is a curve is reversed from the "real" curve geometry
inherited fromCurveProxy

SpanCount

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

StartVertex

#Since v6.0
public BrepVertex StartVertex { get; }
BrepVertex at start of trim

TangentAtEnd

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

TangentAtStart

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

TrimCurve

#Since v6.0
public Curve TrimCurve { get; }
Gets the Brep.Curves2D 2d curve geometry used by this trim, or null.

TrimCurveIndex

#Since v6.0
public int TrimCurveIndex { get; }
Gets the Brep.Curves2D 2d curve index of the 2d curve geometry used by this trim, or -1.

TrimIndex

#Since v5.1
public int TrimIndex { get; }
Gets the index of this trim in the Brep.Trims collection.

TrimType

#Since v5.1
public BrepTrimType TrimType { get; set; }
Type of trim

UserData

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

UserDictionary

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

UserStringCount

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

Methods

ChangeClosedCurveSeam

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

ChangeDimension

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

ClosedCurveOrientation

[ConstOperation] public CurveOrientation 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.
inherited fromCurve
The orientation of this curve with respect to world XY plane.

ClosedCurveOrientation

[ConstOperation] public CurveOrientation ClosedCurveOrientation(Plane plane)
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.
inherited fromCurve
plane (Plane)The plane in which to solve the orientation.
The orientation of this curve in the given plane.

ClosedCurveOrientation

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

ClosedCurveOrientation

[ConstOperation] public CurveOrientation ClosedCurveOrientation(Vector3d upDirection)
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.
inherited fromCurve
upDirection (Vector3d)A vector that is considered "up".
The orientation of this curve with respect to a defined up direction.

ClosestPoint

[ConstOperation] public bool ClosestPoint(Point3d testPoint, out double t, double maximumDistance)
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.
inherited fromCurve
testPoint (Point3d)Point to project.
t (out double)parameter of local closest point returned here.
maximumDistance (double)The maximum allowed distance.

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

Use 0 to turn off this parameter.

true on success, false on failure.

ClosestPoint

[ConstOperation] public bool ClosestPoint(Point3d testPoint, out double t)
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.
inherited fromCurve
testPoint (Point3d)Point to search from.
t (out double)Parameter of local closest point.
true on success, false on failure.

ClosestPoints

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

ClosestPoints

[ConstOperation] public bool ClosestPoints(IEnumerable<GeometryBase> geometry, out Point3d pointOnCurve, out Point3d pointOnObject, out int whichGeometry, double maximumDistance)
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.

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

ClosestPoints

[ConstOperation] public bool ClosestPoints(IEnumerable<GeometryBase> geometry, out Point3d pointOnCurve, out Point3d pointOnObject, out int whichGeometry)
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.

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

CombineShortSegments

public bool CombineShortSegments(double tolerance)
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.
inherited fromCurve
tolerance (double)
True if short segments were combined or removed. False otherwise.

ComponentIndex

[ConstOperation] public ComponentIndex 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.
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

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

Contains

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

Contains

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

Contains

[ConstOperation] public PointContainment Contains(Point3d testPoint)
obsoleteUse version that takes a tolerance
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.
Obsoleteinherited fromCurve
testPoint (Point3d)Point to test.
Relationship between point and curve region.

ControlPolygon

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

CurvatureAt

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

DataCRC

[CLSCompliant(false)] public uint DataCRC(uint currentRemainder)
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.
inherited fromGeometryBase
currentRemainder (uint)The current remainder value.
CRC of the information the defines the object.

DeleteAllUserStrings

public void DeleteAllUserStrings()
inherited fromGeometryBase

DeleteUserString

public bool DeleteUserString(string key)
inherited fromGeometryBase
key (string)

DerivativeAt

[ConstOperation] public Vector3d[] DerivativeAt(double t, int derivativeCount, CurveEvaluationSide side)
Evaluate the derivatives at the specified curve parameter.
inherited fromCurve
t (double)Curve parameter to evaluate.
derivativeCount (int)Number of derivatives to evaluate, must be at least 0.
side (CurveEvaluationSide)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.
An array of vectors that represents all the derivatives starting at zero.

DerivativeAt

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

Dispose

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

Dispose

protected override void Dispose(bool disposing)
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.

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

DivideAsContour

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

DivideByCount

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

DivideByCount

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

DivideByLength

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

DivideByLength

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

DivideByLength

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

DivideByLength

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

DivideEquidistant

public Point3d[] DivideEquidistant(double distance, out double[] curveParameters)
Calculates 3d points on a curve where the linear distance between the points is equal.
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.
distance (double)The distance between division points.
curveParameters (out double[])If successful, an array of curve parameters at the point locations.
An array of equidistant points, or null on error.

DivideEquidistant

[ConstOperation] public Point3d[] DivideEquidistant(double distance)
Calculates 3d points on a curve where the linear distance between the points is equal.
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.
distance (double)The distance between division points.
An array of equidistant points, or null on error.

Duplicate

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

DuplicateCurve

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

DuplicateSegments

public 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.
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

public GeometryBase 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.
inherited fromGeometryBase
An object of the same type as this object.

This behavior is overridden by implementing classes.

EnsurePrivateCopy

public void 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.
inherited fromCommonObject

Extend

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

Extend

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

Extend

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

Extend

[ConstOperation] public Curve Extend(double t0, double t1)
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.
inherited fromCurve
t0 (double)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 (double)End of extension domain, if the end is not inside the Domain of this curve, an attempt will be made to extend the curve.
Extended curve on success, null on failure.

Extend

[ConstOperation] public Curve Extend(Interval domain)
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.
inherited fromCurve
domain (Interval)Extension domain.
Extended curve on success, null on failure.

ExtendByArc

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

ExtendByLine

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

ExtendOnSurface

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

ExtendOnSurface

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

ExtremeParameters

[ConstOperation] public double[] ExtremeParameters(Vector3d direction)
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.
inherited fromCurve
direction (Vector3d)The direction in which to perform the calculation.
The parameter values of all local extrema.

Fair

[ConstOperation] public Curve Fair(double distanceTolerance, double angleTolerance, int clampStart, int clampEnd, int iterations)
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.
inherited fromCurve
distanceTolerance (double)Maximum allowed distance the faired curve is allowed to deviate from the input.
angleTolerance (double)(in radians) kinks with angles <= angleTolerance are smoothed out 0.05 is a good default.
clampStart (int)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 (int)Same as clampStart.
iterations (int)The number of iterations to use in adjusting the curve.
Returns new faired Curve on success, null on failure.

FilletSurfaceToCurve

public bool FilletSurfaceToCurve(BrepFace face, double t, double u, double v, double radius, int alignToCurve, int railDegree, int arcDegree, IEnumerable<double> arcSliders, int numBezierSrfs, double tolerance, List<Brep> out_fillets, out double[] fitResults)
Creates a constant-radius fillet surface between a surface and the curve.
inherited fromCurve
face (BrepFace)the face being filleted.
t (double)A parameter on the curve, indicating region of fillet.
u (double)A parameter in the u direction of the face indicating which side of the curve to fillet.
v (double)A parameter in the v direction of the face indicating which side of the curve to fillet.
radius (double)The radius of the constant-radius fillet desired. NOTE: using arcSliders will change the shape of the arcs themselves
alignToCurve (int)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 (int)Desired fillet degree (3 or 5) in the u-direction, along the curve
arcDegree (int)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 (IEnumerable<double>)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 (int)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 (double)The tolerance. In in doubt, the document's absolute tolerance.
out_fillets (List<Brep>)he results of the fillet calculation.
fitResults (out double[])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
true if successful, false otherwise.

FilletSurfaceToRail

[ConstOperation] public bool FilletSurfaceToRail(BrepFace faceWithCurve, BrepFace secondFace, double u1, double v1, int railDegree, int arcDegree, IEnumerable<double> arcSliders, int numBezierSrfs, bool extend, FilletSurfaceSplitType split_type, double tolerance, List<Brep> out_fillets, List<Brep> out_breps0, List<Brep> out_breps1, out double[] fitResults)
Creates a surface between two surfaces, with a fixed rail curve on the first surface.
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.
faceWithCurve (BrepFace)The first face on which the curve exists
secondFace (BrepFace)The second face
u1 (double)A parameter in the u direction of the second face at the side you want to keep after filleting.
v1 (double)A parameter in the v direction of the second face at the side you want to keep after filleting.
railDegree (int)Desired fillet degree (3 or 5) in the u-direction, along the rails
arcDegree (int)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 (IEnumerable<double>)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 (int)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 (bool)If true, then when one input surface is longer than the other, the fillet surface is extended to the input surface edges.
split_type (FilletSurfaceSplitType)The split type
tolerance (double)The tolerance. In in doubt, the document's absolute tolerance.
out_fillets (List<Brep>)The results of the fillet calculation.
out_breps0 (List<Brep>)The trim or split results of the Brep owned by faceWithCurve.
out_breps1 (List<Brep>)The trim or split results of the Brep owned by pFace1.
fitResults (out double[])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
true if successful, false otherwise.

FindLocalInflection

public bool FindLocalInflection(Vector3d N, Interval subDomain, double seed, out double curveParameter, out double angleError)
Local minimization for point on a curve with tangent perpendicular to N.
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.
N (Vector3d)This vector and the curve tangent define a plane. In this plane, there is a vector V perpendicular to the tangent.
subDomain (Interval)Subdomain of curve to evaluate. This must not be empty.
seed (double)A seed parameter, which must be included in the subdomain.
curveParameter (out double)The parameter on the curve if successful, RhinoMath.UnsetValue if unsuccessful.
angleError (out double)The measure, in radians, of the angle between N and V. The angle will be zero when the result is an inflection.
true if the minimization succeeds, regardless of angle_error, false if unsuccessful.

Fit

[ConstOperation] public Curve Fit(int degree, double fitTolerance, double angleTolerance)
Fits a new curve through an existing curve.
inherited fromCurve
degree (int)The degree of the returned Curve. Must be bigger than 1.
fitTolerance (double)The fitting tolerance. If fitTolerance is RhinoMath.UnsetValue or <=0.0, the document absolute tolerance is used.
angleTolerance (double)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

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

FrameAt

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

GetBoundingBox

[ConstOperation] public BoundingBox GetBoundingBox(bool accurate)
Bounding box solver. Gets the world axis aligned bounding box for the geometry.
inherited fromGeometryBase
accurate (bool)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.
The bounding box of the geometry in world coordinates or BoundingBox.Empty if not bounding box could be found.

GetBoundingBox

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

GetBoundingBox

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

GetBoundingBox

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

GetConicSectionType

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

GetConicSectionType

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

GetCurveParameterFromNurbsFormParameter

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

GetLength

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

GetLength

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

GetLength

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

GetLength

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

GetLocalPerpPoint

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

GetLocalPerpPoint

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

GetLocalTangentPoint

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

GetLocalTangentPoint

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

GetNextDiscontinuity

[ConstOperation] public bool GetNextDiscontinuity(Continuity continuityType, double t0, double t1, double cosAngleTolerance, double curvatureTolerance, out double t)
Searches for a derivative, tangent, or curvature discontinuity.
inherited fromCurve
continuityType (Continuity)Type of continuity to search for.
t0 (double)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 (double)(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 (double)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 (double)(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.
t (out double)If a discontinuity is found, then t reports the parameter at the discontinuity.
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

[ConstOperation] public bool GetNextDiscontinuity(Continuity continuityType, double t0, double t1, out double t)
Searches for a derivative, tangent, or curvature 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.
continuityType (Continuity)Type of continuity to search for.
t0 (double)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 (double)(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.
t (out double)If a discontinuity is found, then t reports the parameter at the discontinuity.
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

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

GetObjectData

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

GetPerpendicularFrames

[ConstOperation] public Plane[] GetPerpendicularFrames(IEnumerable<double> parameters)
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.
inherited fromCurve
parameters (IEnumerable<double>)A collection of strictly increasing curve parameters to place perpendicular frames on.
An array of perpendicular frames on success or null on failure.
InvalidOperationExceptionThrown when the curve parameters are not increasing.

GetSubCurves

public Curve[] GetSubCurves()
Gets subcurves from a curve. The results will be similar to what is produced by Rhino's Explode command.
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.

GetTolerances

#Since v5.6
[ConstOperation] public void GetTolerances(out double toleranceU, out double toleranceV)
The values in tolerance[] record the accuracy of the parameter space trimming curves.
Remarks:

tolerance[0] = accuracy of parameter space curve in first ("u") parameter

tolerance[1] = accuracy of parameter space curve in second ("v") parameter

A value of RhinoMath.UnsetValue indicates that the tolerance should be computed. If the value >= 0.0, then the tolerance is set. If the value is RhinoMath.UnsetValue, then the tolerance needs to be computed.

If the trim is not singular, then the trim must have an edge. If P is a 3d point on the edge's curve and surface(u,v) = Q is the point on the surface that is closest to P, then there must be a parameter t in the interval [m_t[0], m_t[1]] such that |u - curve2d(t)[0]| <= tolerance[0] and |v - curve2d(t)[1]| <= tolerance[1] If P is the 3d point for the vertex brep.m_V[m_vi[k]] and (uk,vk) is the corresponding end of the trim's parameter space curve, then there must be a surface parameter (u,v) such that:

  • the distance from the 3d point surface(u,v) to P is <= brep.m_V[m_vi[k]].m_tolerance,
  • |u-uk| <= tolerance[0].
  • |v-vk| <= tolerance[1].
toleranceU (out double)
toleranceV (out double)

GetTrimParameter

#Since v5.12
[ConstOperation] public bool GetTrimParameter(double edgeParameter, out double trimParameter)
Get corresponding trim parameter at given edge parameter.
edgeParameter (double)
trimParameter (out double)
true on success

GetUserString

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

GetUserStrings

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

HasNurbsForm

[ConstOperation] public int HasNurbsForm()
Does a NURBS curve representation of this curve exist?
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.

InflectionPoints

[ConstOperation] public Point3d[] 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.
inherited fromCurve
An array of points if successful, null if not successful or on error.

InflectionPoints

[ConstOperation] public Point3d[] InflectionPoints(out double[] curveParameters)
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.
inherited fromCurve
curveParameters (out double[])An array of curve parameters at the inflection points.
An array of points if successful, null if not successful or on error.

IsArc

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

IsArc

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

IsCircle

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

IsCircle

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

IsClosable

[ConstOperation] public bool IsClosable(double tolerance, double minimumAbsoluteSize, double minimumRelativeSize)
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.
inherited fromCurve
tolerance (double)Maximum allowable distance between start and end. If start - end gap is greater than tolerance, this function will return false.
minimumAbsoluteSize (double)If greater than 0.0 and none of the interior sampled points are at least minimumAbsoluteSize from start, this function will return false.
minimumRelativeSize (double)If greater than 1.0 and chord length is less than minimumRelativeSize*gap, this function will return false.
true if start and end points are close enough based on above conditions.

IsClosable

[ConstOperation] public bool IsClosable(double tolerance)
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.
inherited fromCurve
tolerance (double)Maximum allowable distance between start and end. If start - end gap is greater than tolerance, this function will return false.
true if start and end points are close enough based on above conditions.

IsContinuous

[ConstOperation] public bool IsContinuous(Continuity continuityType, double t)
Test continuity at a curve parameter value.
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.
continuityType (Continuity)Type of continuity to test for.
t (double)Parameter to test.
true if the curve has at least the c type continuity at the parameter t.

IsEllipse

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

IsEllipse

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

IsInPlane

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

IsInPlane

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

IsLinear

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

IsLinear

public bool IsLinear(double tolerance)
Test a curve to see if it is linear to within the custom tolerance.
inherited fromCurve
tolerance (double)Tolerance to use when checking linearity.
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

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

IsPlanar

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

IsPolyline

public bool 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.
inherited fromCurve
true if this curve can be represented as a polyline; otherwise, false.

IsReversed

#Since v5.12
[ConstOperation] public bool IsReversed()
Get orientation of trim with respect to it's corresponding edge.
true if the 2d trim and 3d edge have opposite orientations

IsShort

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

IsShort

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

IsValidWithLog

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

LcoalClosestPoint

[ConstOperation] [EditorBrowsable(EditorBrowsableState.Never)] public bool LcoalClosestPoint(Point3d testPoint, double seed, out double t)
obsoleteTypo: use 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.
Obsoleteinherited fromCurve
testPoint (Point3d)A point to test against.
seed (double)The seed parameter.
t (out double)>Parameter of the curve that is closest to testPoint.
true if the search is successful, false if the search fails.

LengthParameter

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

LengthParameter

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

LengthParameter

[ConstOperation] public bool LengthParameter(double segmentLength, out double t, Interval subdomain)
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.
inherited fromCurve
segmentLength (double)Length of segment to measure. Must be less than or equal to the length of the sub-domain.
t (out double)Parameter such that the length of the curve from the start of the sub-domain to t is s.
subdomain (Interval)The calculation is performed on the specified sub-domain of the curve rather than the whole curve.
true on success, false on failure.

LengthParameter

[ConstOperation] public bool LengthParameter(double segmentLength, out double t)
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.
inherited fromCurve
segmentLength (double)Length of segment to measure. Must be less than or equal to the length of the curve.
t (out double)Parameter such that the length of the curve from the curve start point to t equals length.
true on success, false on failure.

LocalClosestPoint

[ConstOperation] public bool LocalClosestPoint(Point3d testPoint, double seed, out double t)
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.
inherited fromCurve
testPoint (Point3d)A point to test against.
seed (double)The seed parameter.
t (out double)>Parameter of the curve that is closest to testPoint.
true if the search is successful, false if the search fails.

MakeClosed

public bool MakeClosed(double tolerance)
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.
inherited fromCurve
tolerance (double)If nonzero, and the gap is more than tolerance, curve cannot be made closed.
true on success, false on failure.

MakeDeformable

public bool MakeDeformable()
If possible, converts the object into a form that can be accurately modified with "squishy" transformations like projections, shears, an non-uniform scaling.
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.

MaxCurvaturePoints

[ConstOperation] public Point3d[] 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.
inherited fromCurve
An array of points if successful, null if not successful or on error.

MaxCurvaturePoints

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

MemoryEstimate

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

NonConstOperation

protected override void NonConstOperation()
For derived classes implementers.

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

inherited fromCurve

NormalizedLengthParameter

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

NormalizedLengthParameter

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

NormalizedLengthParameter

[ConstOperation] public bool NormalizedLengthParameter(double s, out double t, Interval subdomain)
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.
inherited fromCurve
s (double)Normalized arc length parameter. E.g., 0 = start of curve, 1/2 = midpoint of curve, 1 = end of curve.
t (out double)Parameter such that the length of the curve from its start to t is arc_length.
subdomain (Interval)The calculation is performed on the specified sub-domain of the curve.
true on success, false on failure.

NormalizedLengthParameter

[ConstOperation] public bool NormalizedLengthParameter(double s, out double t)
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.
inherited fromCurve
s (double)Normalized arc length parameter. E.g., 0 = start of curve, 1/2 = midpoint of curve, 1 = end of curve.
t (out double)Parameter such that the length of the curve from its start to t is arc_length.
true on success, false on failure.

NormalizedLengthParameters

[ConstOperation] public double[] NormalizedLengthParameters(double[] s, double absoluteTolerance, double fractionalTolerance, Interval subdomain)
Input the parameter of the point on the curve that is a prescribed arc length from the start of the curve.
inherited fromCurve
s (double[])Array of normalized arc length parameters. E.g., 0 = start of curve, 1/2 = midpoint of curve, 1 = end of curve.
absoluteTolerance (double)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 (double)Desired fractional precision for each segment. fabs("true" length - actual length)/(actual length) <= fractionalTolerance.
subdomain (Interval)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().
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

[ConstOperation] public double[] NormalizedLengthParameters(double[] s, double absoluteTolerance, double fractionalTolerance)
Input the parameter of the point on the curve that is a prescribed arc length from the start of the curve.
inherited fromCurve
s (double[])Array of normalized arc length parameters. E.g., 0 = start of curve, 1/2 = midpoint of curve, 1 = end of curve.
absoluteTolerance (double)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 (double)Desired fractional precision for each segment. fabs("true" length - actual length)/(actual length) <= fractionalTolerance.
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

[ConstOperation] public double[] NormalizedLengthParameters(double[] s, double absoluteTolerance, Interval subdomain)
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.
inherited fromCurve
s (double[])Array of normalized arc length parameters. E.g., 0 = start of curve, 1/2 = midpoint of curve, 1 = end of curve.
absoluteTolerance (double)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 (Interval)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().
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

[ConstOperation] public double[] NormalizedLengthParameters(double[] s, double absoluteTolerance)
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.
inherited fromCurve
s (double[])Array of normalized arc length parameters. E.g., 0 = start of curve, 1/2 = midpoint of curve, 1 = end of curve.
absoluteTolerance (double)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.
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

[ConstOperation] public Curve[] Offset(Plane plane, double distance, double tolerance, CurveOffsetCornerStyle cornerStyle)
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.
inherited fromCurve
plane (Plane)Offset solution plane.
distance (double)The positive or negative distance to offset.
tolerance (double)The offset or fitting tolerance.
cornerStyle (CurveOffsetCornerStyle)Corner style for offset kinks.
Offset curves on success, null on failure.

Offset

[ConstOperation] public Curve[] Offset(Point3d directionPoint, Vector3d normal, double distance, double tolerance, CurveOffsetCornerStyle cornerStyle)
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.
inherited fromCurve
directionPoint (Point3d)A point that indicates the direction of the offset.
normal (Vector3d)The normal to the offset plane.
distance (double)The positive or negative distance to offset.
tolerance (double)The offset or fitting tolerance.
cornerStyle (CurveOffsetCornerStyle)Corner style for offset kinks.
Offset curves on success, null on failure.

Offset

[ConstOperation] public Curve[] Offset(Point3d directionPoint, Vector3d normal, double distance, double tolerance, double angleTolerance, bool loose, CurveOffsetCornerStyle cornerStyle, CurveOffsetEndStyle endStyle)
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.
inherited fromCurve
directionPoint (Point3d)A point that indicates the direction of the offset.
normal (Vector3d)The normal to the offset plane.
distance (double)The positive or negative distance to offset.
tolerance (double)The offset or fitting tolerance.
angleTolerance (double)The angle tolerance, in radians, used to decide whether to split at kinks.
loose (bool)If false, offset within tolerance. If true, offset by moving edit points.
cornerStyle (CurveOffsetCornerStyle)Corner style for offset kinks.
endStyle (CurveOffsetEndStyle)End style for non-loose, non-closed curve offsets.
Offset curves on success, null on failure.

OffsetNormalToSurface

[ConstOperation] public Curve OffsetNormalToSurface(Surface surface, double height)
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.
inherited fromCurve
surface (Surface)Surface from which normals are calculated.
height (double)Offset distance.
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

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

OffsetOnSurface

[ConstOperation] public Curve[] OffsetOnSurface(BrepFace face, double[] curveParameters, double[] offsetDistances, double fittingTolerance)
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.

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

OffsetOnSurface

[ConstOperation] public Curve[] OffsetOnSurface(BrepFace face, Point2d throughPoint, double fittingTolerance)
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.

inherited fromCurve
face (BrepFace)The brep face on which to offset.
throughPoint (Point2d)2d point on the brep face to offset through.
fittingTolerance (double)A fitting tolerance.
Offset curves on success, or null on failure.
ArgumentNullExceptionIf face is null.

OffsetOnSurface

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

OffsetOnSurface

[ConstOperation] public Curve[] OffsetOnSurface(Surface surface, double[] curveParameters, double[] offsetDistances, double fittingTolerance)
Offset this curve on a surface. This curve must lie on the surface.

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

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

OffsetOnSurface

[ConstOperation] public Curve[] OffsetOnSurface(Surface surface, Point2d throughPoint, double fittingTolerance)
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.

inherited fromCurve
surface (Surface)A surface on which to offset.
throughPoint (Point2d)2d point on the brep face to offset through.
fittingTolerance (double)A fitting tolerance.
Offset curves on success, or null on failure.
ArgumentNullExceptionIf surface is null.

OffsetTangentToSurface

[ConstOperation] public Curve OffsetTangentToSurface(Surface surface, double height)
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.
inherited fromCurve
surface (Surface)Surface from which tangents are calculated.
height (double)Offset distance.
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

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

PerpendicularFrameAt

[ConstOperation] public bool PerpendicularFrameAt(double t, out Plane plane)
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.
inherited fromCurve
t (double)Evaluation parameter.
plane (out Plane)The frame is returned here.
true on success, false on failure.

PointAt

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

PointAtLength

[ConstOperation] public Point3d PointAtLength(double length)
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.
inherited fromCurve
length (double)Length along the curve between the start point and the returned point.
Point on the curve at the specified length from the start point or Poin3d.Unset on failure.

PointAtNormalizedLength

[ConstOperation] public Point3d PointAtNormalizedLength(double length)
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.
inherited fromCurve
length (double)Normalized length along the curve between the start point and the returned point.
Point on the curve at the specified normalized length from the start point or Poin3d.Unset on failure.

PullToBrepFace

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

PullToMesh

[ConstOperation] public Curve PullToMesh(Mesh mesh, double tolerance, bool loose)
Projects this curve onto a mesh.
inherited fromCurve
mesh (Mesh)Mesh to project onto.
tolerance (double)Input tolerance. When in doubt, the document's model absolute tolerance.
loose (bool)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.
A curve if success, or null on failure.

PullToMesh

[ConstOperation] public PolylineCurve PullToMesh(Mesh mesh, double tolerance)
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.
inherited fromCurve
mesh (Mesh)Mesh to project onto.
tolerance (double)Input tolerance. When in doubt, the document's model absolute tolerance.
A curve if success, or null on failure.

Rebuild

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

RebuildToMatchTemplateCurve

[ConstOperation] public NurbsCurve RebuildToMatchTemplateCurve(Curve templateCurve, bool flipSourceDirection, bool preserveEndTangents, bool makeSubDFriendly, out Line maximumDeviation)
Rebuilds this curve so it takes on the degree, knot vector, and control point count of a template curve.
inherited fromCurve
templateCurve (Curve)The curve to match.
flipSourceDirection (bool)If true and this curve is open, its direction is flipped (reversed) before sampling. Set this when this curve runs opposite the template.
preserveEndTangents (bool)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 (bool)If true, the result is converted to a SubD friendly curve.
maximumDeviation (out Line)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.
The rebuilt NURBS curve, or null if the template curve is unusable or the rebuild fails.

RemoveShortSegments

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

Repair

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

Reparameterize

public Curve Reparameterize()
Reparameterizes a curve using automatic parameterization.
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

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

RibbonOffset

public Curve RibbonOffset(double distance, double blendRadius, Point3d directionPoint, Vector3d normal, double tolerance, out Curve[] crossSections, out Surface[] ruledSurfaces)
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.
inherited fromCurve
distance (double)The positive distance to offset the curve.
blendRadius (double)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 (Point3d)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 (Vector3d)A vector that indicates the normal of the plane in which the offset will occur.
tolerance (double)Used to determine self-intersections, not offset error.
crossSections (out Curve[])Contains lines between input and the offset that might be useful as input to Brep.CreateFromSweep or some other surface creation tool.
ruledSurfaces (out Surface[])Contain ruled surfaces between the input and the parts of the offset that correspond exactly. Note, there will be gaps between these at blends.
The offset curve if successful.

RibbonOffset

public Curve RibbonOffset(double distance, double blendRadius, Point3d directionPoint, Vector3d normal, double tolerance, out double[] outputParameters, out double[] curveParameters)
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.
inherited fromCurve
distance (double)The positive distance to offset the curve.
blendRadius (double)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 (Point3d)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 (Vector3d)A vector that indicates the normal of the plane in which the offset will occur.
tolerance (double)Used to determine self-intersections, not offset error.
outputParameters (out double[])A list of parameter, paired with curveParameters, from the output curve for creating cross sections.
curveParameters (out double[])A list of parameter, paired with outputParameters, from the input curve for creating cross sections.
The offset curve if successful.

RibbonOffset

public Curve RibbonOffset(double distance, double blendRadius, Point3d directionPoint, Vector3d normal, double tolerance)
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.
inherited fromCurve
distance (double)The positive distance to offset the curve.
blendRadius (double)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 (Point3d)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 (Vector3d)A vector that indicates the normal of the plane in which the offset will occur.
tolerance (double)Used to determine self-intersections, not offset error.
The offset curve if successful.

RibbonOffset

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

Rotate

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

Scale

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

SetEndPoint

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

SetStartPoint

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

SetTolerances

#Since v5.6
public void SetTolerances(double toleranceU, double toleranceV)
The values in tolerance[] record the accuracy of the parameter space trimming curves.
Remarks:

tolerance[0] = accuracy of parameter space curve in first ("u") parameter

tolerance[1] = accuracy of parameter space curve in second ("v") parameter

A value of RhinoMath.UnsetValue indicates that the tolerance should be computed. If the value >= 0.0, then the tolerance is set. If the value is RhinoMath.UnsetValue, then the tolerance needs to be computed.

If the trim is not singular, then the trim must have an edge. If P is a 3d point on the edge's curve and surface(u,v) = Q is the point on the surface that is closest to P, then there must be a parameter t in the interval [m_t[0], m_t[1]] such that |u - curve2d(t)[0]| <= tolerance[0] and |v - curve2d(t)[1]| <= tolerance[1] If P is the 3d point for the vertex brep.m_V[m_vi[k]] and (uk,vk) is the corresponding end of the trim's parameter space curve, then there must be a surface parameter (u,v) such that:

  • the distance from the 3d point surface(u,v) to P is <= brep.m_V[m_vi[k]].m_tolerance,
  • |u-uk| <= tolerance[0].
  • |v-vk| <= tolerance[1].
toleranceU (double)
toleranceV (double)

SetTrimCurve

#Since v5.4
public bool SetTrimCurve(int curve2dIndex, Interval subDomain)
Set 2d curve geometry used by a b-rep trim.
curve2dIndex (int)index of 2d curve in m_C2[] array
subDomain (Interval)
true if successful

SetTrimCurve

#Since v5.4
public bool SetTrimCurve(int curve2dIndex)
Set 2d curve geometry used by a b-rep trim.
curve2dIndex (int)index of 2d curve in m_C2[] array
true if successful

SetUserString

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

Simplify

[ConstOperation] public Curve Simplify(CurveSimplifyOptions options, double distanceTolerance, double angleToleranceRadians)
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.

inherited fromCurve
options (CurveSimplifyOptions)Simplification options.
distanceTolerance (double)A distance tolerance for the simplification.
angleToleranceRadians (double)An angle tolerance for the simplification.
New simplified curve on success, null on failure.

SimplifyEnd

[ConstOperation] public Curve SimplifyEnd(CurveEnd end, CurveSimplifyOptions options, double distanceTolerance, double angleToleranceRadians)
Same as SimplifyCurve, but simplifies only the last two segments at "side" end.
inherited fromCurve
end (CurveEnd)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 (CurveSimplifyOptions)Simplification options.
distanceTolerance (double)A distance tolerance for the simplification.
angleToleranceRadians (double)An angle tolerance for the simplification.
New simplified curve on success, null on failure.

Smooth

public Curve Smooth(double smoothFactor, bool bXSmooth, bool bYSmooth, bool bZSmooth, bool bFixBoundaries, SmoothingCoordinateSystem coordinateSystem, Plane plane)
Smooths a curve by averaging the positions of control points in a specified region.
inherited fromCurve
smoothFactor (double)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 (bool)When true control points move in X axis direction.
bYSmooth (bool)When true control points move in Y axis direction.
bZSmooth (bool)When true control points move in Z axis direction.
bFixBoundaries (bool)When true the curve ends don't move.
coordinateSystem (SmoothingCoordinateSystem)The coordinates to determine the direction of the smoothing.
plane (Plane)If SmoothingCoordinateSystem.CPlane specified, then the construction plane.
The smoothed curve if successful, null otherwise.

Smooth

public Curve Smooth(double smoothFactor, bool bXSmooth, bool bYSmooth, bool bZSmooth, bool bFixBoundaries, SmoothingCoordinateSystem coordinateSystem)
Smooths a curve by averaging the positions of control points in a specified region.
inherited fromCurve
smoothFactor (double)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 (bool)When true control points move in X axis direction.
bYSmooth (bool)When true control points move in Y axis direction.
bZSmooth (bool)When true control points move in Z axis direction.
bFixBoundaries (bool)When true the curve ends don't move.
coordinateSystem (SmoothingCoordinateSystem)The coordinates to determine the direction of the smoothing.
The smoothed curve if successful, null otherwise.

SpanDomain

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

SpanVector

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

Split

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

Split

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

Split

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

Split

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

Split

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

Split

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

Split

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

TangentAt

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

ToArcsAndLines

[ConstOperation] public PolyCurve ToArcsAndLines(double tolerance, double angleTolerance, double minimumLength, double maximumLength)
Converts a curve into polycurve consisting of arc segments. Sections of the input curves that are nearly straight are converted to straight-line segments.
inherited fromCurve
tolerance (double)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 (double)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 (double)The minimum segment length.
maximumLength (double)The maximum segment length.
PolyCurve on success, null on error.

ToJSON

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

ToNurbsCurve

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

ToNurbsCurve

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

ToPolyline

[ConstOperation] public PolylineCurve ToPolyline(double tolerance, double angleTolerance, double minimumLength, double maximumLength)
Gets a polyline approximation of a curve.
inherited fromCurve
tolerance (double)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 (double)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 (double)The minimum segment length.
maximumLength (double)The maximum segment length.
PolyCurve on success, null on error.

ToPolyline

[ConstOperation] public PolylineCurve ToPolyline(int mainSegmentCount, int subSegmentCount, double maxAngleRadians, double maxChordLengthRatio, double maxAspectRatio, double tolerance, double minEdgeLength, double maxEdgeLength, bool keepStartPoint, Interval curveDomain)
Gets a polyline approximation of a curve.
inherited fromCurve
mainSegmentCount (int)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 (int)An amount of subsegments.
maxAngleRadians (double)( 0 to pi ) Maximum angle (in radians) between unit tangents at adjacent vertices.
maxChordLengthRatio (double)Maximum permitted value of (distance chord midpoint to curve) / (length of chord).
maxAspectRatio (double)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 (double)If tolerance = 0, the parameter is ignored. This parameter controls the maximum permitted value of the distance from the curve to the polyline.
minEdgeLength (double)The minimum permitted edge length.
maxEdgeLength (double)If maxEdgeLength = 0, the parameter is ignored. This parameter controls the maximum permitted edge length.
keepStartPoint (bool)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 (Interval)This sub-domain of the NURBS curve is approximated.
PolylineCurve on success, null on error.

ToPolyline

[ConstOperation] public PolylineCurve ToPolyline(int mainSegmentCount, int subSegmentCount, double maxAngleRadians, double maxChordLengthRatio, double maxAspectRatio, double tolerance, double minEdgeLength, double maxEdgeLength, bool keepStartPoint)
Gets a polyline approximation of a curve.
inherited fromCurve
mainSegmentCount (int)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 (int)An amount of subsegments.
maxAngleRadians (double)( 0 to pi ) Maximum angle (in radians) between unit tangents at adjacent vertices.
maxChordLengthRatio (double)Maximum permitted value of (distance chord midpoint to curve) / (length of chord).
maxAspectRatio (double)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 (double)If tolerance = 0, the parameter is ignored. This parameter controls the maximum permitted value of the distance from the curve to the polyline.
minEdgeLength (double)The minimum permitted edge length.
maxEdgeLength (double)If maxEdgeLength = 0, the parameter is ignored. This parameter controls the maximum permitted edge length.
keepStartPoint (bool)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.
PolylineCurve on success, null on error.

TorsionAt

[ConstOperation] public double TorsionAt(double t)
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.
inherited fromCurve
Remarks: See Barrett O'Neill, Elementary Differential Geometry, page 69.
t (double)The evaluation parameter.
The torsion if successful.

Transform

public bool Transform(Transform xform)
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.
inherited fromGeometryBase
xform (Transform)Transformation to apply to geometry.
true if geometry successfully transformed.

Translate

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

Translate

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

Trim

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

Trim

[ConstOperation] public Curve Trim(double t0, double t1)
Removes portions of the curve outside the specified 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.
t0 (double)Start of the trimming interval.
t1 (double)End of the trimming interval.
Trimmed portion of this curve is successful, null on failure.

Trim

[ConstOperation] public Curve Trim(Interval domain)
Removes portions of the curve outside the specified 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.
domain (Interval)Trimming interval.
Trimmed curve if successful, null on failure.

TrimInterval

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

TrimInterval

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

TryGetArc

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

TryGetArc

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

TryGetArc

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

TryGetArc

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

TryGetCircle

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

TryGetCircle

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

TryGetEllipse

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

TryGetEllipse

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

TryGetEllipse

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

TryGetEllipse

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

TryGetPlane

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

TryGetPlane

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

TryGetPolyline

public bool TryGetPolyline(out Polyline polyline, out double[] parameters)
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.
inherited fromCurve
polyline (out Polyline)If true is returned, then the polyline form is returned here.
parameters (out double[])if true is returned, then the parameters of the polyline points are returned here.
true if this curve can be represented as a polyline; otherwise, false.

TryGetPolyline

public bool TryGetPolyline(out Polyline polyline)
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.
inherited fromCurve
polyline (out Polyline)If true is returned, then the polyline form is returned here.
true if this curve can be represented as a polyline; otherwise, false.