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

assistant: modifier_add_node_group(*\**, *asset_library_type='LOCAL'*, *asset_library_identifier=''*, *relative_asset_identifier=''*, *session_uid=0*, *use_selected_objects=False*)
:   Add a procedural operation/effect to the active object

    Parameters:
    :   - **asset_library_type** (enum in [Asset Library Type Items](bpy_types_enum_items/asset_library_type_items.html#rna-enum-asset-library-type-items), (optional)) – Asset Library Type
        - **asset_library_identifier** (*string**,* *(**optional**,* *never None**)*) – Asset Library Identifier
        - **relative_asset_identifier** (*string**,* *(**optional**,* *never None**)*) – Relative Asset Identifier
        - **session_uid** (*int in* *[**-inf**,* *inf**]**,* *(**optional**)*) – Session UID, Session UID of the data-block to use by the operator
        - **use_selected_objects** (*boolean**,* *(**optional**)*) – Selected Objects, Affect all selected objects instead of just the active object

bpy.ops.object.modifier_apply(*\**, *modifier=''*, *report=False*, *merge_customdata=True*, *single_user=False*, *all_keyframes=False*, *use_selected_objects=False*)
:   Apply modifier and remove from the stack

    Parameters:
    :   - **modifier** (*string**,* *(**optional**,* *never None**)*) – Modifier, Name of the modifier to edit
        - **report** (*boolean**,* *(**optional**)*) – Report, Create a notification after the operation
        - **merge_customdata** (*boolean**,* *(**optional**)*) – Merge UVs, For mesh objects, merge UV coordinates that share a vertex to account for imprecision in some modifiers
        - **single_user** (*boolean**,* *(**optional**)*) – Make Data Single User, Make the object’s data single user if needed
        - **all_keyframes** (*boolean**,* *(**optional**)*) – Apply to all keyframes, For Grease Pencil objects, apply the modifier to all the keyframes
        - **use_selected_objects** (*boolean**,* *(**optional**)*) – Selected Objects, Affect all selected objects instead of just the active object

bpy.ops.object.modifier_apply_as_shapekey(*\**, *keep_modifier=False*, *modifier=''*, *report=False*, *use_selected_objects=False*)
:   Apply modifier as a new shape key and remove from the stack

    Parameters:
    :   - **keep_modifier** (*boolean**,* *(**optional**)*) – Keep Modifier, Do not remove the modifier from stack
        - **modifier** (*string**,* *(**optional**,* *never None**)*) – Modifier, Name of the modifier to edit
        - **report** (*boolean**,* *(**optional**)*) – Report, Create a notification after the operation
        - **use_selected_objects** (*boolean**,* *(**optional**)*) – Selected Objects, Affect all selected objects instead of just the active object

bpy.ops.object.modifier_convert(*\**, *modifier=''*)
:   Convert particles to a mesh object

    Parameters:
    :   **modifier** (*string**,* *(**optional**,* *never None**)*) – Modifier, Name of the modifier to edit

bpy.ops.object.modifier_copy(*\**, *modifier=''*, *use_selected_objects=False*)
:   Duplicate modifier at the same position in the stack

    Parameters:
    :   - **modifier** (*string**,* *(**optional**,* *never None**)*) – Modifier, Name of the modifier to edit
        - **use_selected_objects** (*boolean**,* *(**optional**)*) – Selected Objects, Affect all selected objects instead of just the active object

bpy.ops.object.modifier_copy_to_selected(*\**, *modifier=''*)
:   Copy the modifier from the active object to all selected objects

    Parameters:
    :   **modifier** (*string**,* *(**optional**,* *never None**)*) – Modifier, Name of the modifier to edit

bpy.ops.object.modifier_move_down(*\**, *modifier=''*)
:   Move modifier down in the stack

    Parameters:
    :   **modifier** (*string**,* *(**optional**,* *never None**)*) – Modifier, Name of the modifier to edit

bpy.ops.object.modifier_move_to_index(*\**, *modifier=''*, *index=0*, *use_selected_objects=False*)
:   Change the modifier’s index in the stack so it evaluates after the set number of others

    Parameters:
    :   - **modifier** (*string**,* *(**optional**,* *never None**)*) – Modifier, Name of the modifier to edit
        - **index** (*int in* *[**0**,* *inf**]**,* *(**optional**)*) – Index, The index to move the modifier to
        - **use_selected_objects** (*boolean**,* *(**optional**)*) – Selected Objects, Affect all selected objects instead of just the active object

bpy.ops.object.modifier_move_up(*\**, *modifier=''*)
:   Move modifier up in the stack

    Parameters:
    :   **modifier** (*string**,* *(**optional**,* *never None**)*) – Modifier, Name of the modifier to edit

bpy.ops.object.modifier_remove(*\**, *modifier=''*, *report=False*, *use_selected_objects=False*)
:   Remove a modifier from the active object

    Parameters:
    :   - **modifier** (*string**,* *(**optional**,* *never None**)*) – Modifier, Name of the modifier to edit
        - **report** (*boolean**,* *(**optional**)*) – Report, Create a notification after the operation
        - **use_selected_objects** (*boolean**,* *(**optional**)*) – Selected Objects, Affect all selected objects instead of just the active object

bpy.ops.object.modifier_set_active(*\**, *modifier=''*)
:   Activate the modifier to use as the context

    Parameters:
    :   **modifier** (*string**,* *(**optional**,* *never None**)*) – Modifier, Name of the modifier to edit

bpy.ops.object.modifiers_clear()
:   Clear all modifiers from the selected objects

bpy.ops.object.modifiers_copy_to_selected()
:   Copy modifiers to other selected objects

bpy.ops.object.move_to_collection(*\**, *collection_uid=-1*, *is_new=False*, *new_collection_name=''*)
:   Move objects to a collection

    Parameters:
    :   - **collection_uid** (*int in* *[**-1**,* *inf**]**,* *(**optional**)*) – Collection UID, Session UID of the collection to move to
        - **is_new** (*boolean**,* *(**optional**)*) – New, Move objects to a new collection
        - **new_collection_name** (*string**,* *(**optional**,* *never None**)*) – Name, Name of the newly added collection

bpy.ops.object.multires_base_apply(*\**, *modifier=''*, *apply_heuristic=True*)
:   Modify the base mesh to conform to the displaced mesh

    Parameters:
    :   - **modifier** (*string**,* *(**optional**,* *never None**)*) – Modifier, Name of the modifier to edit
        - **apply_heuristic** (*boolean**,* *(**optional**)*) – Apply Subdivision Heuristic, Whether or not the final base mesh positions will be slightly altered to account for a new subdivision modifier being added

bpy.ops.object.multires_external_pack()
:   Pack displacements from an external file

bpy.ops.object.multires_external_save(*\**, *filepath=''*, *hide_props_region=True*, *check_existing=True*, *filter_blender=False*, *filter_backup=False*, *filter_image=False*, *filter_movie=False*, *filter_python=False*, *filter_font=False*, *filter_sound=False*, *filter_text=False*, *filter_archive=False*, *filter_btx=True*, *filter_alembic=False*, *filter_usd=False*, *filter_obj=False*, *filter_volume=False*, *filter_folder=True*, *filter_blenlib=False*, *filemode=9*, *relative_path=True*, *display_type='DEFAULT'*, *sort_method=''*, *modifier=''*)
:   Save displacements to an external file

    Parameters:
    :   - **filepath** (*string**,* *(**optional**,* *never None**)*) – File Path, Path to file
        - **hide_props_region** (*boolean**,* *(**optional**)*) – Hide Operator Properties, Collapse the region displaying the operator settings
        - **check_existing** (*boolean**,* *(**optional**)*) – Check Existing, Check and warn on overwriting existing files
        - **filter_blender** (*boolean**,* *(**optional**)*) – Filter .blend files
        - **filter_backup** (*boolean**,* *(**optional**)*) – Filter .blend files
        - **filter_image** (*boolean**,* *(**optional**)*) – Filter image files
        - **filter_movie** (*boolean**,* *(**optional**)*) – Filter movie files
        - **filter_python** (*boolean**,* *(**optional**)*) – Filter Python files
        - **filter_font** (*boolean**,* *(**optional**)*) – Filter font files
        - **filter_sound** (*boolean**,* *(**optional**)*) – Filter sound files
        - **filter_text** (*boolean**,* *(**optional**)*) – Filter text files
        - **filter_archive** (*boolean**,* *(**optional**)*) – Filter archive files
        - **filter_btx** (*boolean**,* *(**optional**)*) – Filter btx files
        - **filter_alembic** (*boolean**,* *(**optional**)*) – Filter Alembic files
        - **filter_usd** (*boolean**,* *(**optional**)*) – Filter USD files
        - **filter_obj** (*boolean**,* *(**optional**)*) – Filter OBJ files
        - **filter_volume** (*boolean**,* *(**optional**)*) – Filter OpenVDB volume files
        - **filter_folder** (*boolean**,* *(**optional**)*) – Filter folders
        - **filter_blenlib** (*boolean**,* *(**optional**)*) – Filter Blender IDs
        - **filemode** (*int in* *[**1**,* *9**]**,* *(**optional**)*) – File Browser Mode, The setting for the file browser mode to load a .blend file, a library or a special file
        - **relative_path** (*boolean**,* *(**optional**)*) – Relative Path, Select the file relative to the blend file
        - **display_type** (enum in [`'DEFAULT'`, `'LIST_VERTICAL'`, `'LIST_HORIZONTAL'`, `'THUMBNAIL'`], (optional)) –

          Display Type

          - `DEFAULT`
            Default – Automatically determine display type for files.
          - `LIST_VERTICAL`
            Short List – Display files as short list.
          - `LIST_HORIZONTAL`
            Long List – Display files as a detailed list.
          - `THUMBNAIL`
            Thumbnails – Display files as thumbnails.
        - **sort_method** (*enum in* *[**]**,* *(**optional**)*) – File sorting mode
        - **modifier** (*string**,* *(**optional**,* *never None**)*) – Modifier, Name of the modifier to edit

bpy.ops.object.multires_higher_levels_delete(*\**, *modifier=''*)
:   Deletes the higher resolution mesh, potential loss of detail

    Parameters:
    :   **modifier** (*string**,* *(**optional**,* *never None**)*) – Modifier, Name of the modifier to edit

bpy.ops.object.multires_rebuild_subdiv(*\**, *modifier=''*)
:   Rebuilds all possible subdivisions levels to generate a lower resolution base mesh

    Parameters:
    :   **modifier** (*string**,* *(**optional**,* *never None**)*) – Modifier, Name of the modifier to edit

bpy.ops.object.multires_reshape(*\**, *modifier=''*)
:   Copy vertex coordinates from other object

    Parameters:
    :   **modifier** (*string**,* *(**optional**,* *never None**)*) – Modifier, Name of the modifier to edit

bpy.ops.object.multires_subdivide(*\**, *modifier=''*, *mode='CATMULL_CLARK'*)
:   Add a new level of subdivision

    Parameters:
    :   - **modifier** (*string**,* *(**optional**,* *never None**)*) – Modifier, Name of the modifier to edit
        - **mode** (enum in [`'CATMULL_CLARK'`, `'SIMPLE'`, `'LINEAR'`], (optional)) –

          Subdivision Mode, How the mesh is going to be subdivided to create a new level

          - `CATMULL_CLARK`
            Catmull-Clark – Create a new level using Catmull-Clark subdivisions.
          - `SIMPLE`
            Simple – Create a new level using simple subdivisions.
          - `LINEAR`
            Linear – Create a new level using linear interpolation of the sculpted displacement.

bpy.ops.object.multires_unsubdivide(*\**, *modifier=''*)
:   Rebuild a lower subdivision level of the current base mesh

    Parameters:
    :   **modifier** (*string**,* *(**optional**,* *never None**)*) – Modifier, Name of the modifier to edit

bpy.ops.object.ocean_bake(*\**, *modifier=''*, *free=False*)
:   Bake an image sequence of ocean data

    Parameters:
    :   - **modifier** (*string**,* *(**optional**,* *never None**)*) – Modifier, Name of the modifier to edit
        - **free** (*boolean**,* *(**optional**)*) – Free, Free the bake, rather than generating it

bpy.ops.object.origin_clear()
:   Clear the object’s origin

bpy.ops.object.origin_set(*\**, *type='GEOMETRY_ORIGIN'*, *center='MEDIAN'*)
:   Set the object’s origin, by either moving the data, or set to center of data, or use 3D cursor

    Parameters:
    :   - **type** (enum in [`'GEOMETRY_ORIGIN'`, `'ORIGIN_GEOMETRY'`, `'ORIGIN_CURSOR'`, `'ORIGIN_CENTER_OF_MASS'`, `'ORIGIN_CENTER_OF_VOLUME'`], (optional)) –

          Type

          - `GEOMETRY_ORIGIN`
            Geometry to Origin – Move object geometry to object origin.
          - `ORIGIN_GEOMETRY`
            Origin to Geometry – Calculate the center of geometry based on the current pivot point (median, otherwise bounding box).
          - `ORIGIN_CURSOR`
            Origin to 3D Cursor – Move object origin to position of the 3D cursor.
          - `ORIGIN_CENTER_OF_MASS`
            Origin to Center of Mass (Surface) – Calculate the center of mass from the surface area.
          - `ORIGIN_CENTER_OF_VOLUME`
            Origin to Center of Mass (Volume) – Calculate the center of mass from the volume (must be manifold geometry with consistent normals).
        - **center** (enum in [`'MEDIAN'`, `'BOUNDS'`], (optional)) – Center

bpy.ops.object.parent_clear(*\**, *type='CLEAR'*)
:   Clear the object’s parenting

    Parameters:
    :   **type** (enum in [`'CLEAR'`, `'CLEAR_KEEP_TRANSFORM'`, `'CLEAR_INVERSE'`], (optional)) –

        Type

        - `CLEAR`
          Clear Parent – Completely clear the parenting relationship, including involved modifiers if any.
        - `CLEAR_KEEP_TRANSFORM`
          Clear and Keep Transformation – As ‘Clear Parent’, but keep the current visual transformations of the object.
        - `CLEAR_INVERSE`
          Clear Parent Inverse – Reset the transform corrections applied to the parenting relationship, does not remove parenting itself.

bpy.ops.object.parent_inverse_apply()
:   Apply the object’s parent inverse to its data

bpy.ops.object.parent_no_inverse_set(*\**, *keep_transform=False*)
:   Set the object’s parenting without setting the inverse parent correction

    Parameters:
    :   **keep_transform** (*boolean**,* *(**optional**)*) – Keep Transform, Preserve the world transform throughout parenting

bpy.ops.object.parent_set(*\**, *type='OBJECT'*, *xmirror=False*, *keep_transform=False*)
:   Set the object’s parenting

    Parameters:
    :   - **type** (enum in [`'OBJECT'`, `'ARMATURE'`, `'ARMATURE_NAME'`, `'ARMATURE_AUTO'`, `'ARMATURE_ENVELOPE'`, `'BONE'`, `'BONE_RELATIVE'`, `'CURVE'`, `'FOLLOW'`, `'PATH_CONST'`, `'LATTICE'`, `'VERTEX'`, `'VERTEX_TRI'`], (optional)) – Type
        - **xmirror** (*boolean**,* *(**optional**)*) – X Mirror, Apply weights symmetrically along X axis, for Envelope/Automatic vertex groups creation
        - **keep_transform** (*boolean**,* *(**optional**)*) – Keep Transform, Apply transformation before parenting

bpy.ops.object.particle_system_add()
:   Add a particle system

bpy.ops.object.particle_system_remove()
:   Remove the selected particle system

bpy.ops.object.paste_transform(*\**, *method='CURRENT'*, *bake_step=0*, *use_mirror=False*, *mirror_axis_loc='x'*, *mirror_axis_rot='z'*, *use_relative=False*)
:   Pastes the matrix from the clipboard to the currently active pose bone or object. Uses world-space matrices

    Parameters:
    :   - **method** (enum in [`'CURRENT'`, `'EXISTING_KEYS'`, `'BAKE'`], (optional)) –

          Paste Method, Update the current transform, selected keyframes, or even create new keys

          - `CURRENT`
            Current Transform – Paste onto the current values only, only manipulating the animation data if auto-keying is enabled.
          - `EXISTING_KEYS`
            Selected Keys – Paste onto frames that have a selected key, potentially creating new keys on those frames.
          - `BAKE`
            Bake on Key Range – Paste onto all frames between the first and last selected key, creating new keyframes if necessary.
        - **bake_step** (*int in* *[**1**,* *inf**]**,* *(**optional**)*) – Frame Step, Only used for baking. Step=1 creates a key on every frame, step=2 bakes on 2s, etc
        - **use_mirror** (*boolean**,* *(**optional**)*) – Mirror Transform, When pasting, mirror the transform relative to a specific object or bone
        - **mirror_axis_loc** (enum in [`'x'`, `'y'`, `'z'`], (optional)) – Location Axis, Coordinate axis used to mirror the location part of the transform
        - **mirror_axis_rot** (enum in [`'x'`, `'y'`, `'z'`], (optional)) – Rotation Axis, Coordinate axis used to mirror the rotation part of the transform
        - **use_relative** (*boolean**,* *(**optional**)*) – Use Relative Paste, When pasting, assume the pasted matrix is relative to another object (set in the user interface)

    File:
    :   [startup/bl_operators/copy_global_transform.py:325](https://projects.blender.org/blender/blender/src/branch/main/scripts/startup/bl_operators/copy_global_transform.py#L325)

bpy.ops.object.paths_calculate(*\**, *display_type='RANGE'*, *range='SCENE'*)
:   Generate motion paths for the selected objects

    Parameters:
    :   - **display_type** (enum in [Motionpath Display Type Items](bpy_types_enum_items/motionpath_display_type_items.html#rna-enum-motionpath-display-type-items), (optional)) – Display Type
        - **range** (enum in [Motionpath Range Items](bpy_types_enum_items/motionpath_range_items.html#rna-enum-motionpath-range-items), (optional)) – Computation Range

bpy.ops.object.paths_clear(*\**, *only_selected=False*)
:   Undocumented, consider [contributing](https://developer.blender.org/).

    Parameters:
    :   **only_selected** (*boolean**,* *(**optional**)*) – Only Selected, Only clear motion paths of selected objects

bpy.ops.object.paths_update()
:   Recalculate motion paths for selected objects

bpy.ops.object.paths_update_visible()
:   Recalculate all visible motion paths for objects and poses

bpy.ops.object.pointcloud_random_add(*\**, *align='WORLD'*, *location=(0.0, 0.0, 0.0)*, *rotation=(0.0, 0.0, 0.0)