# PolyCurve

## PolyCurve

Represents a curve that is the result of joining several (possibly different) types of curves.

## Constructor

### Members

#### degree :int

Inherited From:
Gets the maximum algebraic degree of any span or a good estimate if curve spans are not algebraic.
• int

#### dimension :int

Inherited From:
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.
• int

#### domain :Interval

Inherited From:
Gets or sets the domain of the curve.
• Interval

#### hasBrepForm :bool

Inherited From:
Returns true if the Brep.TryConvertBrep function will be successful for this object
• bool

#### hasGap :bool

This is a quick way to see if the curve has gaps between the sub curve segments.
• bool

#### isClosed :bool

Inherited From:
Gets a value indicating whether or not this curve is a closed curve.
• bool

#### isDeformable :bool

Inherited From:
true if object can be accurately modified with "squishy" transformations like projections, shears, and non-uniform scaling.
• bool

#### isNested :bool

Gets a value indicating whether or not a PolyCurve contains nested PolyCurves.
• bool

#### isPeriodic :bool

Inherited From:
Gets a value indicating whether or not this curve is considered to be Periodic.
• bool

#### isValid :bool

Inherited From:
Tests an object to see if it is valid.
• bool

#### objectType :ObjectType

Inherited From:
Useful for switch statements that need to differentiate between basic object types like points, curves, surfaces, and so on.
• ObjectType

#### pointAtEnd :Array.<x, y, z>

Inherited From:
Evaluates point at the end of the curve.
##### Type:
• Array.<x, y, z>

#### pointAtStart :Array.<x, y, z>

Inherited From:
Evaluates point at the start of the curve.
##### Type:
• Array.<x, y, z>

#### segmentCount :int

Gets the number of segments that make up this Polycurve.
• int

#### spanCount :int

Inherited From:
Gets the number of non-empty smooth (c-infinity) spans in the curve.
• int

#### tangentAtEnd :Array.<x, y, z>

Inherited From:
Evaluate unit tangent vector at the end of the curve.
##### Type:
• Array.<x, y, z>

#### tangentAtStart :Array.<x, y, z>

Inherited From:
Evaluates the unit tangent vector at the start of the curve.
##### Type:
• Array.<x, y, z>

Inherited From:

### Methods

#### append(line) → {bool}

Appends and matches the start of the line to the end of polycurve. This function will fail if the polycurve is closed.
##### Parameters:
Name Type Description
`line` Line Line segment to append.
##### Returns:
true on success, false on failure.
Type
bool

#### append(line) → {bool}

Appends and matches the start of the line to the end of polycurve. This function will fail if the polycurve is closed.
##### Parameters:
Name Type Description
`line` Line Line segment to append.
##### Returns:
true on success, false on failure.
Type
bool

#### append(line) → {bool}

Appends and matches the start of the line to the end of polycurve. This function will fail if the polycurve is closed.
##### Parameters:
Name Type Description
`line` Line Line segment to append.
##### Returns:
true on success, false on failure.
Type
bool

#### appendSegment(curve) → {bool}

Appends the curve to the polycurve without changing the new segment's geometry. This function will fail if the PolyCurve is closed or if SegmentCount > 0 and the new segment is closed.
##### Parameters:
Name Type Description
`curve` Curve Segment to append.
##### Returns:
true on success, false on failure.
Type
bool

#### changeClosedCurveSeam(t) → {bool}

Inherited From:
If this curve is closed, then modify it so that the start/end point is at curve parameter t.
##### Parameters:
Name Type Description
`t` double Curve parameter of new start/end point. The returned curves domain will start at t.
##### Returns:
true on success, false on failure.
Type
bool

#### changeDimension(desiredDimension) → {bool}

Inherited From:
Changes the dimension of a curve.
##### Parameters:
Name Type Description
`desiredDimension` int The desired dimension.
##### Returns:
true if the curve's dimension was already desiredDimension or if the curve's dimension was successfully changed to desiredDimension; otherwise false.
Type
bool

#### curvatureAt(t) → {Array.<x, y, z>}

Inherited From:
Evaluate the curvature vector at a curve parameter.
##### Parameters:
Name Type Description
`t` double Evaluation parameter.
##### Returns:
Curvature vector of the curve at the parameter t.
Type
Array.<x, y, z>

#### duplicate() → {GeometryBase}

Inherited From:
Constructs a deep (full) copy of this object.
##### Returns:
An object of the same type as this, with the same properties and behavior.
Type
GeometryBase

Inherited From:
...

#### explode() → {Array.<Curve>}

Explodes this PolyCurve into a list of Curve segments. This will not explode nested polycurves. Call first if you need all individual segments.
##### Returns:
An array of polycurve segments.
Type
Array.<Curve>

#### frameAt(t) → {Array}

Inherited From:
Returns a 3d frame at a parameter.
##### Parameters:
Name Type Description
`t` double Evaluation parameter.
##### Returns:
[bool, Plane]
• (bool) true on success, false on failure.
• (Plane) The frame is returned here.
Type
Array

#### getBoundingBox(plane) → {Array}

Inherited From:
Aligned Bounding box solver. Gets the plane aligned bounding box.
##### Parameters:
Name Type Description
`plane` Plane Orientation plane for BoundingBox.
##### Returns:
[BoundingBox, Box]
• (BoundingBox) A BoundingBox in plane coordinates.
• (Box) Aligned box in World coordinates.
Type
Array

#### getCurveParameterFromNurbsFormParameter(nurbsParameter) → {Array}

Inherited From:
Convert a NURBS curve parameter to a curve parameter.
##### Parameters:
Name Type Description
`nurbsParameter` double NURBS form parameter.
##### Returns:
[bool, double]
• (bool) true on success, false on failure.
• (double) Curve parameter.
Type
Array

#### getNurbsFormParameterFromCurveParameter(curveParameter) → {Array}

Inherited From:
Convert a curve parameter to a NURBS curve parameter.
##### Parameters:
Name Type Description
`curveParameter` double Curve parameter.
##### Returns:
[bool, double]
• (bool) true on success, false on failure.
• (double) NURBS form parameter.
Type
Array

Inherited From:
...

Inherited From:
...

#### isArc(tolerance) → {bool}

Inherited From:
Test a curve to see if it can be represented by an arc or circle within the given tolerance.
##### Parameters:
Name Type Description
`tolerance` double Tolerance to use when checking.
##### Returns:
true if the curve can be represented by an arc or a circle within tolerance.
Type
bool

#### isCircle(tolerance) → {bool}

Inherited From:
Test a curve to see if it can be represented by a circle within the given tolerance.
##### Parameters:
Name Type Description
`tolerance` double Tolerance to use when checking.
##### Returns:
true if the curve can be represented by a circle to within tolerance.
Type
bool

#### isEllipse(tolerance) → {bool}

Inherited From:
Test a curve to see if it can be represented by an ellipse within a given tolerance.
##### Parameters:
Name Type Description
`tolerance` double Tolerance to use for checking.
##### Returns:
true if the Curve can be represented by an ellipse within tolerance.
Type
bool

#### isLinear(tolerance) → {bool}

Inherited From:
Test a curve to see if it is linear to within the custom tolerance.
##### Parameters:
Name Type Description
`tolerance` double Tolerance to use when checking linearity.
##### Returns:
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.
Type
bool

#### isPlanar(tolerance) → {bool}

Inherited From:
Test a curve for planarity.
##### Parameters:
Name Type Description
`tolerance` double Tolerance to use when checking.
##### Returns:
true if there is a plane such that the maximum distance from the curve to the plane is <= tolerance.
Type
bool

#### isPolyline() → {bool}

Inherited From:
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.
##### Returns:
true if this curve can be represented as a polyline; otherwise, false.
Type
bool

#### makeDeformable() → {bool}

Inherited From:
If possible, converts the object into a form that can be accurately modified with "squishy" transformations like projections, shears, an non-uniform scaling.
##### Returns:
false if object cannot be converted to a deformable object. true if object was already deformable or was converted into a deformable object.
Type
bool

#### pointAt(t) → {Array.<x, y, z>}

Inherited From:
Evaluates point at a curve parameter.
##### Parameters:
Name Type Description
`t` double Evaluation parameter.
##### Returns:
Point (location of curve at the parameter t).
Type
Array.<x, y, z>

#### polyCurveParameter(segmentIndex, segmentCurveParameter) → {double}

Converts a segment curve parameter to a polycurve parameter.
##### Parameters:
Name Type Description
`segmentIndex` int Index of segment.
`segmentCurveParameter` double Parameter on segment.
##### Returns:
Polycurve evaluation parameter or UnsetValue if the polycurve curve parameter could not be computed.
Type
double

Inherited From:
...

#### removeNesting() → {bool}

Explodes nested polycurve segments and reconstructs this curve from the shattered remains. The result will have not have any PolyCurves as segments but it will have identical locus and parameterization.
##### Returns:
true if any nested PolyCurve was found and absorbed, false if no PolyCurve segments could be found.
Type
bool

#### reverse() → {bool}

Inherited From:
Reverses the direction of the curve.
##### Returns:
true on success, false on failure.
Type
bool

#### rotate(angleRadians, rotationAxis, rotationCenter) → {bool}

Inherited From:
Rotates the object about the specified axis. A positive rotation angle results in a counter-clockwise rotation about the axis (right hand rule).
##### Parameters:
Name Type Description
`angleRadians` double Angle of rotation in radians.
`rotationAxis` Array.<x, y, z> Direction of the axis of rotation.
`rotationCenter` Array.<x, y, z> Point on the axis of rotation.
##### Returns:
true if geometry successfully rotated.
Type
bool

#### scale(scaleFactor) → {bool}

Inherited From:
Scales the object by the specified factor. The scale is centered at the origin.
##### Parameters:
Name Type Description
`scaleFactor` double The uniform scaling factor.
##### Returns:
true if geometry successfully scaled.
Type
bool

#### segmentCurve(index) → {Curve}

Gets the segment curve at the given index.
##### Parameters:
Name Type Description
`index` int Index of segment to retrieve.
##### Returns:
The segment at the given index or null on failure.
Type
Curve

#### segmentCurveParameter(polycurveParameter) → {double}

Converts a polycurve parameter to a segment curve parameter.
##### Parameters:
Name Type Description
`polycurveParameter` double Parameter on PolyCurve to convert.
##### Returns:
Segment curve evaluation parameter or UnsetValue if the segment curve parameter could not be computed.
Type
double

#### segmentDomain(segmentIndex) → {Interval}

Returns the polycurve sub-domain assigned to a segment curve.
##### Parameters:
Name Type Description
`segmentIndex` int Index of segment.
##### Returns:
The polycurve sub-domain assigned to a segment curve. Returns Interval.Unset if segment_index < 0 or segment_index >= Count().
Type
Interval

#### segmentIndex(polycurveParameter) → {int}

Finds the segment used for evaluation at polycurve_parameter.
##### Parameters:
Name Type Description
`polycurveParameter` double Parameter on polycurve for segment lookup.
##### Returns:
Index of the segment used for evaluation at polycurve_parameter. If polycurve_parameter < Domain.Min(), then 0 is returned. If polycurve_parameter > Domain.Max(), then Count()-1 is returned.
Type
int

#### setEndPoint(point) → {bool}

Inherited From:
Forces the curve to end at a specified point. Not all curve types support this operation.
##### Parameters:
Name Type Description
`point` Array.<x, y, z> New end point of curve.
##### Returns:
true on success, false on failure.
Type
bool

#### setStartPoint(point) → {bool}

Inherited From:
Forces the curve to start at a specified point. Not all curve types support this operation.
##### Parameters:
Name Type Description
`point` Array.<x, y, z> New start point of curve.
##### Returns:
true on success, false on failure.
Type
bool

Inherited From:
...

#### split(t) → {Array.<Curve>}

Inherited From:
Splits (divides) the curve at the specified parameter. The parameter must be in the interior of the curve's domain.
##### Parameters:
Name Type Description
`t` double Parameter to split the curve at in the interval returned by Domain().
##### Returns:
Two curves on success, null on failure.
Type
Array.<Curve>

#### tangentAt(t) → {Array.<x, y, z>}

Inherited From:
Evaluates the unit tangent vector at a curve parameter.
##### Parameters:
Name Type Description
`t` double Evaluation parameter.
##### Returns:
Unit tangent vector of the curve at the parameter t.
Type
Array.<x, y, z>

#### toJSON()

Inherited From:
Create a JSON string representation of this object

#### toNurbsCurve() → {NurbsCurve}

Inherited From:
Constructs a NURBS curve representation of this curve.
##### Returns:
NURBS representation of the curve on success, null on failure.
Type
NurbsCurve

#### transform(xform) → {bool}

Inherited From:
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.
##### Parameters:
Name Type Description
`xform` Transform Transformation to apply to geometry.
##### Returns:
true if geometry successfully transformed.
Type
bool

#### translate(translationVector) → {bool}

Inherited From:
Translates the object along the specified vector.
##### Parameters:
Name Type Description
`translationVector` Array.<x, y, z> A moving vector.
##### Returns:
true if geometry successfully translated.
Type
bool

#### trim(t0, t1) → {Curve}

Inherited From:
Removes portions of the curve outside the specified interval.
##### Parameters:
Name Type Description
`t0` double Start of the trimming interval. Portions of the curve before curve(t0) are removed.
`t1` double End of the trimming interval. Portions of the curve after curve(t1) are removed.
##### Returns:
Trimmed portion of this curve is successful, null on failure.
Type
Curve

#### tryGetArc(tolerance) → {Array}

Inherited From:
Try to convert this curve into an Arc using a custom tolerance.
##### Parameters:
Name Type Description
`tolerance` double Tolerance to use when checking.
##### Returns:
[bool, Arc]
• (bool) true if the curve could be converted into an arc.
• (Arc) On success, the Arc will be filled in.
Type
Array

#### tryGetCircle(tolerance) → {Array}

Inherited From:
Try to convert this curve into a Circle using a custom tolerance.
##### Parameters:
Name Type Description
`tolerance` double Tolerance to use when checking.
##### Returns:
[bool, Circle]
• (bool) true if the curve could be converted into a Circle within tolerance.
• (Circle) On success, the Circle will be filled in.
Type
Array

#### tryGetPolyline() → {Array}

Inherited From:
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.
##### Returns:
[bool, Polyline]
• (bool) true if this curve can be represented as a polyline; otherwise, false.
• (Polyline) If true is returned, then the polyline form is returned here.
Type
Array