B

BeginEdit (FCurve)

Introduced

3.0

Description

Starts recording bulk edits made to the fcurve. A call to BeginEdit must be paired with a call to FCurve.EndEdit, which commit your changes to the undo/redo stack.

Editing changes can be undone by calling FCurve.UndoEdit and you can check if the fcurve is being bulk-edited by using the FCurve.IsEditing method.

Note: If you try to begin another bulk-edit a warning is issued and the current editing is committed to the undo/redo stack.

C# Syntax

    FCurve.BeginEdit();

Examples

JScript Example

    /*
       This JScript example illustrates how to use the editing recording feature
       of fcurves. This allows changes to be committed only after all edits have
       been completed and undone if necessary.
    */

    // Create a null
    Application.NewScene( null, false );
    var nullobj = ActiveSceneRoot.AddNull();

    // Create an fcurve on the posx parameter from the null
    var fc = nullobj.posx.AddFCurve();

    // Define a random number of keys
    var nbkeys = Math.round( Math.random() * 100 );
    LogMessage( nbkeys );

    var arraysize = nbkeys * 2;
    var keys = new Array( 2 * nbkeys );
    var i = 0, empty;

    var offset = -50;
    for ( i=0; i<arraysize; i+=2 )
    {
       keys[i] = offset + i;
       keys[i+1] = (Math.cos( (i + 1) / 10 ) * 50);
    }

    // Set the keys on the fcurve
    fc.SetKeys(keys);

    // Begin recording changes to fcurve
    fc.BeginEdit();

    if ( fc.IsEditing() )
    {
       LogMessage( "fcurve is recording changes" );
    }

    // Assign random values to keys
    for ( i=0; i<fc.GetNumKeys(); i++ )
    {
       // Assign a randon value to keys
       fc.Keys(i).Value = ( Math.random() * 100 ) - 50;
    }

    // If the number of keys if greater than 50 then undo all the
    // changes you just made
    var nbkeys = fc.GetNumKeys();
    if ( nbkeys > 50 )
    {
       LogMessage( "undoing changes" );
       fc.UndoEdit();
    }
    nbkeys = fc.GetNumKeys();
    LogMessage( "total number of keys = " + nbkeys );

    // End editing (not necessary to call if changes were undone)
    fc.EndEdit();

    if ( !fc.IsEditing() )
    {
       LogMessage( "fcurve has finished recording changes" );
    }

    // Outputs:
    //INFO : 46
    //INFO : fcurve is recording changes
    //INFO : total number of keys = 46
    //INFO : fcurve has finished recording changes

See Also

FCurve.EndEdit | FCurve.UndoEdit | FCurve.IsEditing

Autodesk Softimage v7.5