## FCurve.ExtendCycle

### Introduced

v6.0

### Description

Extends the fcurve to include the given number of cycles before/after.
The cycle length is defined by the start/end keys and the current extrapolation for the fcurve (FCurve.Extrapolation) is taken into account when generating the new cycles. Therefore, the method will fail if the fcurve has less than two keys.

### C# Syntax

    FCurve.ExtendCycle( Int32 in_CyclesBefore, Int32 in_CyclesAfter );

### Scripting Syntax

    FCurve.ExtendCycle( [CyclesBefore], [CyclesAfter] );

### Parameters

Parameter | Type | Description
--- | --- | ---
CyclesBefore | Long | The number of cycles to extend before the fcurve. Default Value: 0
CyclesAfter | Long | The number of cycles to extend after the fcurve. Default Value: 0

### Examples

#### JScript Example

    //

    // This example illustrates how to extend an fcurve to include cycles before/after

    // Create a new scene

    NewScene(null, false);

    // Create a null

    oNull = Application.GetPrim("Null");

    // Get the posx parameter of the null

    oPosX = oNull.posx

    // Create array of time-value pairs

    aKeys = new Array( 0.00, 5.00,

    				1.00, 6.00,

    				2.00, 7.00,

    				3.00, 8.00,

    				4.00, 9.00,

    				5.00, 10.00 );

    // Create an empty FCurve

    oFCurve = oPosX.AddFCurve2( null, siStandardFCurve );

    // Set the fcurve keys

    oFCurve.SetKeys( aKeys );

    // Set the extrapolation for this fcurve

    oFCurve.Extrapolation = siPeriodicRelativeExtrapolation;

    Application.LogMessage( 'Before ExtendCycle:', siInfo );

    for (var i = 0; i < oFCurve.Keys.Count; i++)

    {

    	Application.LogMessage( 'Time: ' + oFCurve.Keys(i).Time + ', Value: ' + oFCurve.Keys(i).Value, siInfo );

    }

    // Extend one cycle before and after

    oFCurve.ExtendCycle( 1, 1 );

    Application.LogMessage( 'After ExtendCycle:', siInfo );

    for (var i = 0; i < oFCurve.Keys.Count; i++)

    {

    	Application.LogMessage( 'Time: ' + oFCurve.Keys(i).Time + ', Value: ' + oFCurve.Keys(i).Value, siInfo );

    }

    // Produces the following output:

    //

    //INFO : Before ExtendCycle:

    //INFO : Time: 0, Value: 5

    //INFO : Time: 1, Value: 6

    //INFO : Time: 2, Value: 7

    //INFO : Time: 3, Value: 8

    //INFO : Time: 4, Value: 9

    //INFO : Time: 5, Value: 10

    //INFO : After ExtendCycle:

    //INFO : Time: -5, Value: 0

    //INFO : Time: -4, Value: 1

    //INFO : Time: -3, Value: 2

    //INFO : Time: -2, Value: 3

    //INFO : Time: -1, Value: 4

    //INFO : Time: 0, Value: 5

    //INFO : Time: 1, Value: 6

    //INFO : Time: 2, Value: 7

    //INFO : Time: 3, Value: 8

    //INFO : Time: 4, Value: 9

    //INFO : Time: 5, Value: 10

    //INFO : Time: 6, Value: 11

    //INFO : Time: 7, Value: 12

    //INFO : Time: 8, Value: 13

    //INFO : Time: 9, Value: 14

    //INFO : Time: 10, Value: 15

### See Also

FCurve.Extrapolation