user: How do I use Nla Operators in Blender? Include parameters, examples, warnings and best practices.

assistant: # Nla Operators

bpy.ops.nla.action_pushdown(*\**, *track_index=-1*)
:   Push action down onto the top of the NLA stack as a new strip

    Parameters:
    :   **track_index** (*int in* *[**-1**,* *inf**]**,* *(**optional**)*) – Track Index, Index of NLA action track to perform pushdown operation on

bpy.ops.nla.action_sync_length(*\**, *active=True*)
:   Synchronize the length of the referenced Action with the length used in the strip

    Parameters:
    :   **active** (*boolean**,* *(**optional**)*) – Active Strip Only, Only sync the active length for the active strip

bpy.ops.nla.action_unlink(*\**, *force_delete=False*)
:   Unlink this action from the active action slot (and/or exit Tweak Mode)

    Parameters:
    :   **force_delete** (*boolean**,* *(**optional**)*) – Force Delete, Clear Fake User and remove copy stashed in this data-block’s NLA stack

bpy.ops.nla.actionclip_add(*\**, *action=''*)
:   Add an Action-Clip strip (i.e. an NLA Strip referencing an Action) to the active track

    Parameters:
    :   **action** (*enum in* *[**]**,* *(**optional**)*) – Action

bpy.ops.nla.apply_scale()
:   Apply scaling of selected strips to their referenced Actions

bpy.ops.nla.bake(*\**, *frame_start=1*, *frame_end=250*, *step=1*, *only_selected=True*, *visual_keying=False*, *clear_constraints=False*, *clear_parents=False*, *use_current_action=False*, *clean_curves=False*, *bake_types={'POSE'}*, *channel_types={'BBONE', 'LOCATION', 'PROPS', 'ROTATION', 'SCALE'}*)
:   Bake all selected objects location/scale/rotation animation to an action

    Parameters:
    :   - **frame_start** (*int in* *[**0**,* *300000**]**,* *(**optional**)*) – Start Frame, Start frame for baking
        - **frame_end** (*int in* *[**1**,* *300000**]**,* *(**optional**)*) – End Frame, End frame for baking
        - **step** (*int in* *[**1**,* *120**]**,* *(**optional**)*) – Frame Step, Number of frames to skip forward while baking each frame
        - **only_selected** (*boolean**,* *(**optional**)*) – Only Selected Bones, Only key selected bones (Pose baking only)
        - **visual_keying** (*boolean**,* *(**optional**)*) – Visual Keying, Keyframe from the final transformations (with constraints applied)
        - **clear_constraints** (*boolean**,* *(**optional**)*) – Clear Constraints, Remove all constraints from keyed object/bones. To get a correct bake with this setting Visual Keying should be enabled
        - **clear_parents** (*boolean**,* *(**optional**)*) – Clear Parents, Bake animation onto the object then clear parents (objects only)
        - **use_current_action** (*boolean**,* *(**optional**)*) – Overwrite Current Action, Bake animation into current action, instead of creating a new one (useful for baking only part of bones in an armature)
        - **clean_curves** (*boolean**,* *(**optional**)*) – Clean Curves, After baking curves, remove redundant keys
        - **bake_types** (enum set in {`'POSE'`, `'OBJECT'`}, (optional)) –

          Bake Data, Which data’s transformations to bake

          - `POSE`
            Pose – Bake bones transformations.
          - `OBJECT`
            Object – Bake object transformations.
        - **channel_types** (enum set in {`'LOCATION'`, `'ROTATION'`, `'SCALE'`, `'BBONE'`, `'PROPS'`}, (optional)) –

          Channels, Which channels to bake

          - `LOCATION`
            Location – Bake location channels.
          - `ROTATION`
            Rotation – Bake rotation channels.
          - `SCALE`
            Scale – Bake scale channels.
          - `BBONE`
            B-Bone – Bake B-Bone channels.
          - `PROPS`
            Custom Properties – Bake custom properties.

    File:
    :   [startup/bl_operators/anim.py:274](https://projects.blender.org/blender/blender/src/branch/main/scripts/startup/bl_operators/anim.py#L274)

bpy.ops.nla.channels_click(*\**, *extend=False*)
:   Handle clicks to select NLA tracks

    Parameters:
    :   **extend** (*boolean**,* *(**optional**)*) – Extend Select

bpy.ops.nla.clear_scale()
:   Reset scaling of selected strips

bpy.ops.nla.click_select(*\**, *wait_to_deselect_others=False*, *use_select_on_click=False*, *mouse_x=0*, *mouse_y=0*, *extend=False*, *deselect_all=False*)
:   Handle clicks to select NLA Strips

    Parameters:
    :   - **wait_to_deselect_others** (*boolean**,* *(**optional**)*) – Wait to Deselect Others
        - **use_select_on_click** (*boolean**,* *(**optional**)*) – Act on Click, Instead of selecting on mouse press, wait to see if there’s drag event. Otherwise select on mouse release
        - **mouse_x** (*int in* *[**-inf**,* *inf**]**,* *(**optional**)*) – Mouse X
        - **mouse_y** (*int in* *[**-inf**,* *inf**]**,* *(**optional**)*) – Mouse Y
        - **extend** (*boolean**,* *(**optional**)*) – Extend Select
        - **deselect_all** (*boolean**,* *(**optional**)*) – Deselect On Nothing, Deselect all when nothing under the cursor

bpy.ops.nla.delete()
:   Delete selected strips

bpy.ops.nla.duplicate(*\**, *linked=False*)
:   Duplicate selected NLA-Strips, adding the new strips to new track(s)

    Parameters:
    :   **linked** (*boolean**,* *(**optional**)*) – Linked, When duplicating strips, assign new copies of the actions they use

bpy.ops.nla.duplicate_linked_move(*\**, *NLA_OT_duplicate=None*, *TRANSFORM_OT_translate=None*)
:   Duplicate Linked selected NLA-Strips, adding the new strips to new track(s)

    Parameters:
    :   - **NLA_OT_duplicate** (`NLA_OT_duplicate`, (optional)) – Duplicate Strips, Duplicate selected NLA-Strips, adding the new strips to new track(s)
        - **TRANSFORM_OT_translate** (`TRANSFORM_OT_translate`, (optional)) – Move, Move selected items

bpy.ops.nla.duplicate_move(*\**, *NLA_OT_duplicate=None*, *TRANSFORM_OT_translate=None*)
:   Duplicate selected NLA-Strips, adding the new strips to new track(s)

    Parameters:
    :   - **NLA_OT_duplicate** (`NLA_OT_duplicate`, (optional)) – Duplicate Strips, Duplicate selected NLA-Strips, adding the new strips to new track(s)
        - **TRANSFORM_OT_translate** (`TRANSFORM_OT_translate`, (optional)) – Move, Move selected items

bpy.ops.nla.fmodifier_add(*\**, *type='NULL'*, *only_active=True*)
:   Add F-Modifier to the active/selected NLA-Strips

    Parameters:
    :   - **type** (enum in [Fmodifier Type Items](bpy_types_enum_items/fmodifier_type_items.html#rna-enum-fmodifier-type-items), (optional)) – Type
        - **only_active** (*boolean**,* *(**optional**)*) – Only Active, Only add a F-Modifier of the specified type to the active strip

bpy.ops.nla.fmodifier_copy()
:   Copy the F-Modifier(s) of the active NLA-Strip

bpy.ops.nla.fmodifier_paste(*\**, *only_active=True*, *replace=False*)
:   Add copied F-Modifiers to the selected NLA-Strips

    Parameters:
    :   - **only_active** (*boolean**,* *(**optional**)*) – Only Active, Only paste F-Modifiers on active strip
        - **replace** (*boolean**,* *(**optional**)*) – Replace Existing, Replace existing F-Modifiers, instead of just appending to the end of the existing list

bpy.ops.nla.make_single_user(*\**, *confirm=True*)
:   Make linked action local to each strip

    Parameters:
    :   **confirm** (*boolean**,* *(**optional**)*) – Confirm, Prompt for confirmation

bpy.ops.nla.meta_add()
:   Add new meta-strips incorporating the selected strips

bpy.ops.nla.meta_remove()
:   Separate out the strips held by the selected meta-strips

bpy.ops.nla.move_down()
:   Move selected strips down a track if there’s room

bpy.ops.nla.move_up()
:   Move selected strips up a track if there’s room

bpy.ops.nla.mute_toggle()
:   Mute or un-mute selected strips

bpy.ops.nla.previewrange_set()
:   Set Preview Range based on extends of selected strips

bpy.ops.nla.select_all(*\**, *action='TOGGLE'*)
:   Select or deselect all NLA-Strips

    Parameters:
    :   **action** (enum in [`'TOGGLE'`, `'SELECT'`, `'DESELECT'`, `'INVERT'`], (optional)) –

        Action, Selection action to execute

        - `TOGGLE`
          Toggle – Toggle selection for all elements.
        - `SELECT`
          Select – Select all elements.
        - `DESELECT`
          Deselect – Deselect all elements.
        - `INVERT`
          Invert – Invert selection of all elements.

bpy.ops.nla.select_box(*\**, *axis_range=False*, *tweak=False*, *xmin=0*, *xmax=0*, *ymin=0*, *ymax=0*, *wait_for_input=True*, *mode='SET'*)
:   Use box selection to grab NLA-Strips

    Parameters:
    :   - **axis_range** (*boolean**,* *(**optional**)*) – Axis Range
        - **tweak** (*boolean**,* *(**optional**)*) – Tweak, Operator has been activated using a click-drag event
        - **xmin** (*int in* *[**-inf**,* *inf**]**,* *(**optional**)*) – X Min
        - **xmax** (*int in* *[**-inf**,* *inf**]**,* *(**optional**)*) – X Max
        - **ymin** (*int in* *[**-inf**,* *inf**]**,* *(**optional**)*) – Y Min
        - **ymax** (*int in* *[**-inf**,* *inf**]**,* *(**optional**)*) – Y Max
        - **wait_for_input** (*boolean**,* *(**optional**)*) – Wait for Input
        - **mode** (enum in [`'SET'`, `'ADD'`, `'SUB'`], (optional)) –

          Mode

          - `SET`
            Set – Set a new selection.
          - `ADD`
            Extend – Extend existing selection.
          - `SUB`
            Subtract – Subtract existing selection.

bpy.ops.nla.select_leftright(*\**, *mode='CHECK'*, *extend=False*)
:   Select strips to the left or the right of the current frame

    Parameters:
    :   - **mode** (enum in [`'CHECK'`, `'LEFT'`, `'RIGHT'`], (optional)) – Mode
        - **extend** (*boolean**,* *(**optional**)*) – Extend Select

bpy.ops.nla.selected_objects_add()
:   Make selected objects appear in NLA Editor by adding Animation Data

bpy.ops.nla.snap(*\**, *type='CFRA'*)
:   Move start of strips to specified time

    Parameters:
    :   **type** (enum in [`'CFRA'`, `'NEAREST_FRAME'`, `'NEAREST_SECOND'`, `'NEAREST_MARKER'`], (optional)) – Type

bpy.ops.nla.soundclip_add()
:   Add a strip for controlling when speaker plays its sound clip

bpy.ops.nla.split()
:   Split selected strips at their midpoints

bpy.ops.nla.swap()
:   Swap order of selected strips within tracks

bpy.ops.nla.tracks_add(*\**, *above_selected=False*)
:   Add NLA-Tracks above/after the selected tracks

    Parameters:
    :   **above_selected** (*boolean**,* *(**optional**)*) – Above Selected, Add a new NLA Track above every existing selected one

bpy.ops.nla.tracks_delete()
:   Delete selected NLA-Tracks and the strips they contain

bpy.ops.nla.transition_add()
:   Add a transition strip between two adjacent selected strips

bpy.ops.nla.tweakmode_enter(*\**, *isolate_action=False*, *use_upper_stack_evaluation=False*)
:   Enter tweaking mode for the action referenced by the active strip to edit its keyframes

    Parameters:
    :   - **isolate_action** (*boolean**,* *(**optional**)*) – Isolate Action, Enable ‘solo’ on the NLA Track containing the active strip, to edit it without seeing the effects of the NLA stack
        - **use_upper_stack_evaluation** (*boolean**,* *(**optional**)*) – Evaluate Upper Stack, In tweak mode, display the effects of the tracks above the tweak strip

bpy.ops.nla.tweakmode_exit(*\**, *isolate_action=False*)
:   Exit tweaking mode for the action referenced by the active strip

    Parameters:
    :   **isolate_action** (*boolean**,* *(**optional**)*) – Isolate Action, Disable ‘solo’ on any of the NLA Tracks after exiting tweak mode to get things back to normal

bpy.ops.nla.view_all()
:   Reset viewable area to show full strips range

bpy.ops.nla.view_frame()
:   Move the view to the current frame

bpy.ops.nla.view_selected()
:   Reset viewable area to show selected strips range