## PlotToActions

### Introduced

v7.5

### Description

Creates and returns new actions by plotting values from consecutive frames of an animation. Actions are created under models containing animated parameters matching the specified list.

### Scripting Syntax

    oReturn = PlotToActions( [InputObj], [Name], [StartFrame], [EndFrame], [StepFrame], [FCurve Kind], [DefaultSegKind], [Fit FCurve], [Fit Tolerance], [ProcessContRots] );

### Return Value

Returns the created actions (a XSICollection object).

### Parameters

Parameter | Type | Description
--- | --- | ---
InputObj | String | List of parameters to plot into actions. Default Value: Marked values in current selection
Name | String | Name for the actions Default Value: "Action"
StartFrame | Double | First frame to plot Default Value: 0
EndFrame | Double | Last frame to plot Default Value: 0
StepFrame | Double | Step between frames Default Value: 1
FCurve Kind | Integer | What kind of fcurve do we want to plot to? Default Value: 20
Possible Values: | Description:
10 | BOOLEAN (value true or false)
15 | INTEGER (staircase-like fcurve with integer values)
20 | STANDARD (fcurve with spline/linear/constant interpolation)
30 | RAWDATA (linear fcurve: less storage than a standard fcurve but with linear interpolation only)
DefaultSegKind | Integer | What kind of interpolation do we want for the resulting fcurves? Note: Only relevant when FCurveKind is 20 (Standard). Default Value: 3
Possible Values: | Description:
1 | CONSTANT
2 | LINEAR
3 | CUBIC
Fit FCurve | Boolean | Do we want to fit an fcurve through the plotted values? Default Value: False
Fit Tolerance | Double | What tolerance do we want for the fit? Default Value: 0.01
ProcessContRots | Boolean | Do we want to process rotation curves to ensure their continuity? Default Value: True

### Examples

#### JScript Example

    //
    // This example sets up one model with a sphere and another with a cone,
    // marks the local posz parameter of each primitive, plots various parameters
    // to an action source for each model, and then prints out the new sources.
    //
    // Set up the scene.
    NewScene( null, false );
    var oSphere = CreatePrim( "Sphere", "NurbsSurface", "MySphere" );
    var oCone = CreatePrim( "Cone", "NurbsSurface", "MyCone" );
    CreateModel( oSphere, "SphereModel" );
    CreateModel( oCone, "ConeModel" );
    // Create a path for the sphere and cone, just to make things more interesting.
    var oPath = CreatePrim( "Spiral", "NurbsCurve" );
    ApplyPath( oSphere, oPath, 1, 50, 2, true, true );
    ApplyPath( oCone, oPath, 50, 100, 2, true, true );
    // Mark the local position parameter in Z for the sphere and cone.
    SelectObj( oSphere + "," + oCone, null, true );
    SetMarking( "kine.local.posz" );
    // Plot the values of the marked parameter for the sphere and cone between frames 20 and 60.
    // Notice that the default input is the marked parameters, so
    // we do not have to specify anything for the 1st argument
    PlotToActions( null, null, 20, 60 );
    // Plot the local X position of the sphere and cone every frame between frames 20 and 60
    // and store the result in raw data fcurves.
    PlotToActions( oSphere + ".kine.local.posx," + oCone + ".kine.local.posx",
                            "ActionPosX", 20, 60, 1, 30 );
    // Plot the local Y position of the sphere only every frame between frames 20 and 60
    // and store the result in a standard fcurve with constant interpolation after
    // applying a fit with a tolerance of 0.1 to the plotted values.
    PlotToActions( oSphere.posy, "ActionPosY", 20, 60, 1, 30, 1, true, 0.1, true );
    // Once they are created, they are stored with the scene waiting to be applied
    var oRoot = Application.ActiveSceneRoot;
    var oModelsFound = oRoot.Models;
    var iModelsCount = oModelsFound.Count;
    if( iModelsCount > 0 )
    {
            for( var i = 0; i < iModelsCount; i++ )
            {
                    var oModel = oModelsFound.Item( i );
                    var oSourcesFound = oModel.Sources;
                    var iSourcesCount = oSourcesFound.Count;
                    if( iSourcesCount > 0 )
                    {
                            Application.LogMessage( "Found the following sources in " + oModel + ":" );
                            for( var j = 0; j < iSourcesCount; j++ )
                            {
                                    Application.LogMessage( "\t" + oSourcesFound.Item( j ).Name );
                            }
                    }
                    else
                    {
                            Application.LogMessage( "No sources found in " + oModel + "." );
                    }
            }
    }
    else
    {
            Application.LogMessage( "No models found in the scene." );
    }
    //---------------------------------------------------------
    // OUTPUT OF ABOVE SCRIPT IS:
    // INFO : Found the following sources in SphereModel:
    // INFO :       Action
    // INFO :       ActionPosX
    // INFO :       ActionPosY
    // INFO : Found the following sources in ConeModel:
    // INFO :       Action
    // INFO :       ActionPosX
    //---------------------------------------------------------

### See Also

PlotAndApplyActions PlotConstrainedTransformsToActions PlotKeyableToActions StoreAction