user: Give a detailed overview of Object Operators: syntax, arguments, return values, common patterns.

assistant: # Object Operators

bpy.ops.object.add(*\**, *radius=1.0*, *type='EMPTY'*, *enter_editmode=False*, *align='WORLD'*, *location=(0.0, 0.0, 0.0)*, *rotation=(0.0, 0.0, 0.0)*, *scale=(0.0, 0.0, 0.0)*)
:   Add an object to the scene

    Parameters:
    :   - **radius** (*float in* *[**0**,* *inf**]**,* *(**optional**)*) – Radius
        - **type** (enum in [Object Type Items](bpy_types_enum_items/object_type_items.html#rna-enum-object-type-items), (optional)) – Type
        - **enter_editmode** (*boolean**,* *(**optional**)*) – Enter Edit Mode, Enter edit mode when adding this object
        - **align** (enum in [`'WORLD'`, `'VIEW'`, `'CURSOR'`], (optional)) –

          Align, The alignment of the new object

          - `WORLD`
            World – Align the new object to the world.
          - `VIEW`
            View – Align the new object to the view.
          - `CURSOR`
            3D Cursor – Use the 3D cursor orientation for the new object.
        - **location** ([`mathutils.Vector`](mathutils.html#mathutils.Vector "mathutils.Vector") of 3 items in [-inf, inf], (optional)) – Location, Location for the newly added object
        - **rotation** ([`mathutils.Euler`](mathutils.html#mathutils.Euler "mathutils.Euler") rotation of 3 items in [-inf, inf], (optional)) – Rotation, Rotation for the newly added object
        - **scale** ([`mathutils.Vector`](mathutils.html#mathutils.Vector "mathutils.Vector") of 3 items in [-inf, inf], (optional)) – Scale, Scale for the newly added object

bpy.ops.object.add_modifier_menu()
:   Undocumented, consider [contributing](https://developer.blender.org/).

    File:
    :   [startup/bl_ui/properties_data_modifier.py:303](https://projects.blender.org/blender/blender/src/branch/main/scripts/startup/bl_ui/properties_data_modifier.py#L303)

bpy.ops.object.add_named(*\**, *linked=False*, *name=''*, *session_uid=0*, *matrix=((0.0, 0.0, 0.0, 0.0), (0.0, 0.0, 0.0, 0.0), (0.0, 0.0, 0.0, 0.0), (0.0, 0.0, 0.0, 0.0))*, *drop_x=0*, *drop_y=0*)
:   Add named object

    Parameters:
    :   - **linked** (*boolean**,* *(**optional**)*) – Linked, Duplicate object but not object data, linking to the original data
        - **name** (*string**,* *(**optional**,* *never None**)*) – Name, Name of the data-block to use by the operator
        - **session_uid** (*int in* *[**-inf**,* *inf**]**,* *(**optional**)*) – Session UID, Session UID of the data-block to use by the operator
        - **matrix** ([`mathutils.Matrix`](mathutils.html#mathutils.Matrix "mathutils.Matrix") of 4 \* 4 items in [-inf, inf], (optional)) – Matrix
        - **drop_x** (*int in* *[**-inf**,* *inf**]**,* *(**optional**)*) – Drop X, X-coordinate (screen space) to place the new object under
        - **drop_y** (*int in* *[**-inf**,* *inf**]**,* *(**optional**)*) – Drop Y, Y-coordinate (screen space) to place the new object under

bpy.ops.object.align(*\**, *bb_quality=True*, *align_mode='OPT_2'*, *relative_to='OPT_4'*, *align_axis={}*)
:   Align objects

    Parameters:
    :   - **bb_quality** (*boolean**,* *(**optional**)*) – High Quality, Enables high quality but slow calculation of the bounding box for perfect results on complex shape meshes with rotation/scale
        - **align_mode** (enum in [`'OPT_1'`, `'OPT_2'`, `'OPT_3'`], (optional)) – Align Mode, Side of object to use for alignment
        - **relative_to** (enum in [`'OPT_1'`, `'OPT_2'`, `'OPT_3'`, `'OPT_4'`], (optional)) –

          Relative To, Reference location to align to

          - `OPT_1`
            Scene Origin – Use the scene origin as the position for the selected objects to align to.
          - `OPT_2`
            3D Cursor – Use the 3D cursor as the position for the selected objects to align to.
          - `OPT_3`
            Selection – Use the selected objects as the position for the selected objects to align to.
          - `OPT_4`
            Active – Use the active object as the position for the selected objects to align to.
        - **align_axis** (enum set in {`'X'`, `'Y'`, `'Z'`}, (optional)) – Align, Align to axis

    File:
    :   [startup/bl_operators/object_align.py:386](https://projects.blender.org/blender/blender/src/branch/main/scripts/startup/bl_operators/object_align.py#L386)

bpy.ops.object.anim_transforms_to_deltas()
:   Convert object animation for normal transforms to delta transforms

    File:
    :   [startup/bl_operators/object.py:822](https://projects.blender.org/blender/blender/src/branch/main/scripts/startup/bl_operators/object.py#L822)

bpy.ops.object.armature_add(*\**, *radius=1.0*, *enter_editmode=False*, *align='WORLD'*, *location=(0.0, 0.0, 0.0)*, *rotation=(0.0, 0.0, 0.0)*, *scale=(0.0, 0.0, 0.0)*)
:   Add an armature object to the scene

    Parameters:
    :   - **radius** (*float in* *[**0**,* *inf**]**,* *(**optional**)*) – Radius
        - **enter_editmode** (*boolean**,* *(**optional**)*) – Enter Edit Mode, Enter edit mode when adding this object
        - **align** (enum in [`'WORLD'`, `'VIEW'`, `'CURSOR'`], (optional)) –

          Align, The alignment of the new object

          - `WORLD`
            World – Align the new object to the world.
          - `VIEW`
            View – Align the new object to the view.
          - `CURSOR`
            3D Cursor – Use the 3D cursor orientation for the new object.
        - **location** ([`mathutils.Vector`](mathutils.html#mathutils.Vector "mathutils.Vector") of 3 items in [-inf, inf], (optional)) – Location, Location for the newly added object
        - **rotation** ([`mathutils.Euler`](mathutils.html#mathutils.Euler "mathutils.Euler") rotation of 3 items in [-inf, inf], (optional)) – Rotation, Rotation for the newly added object
        - **scale** ([`mathutils.Vector`](mathutils.html#mathutils.Vector "mathutils.Vector") of 3 items in [-inf, inf], (optional)) – Scale, Scale for the newly added object

bpy.ops.object.assign_property_defaults(*\**, *process_data=True*, *process_bones=True*)
:   Assign the current values of custom properties as their defaults, for use as part of the rest pose state in NLA track mixing

    Parameters:
    :   - **process_data** (*boolean**,* *(**optional**)*) – Process data properties
        - **process_bones** (*boolean**,* *(**optional**)*) – Process bone properties

    File:
    :   [startup/bl_operators/object.py:979](https://projects.blender.org/blender/blender/src/branch/main/scripts/startup/bl_operators/object.py#L979)

bpy.ops.object.bake(*\**, *type='COMBINED'*, *pass_filter={}*, *filepath=''*, *width=512*, *height=512*, *margin=16*, *margin_type='EXTEND'*, *use_selected_to_active=False*, *max_ray_distance=0.0*, *cage_extrusion=0.0*, *cage_object=''*, *normal_space='TANGENT'*, *normal_r='POS_X'*, *normal_g='POS_Y'*, *normal_b='POS_Z'*, *target='IMAGE_TEXTURES'*, *save_mode='INTERNAL'*, *use_clear=False*, *use_cage=False*, *use_split_materials=False*, *use_automatic_name=False*, *uv_layer=''*)
:   Bake image textures of selected objects

    Parameters:
    :   - **type** (enum in [Bake Pass Type Items](bpy_types_enum_items/bake_pass_type_items.html#rna-enum-bake-pass-type-items), (optional)) – Type, Type of pass to bake, some of them may not be supported by the current render engine
        - **pass_filter** (enum set in [Bake Pass Filter Type Items](bpy_types_enum_items/bake_pass_filter_type_items.html#rna-enum-bake-pass-filter-type-items), (optional)) – Pass Filter, Filter to combined, diffuse, glossy, transmission and subsurface passes
        - **filepath** (*string**,* *(**optional**,* *never None**)*) – File Path, Image filepath to use when saving externally
        - **width** (*int in* *[**1**,* *inf**]**,* *(**optional**)*) – Width, Horizontal dimension of the baking map (external only)
        - **height** (*int in* *[**1**,* *inf**]**,* *(**optional**)*) – Height, Vertical dimension of the baking map (external only)
        - **margin** (*int in* *[**0**,* *inf**]**,* *(**optional**)*) – Margin, Extends the baked result as a post process filter
        - **margin_type** (enum in [Bake Margin Type Items](bpy_types_enum_items/bake_margin_type_items.html#rna-enum-bake-margin-type-items), (optional)) – Margin Type, Which algorithm to use to generate the margin
        - **use_selected_to_active** (*boolean**,* *(**optional**)*) – Selected to Active, Bake shading on the surface of selected objects to the active object
        - **max_ray_distance** (*float in* *[**0**,* *inf**]**,* *(**optional**)*) – Max Ray Distance, The maximum ray distance for matching points between the active and selected objects. If zero, there is no limit
        - **cage_extrusion** (*float in* *[**0**,* *inf**]**,* *(**optional**)*) – Cage Extrusion, Inflate the active object by the specified distance for baking. This helps matching to points nearer to the outside of the selected object meshes
        - **cage_object** (*string**,* *(**optional**,* *never None**)*) – Cage Object, Object to use as cage, instead of calculating the cage from the active object with cage extrusion
        - **normal_space** (enum in [Normal Space Items](bpy_types_enum_items/normal_space_items.html#rna-enum-normal-space-items), (optional)) – Normal Space, Choose normal space for baking
        - **normal_r** (enum in [Normal Swizzle Items](bpy_types_enum_items/normal_swizzle_items.html#rna-enum-normal-swizzle-items), (optional)) – R, Axis to bake in red channel
        - **normal_g** (enum in [Normal Swizzle Items](bpy_types_enum_items/normal_swizzle_items.html#rna-enum-normal-swizzle-items), (optional)) – G, Axis to bake in green channel
        - **normal_b** (enum in [Normal Swizzle Items](bpy_types_enum_items/normal_swizzle_items.html#rna-enum-normal-swizzle-items), (optional)) – B, Axis to bake in blue channel
        - **target** (enum in [Bake Target Items](bpy_types_enum_items/bake_target_items.html#rna-enum-bake-target-items), (optional)) – Target, Where to output the baked map
        - **save_mode** (enum in [Bake Save Mode Items](bpy_types_enum_items/bake_save_mode_items.html#rna-enum-bake-save-mode-items), (optional)) – Save Mode, Where to save baked image textures
        - **use_clear** (*boolean**,* *(**optional**)*) – Clear, Clear images before baking (only for internal saving)
        - **use_cage** (*boolean**,* *(**optional**)*) – Cage, Cast rays to active object from a cage
        - **use_split_materials** (*boolean**,* *(**optional**)*) – Split Materials, Split baked maps per material, using material name in output file (external only)
        - **use_automatic_name** (*boolean**,* *(**optional**)*) – Automatic Name, Automatically name the output file with the pass type
        - **uv_layer** (*string**,* *(**optional**,* *never None**)*) – UV Layer, UV layer to override active

bpy.ops.object.bake_image()
:   Bake image textures of selected objects

bpy.ops.object.camera_add(*\**, *enter_editmode=False*, *align='WORLD'*, *location=(0.0, 0.0, 0.0)*, *rotation=(0.0, 0.0, 0.0)*, *scale=(0.0, 0.0, 0.0)*)
:   Add a camera object to the scene

    Parameters:
    :   - **enter_editmode** (*boolean**,* *(**optional**)*) – Enter Edit Mode, Enter edit mode when adding this object
        - **align** (enum in [`'WORLD'`, `'VIEW'`, `'CURSOR'`], (optional)) –

          Align, The alignment of the new object

          - `WORLD`
            World – Align the new object to the world.
          - `VIEW`
            View – Align the new object to the view.
          - `CURSOR`
            3D Cursor – Use the 3D cursor orientation for the new object.
        - **location** ([`mathutils.Vector`](mathutils.html#mathutils.Vector "mathutils.Vector") of 3 items in [-inf, inf], (optional)) – Location, Location for the newly added object
        - **rotation** ([`mathutils.Euler`](mathutils.html#mathutils.Euler "mathutils.Euler") rotation of 3 items in [-inf, inf], (optional)) – Rotation, Rotation for the newly added object
        - **scale** ([`mathutils.Vector`](mathutils.html#mathutils.Vector "mathutils.Vector") of 3 items in [-inf, inf], (optional)) – Scale, Scale for the newly added object

bpy.ops.object.camera_custom_update()
:   Update custom camera with new parameters from the shader

bpy.ops.object.clear_override_library()
:   Delete the selected local overrides and relink their usages to the linked data-blocks if possible, else reset them and mark them as non editable

bpy.ops.object.collection_add()
:   Add an object to a new collection

bpy.ops.object.collection_external_asset_drop(*\**, *session_uid=0*, *align='WORLD'*, *location=(0.0, 0.0, 0.0)*, *rotation=(0.0, 0.0, 0.0)*, *scale=(0.0, 0.0, 0.0)*, *use_instance=True*, *drop_x=0*, *drop_y=0*, *collection=''*)
:   Add the dragged collection to the scene

    Parameters:
    :   - **session_uid** (*int in* *[**-inf**,* *inf**]**,* *(**optional**)*) – Session UID, Session UID of the data-block to use by the operator
        - **align** (enum in [`'WORLD'`, `'VIEW'`, `'CURSOR'`], (optional)) –

          Align, The alignment of the new object

          - `WORLD`
            World – Align the new object to the world.
          - `VIEW`
            View – Align the new object to the view.
          - `CURSOR`
            3D Cursor – Use the 3D cursor orientation for the new object.
        - **location** ([`mathutils.Vector`](mathutils.html#mathutils.Vector "mathutils.Vector") of 3 items in [-inf, inf], (optional)) – Location, Location for the newly added object
        - **rotation** ([`mathutils.Euler`](mathutils.html#mathutils.Euler "mathutils.Euler") rotation of 3 items in [-inf, inf], (optional)) – Rotation, Rotation for the newly added object
        - **scale** ([`mathutils.Vector`](mathutils.html#mathutils.Vector "mathutils.Vector") of 3 items in [-inf, inf], (optional)) – Scale, Scale for the newly added object
        - **use_instance** (*boolean**,* *(**optional**)*) – Instance, Add the dropped collection as collection instance
        - **drop_x** (*int in* *[**-inf**,* *inf**]**,* *(**optional**)*) – Drop X, X-coordinate (screen space) to place the new object under
        - **drop_y** (*int in* *[**-inf**,* *inf**]**,* *(**optional**)*) – Drop Y, Y-coordinate (screen space) to place the new object under
        - **collection** (*enum in* *[**]**,* *(**optional**)*) – Collection

bpy.ops.object.collection_instance_add(*\**, *name='Collection'*, *collection=''*, *align='WORLD'*, *location=(0.0, 0.0, 0.0)*, *rotation=(0.0, 0.0, 0.0)*, *scale=(0.0, 0.0, 0.0)*, *session_uid=0*, *drop_x=0*, *drop_y=0*)
:   Add a collection instance

    Parameters:
    :   - **name** (*string**,* *(**optional**,* *never None**)*) – Name, Collection name to add
        - **collection** (*enum in* *[**]**,* *(**optional**)*) – Collection
        - **align** (enum in [`'WORLD'`, `'VIEW'`, `'CURSOR'`], (optional)) –

          Align, The alignment of the new object

          - `WORLD`
            World – Align the new object to the world.
          - `VIEW`
            View – Align the new object to the view.
          - `CURSOR`
            3D Cursor – Use the 3D cursor orientation for the new object.
        - **location** ([`mathutils.Vector`](mathutils.html#mathutils.Vector "mathutils.Vector") of 3 items in [-inf, inf], (optional)) – Location, Location for the newly added object
        - **rotation** ([`mathutils.Euler`](mathutils.html#mathutils.Euler "mathutils.Euler") rotation of 3 items in [-inf, inf], (optional)) – Rotation, Rotation for the newly added object
        - **scale** ([`mathutils.Vector`](mathutils.html#mathutils.Vector "mathutils.Vector") of 3 items in [-inf, inf], (optional)) – Scale, Scale for the newly added object
        - **session_uid** (*int in* *[**-inf**,* *inf**]**,* *(**optional**)*) – Session UID, Session UID of the data-block to use by the operator
        - **drop_x** (*int in* *[**-inf**,* *inf**]**,* *(**optional**)*) – Drop X, X-coordinate (screen space) to place the new object under
        - **drop_y** (*int in* *[**-inf**,* *inf**]**,* *(**optional**)*) – Drop Y, Y-coordinate (screen space) to place the new object under

bpy.ops.object.collection_link(*\**, *collection=''*)
:   Add an object to an existing collection

    Parameters:
    :   **collection** (*enum in* *[**]**,* *(**optional**)*) – Collection

bpy.ops.object.collection_objects_select()
:   Select all objects in collection

bpy.ops.object.collection_remove()
:   Remove the active object from this collection

bpy.ops.object.collection_unlink()
:   Unlink the collection from all objects

bpy.ops.object.constraint_add(*\**, *type=''*)
:   Add a constraint to the active object

    Parameters:
    :   **type** (*enum in* *[**]**,* *(**optional**)*) – Type

bpy.ops.object.constraint_add_with_targets(*\**, *type=''*)
:   Add a constraint to the active object, with target (where applicable) set to the selected objects/bones

    Parameters:
    :   **type** (*enum in* *[**]**,* *(**optional**)*) – Type

bpy.ops.object.constraints_clear()
:   Clear all constraints from the selected objects

bpy.ops.object.constraints_copy()
:   Copy constraints to other selected objects

bpy.ops.object.convert(*\**, *target='MESH'*, *keep_original=False*, *merge_customdata=True*, *thickness=5*, *faces=True*, *offset=0.01*)
:   Convert selected objects to another type

    Parameters:
    :   - **target** (enum in [`'CURVE'`, `'MESH'`, `'POINTCLOUD'`, `'CURVES'`, `'GREASEPENCIL'`], (optional)) –

          Target, Type of object to convert to

          - `CURVE`
            Curve – Curve from Mesh or Text objects.
          - `MESH`
            Mesh – Mesh from Curve, Surface, Metaball, Text, or Point Cloud objects.
          - `POINTCLOUD`
            Point Cloud – Point Cloud from Mesh objects.
          - `CURVES`
            Curves – Curves from evaluated curve data.
          - `GREASEPENCIL`
            Grease Pencil – Grease Pencil from Curve or Mesh objects.
        - **keep_original** (*boolean**,* *(**optional**)*) – Keep Original, Keep original objec