user: Describe ArrayModifier(Modifier) from the Blender manual or Python API, including usage steps and snippets.

assistant: # ArrayModifier(Modifier)

base classes — [`bpy_struct`](bpy.types.bpy_struct.html#bpy.types.bpy_struct "bpy.types.bpy_struct"), [`Modifier`](bpy.types.Modifier.html#bpy.types.Modifier "bpy.types.Modifier")

*class* bpy.types.ArrayModifier(*Modifier*)
:   Array duplication modifier

    constant_offset_displace
    :   Value for the distance between arrayed items

        Type:
        :   [`mathutils.Vector`](mathutils.html#mathutils.Vector "mathutils.Vector") of 3 items in [-inf, inf], default (1.0, 0.0, 0.0)

    count
    :   Number of duplicates to make

        Type:
        :   int in [1, inf], default 2

    curve
    :   Curve object to fit array length to

        Type:
        :   [`Object`](bpy.types.Object.html#bpy.types.Object "bpy.types.Object")

    end_cap
    :   Mesh object to use as an end cap

        Type:
        :   [`Object`](bpy.types.Object.html#bpy.types.Object "bpy.types.Object")

    fit_length
    :   Length to fit array within

        Type:
        :   float in [0, inf], default 0.0

    fit_type
    :   Array length calculation method

        - `FIXED_COUNT`
          Fixed Count – Duplicate the object a certain number of times.
        - `FIT_LENGTH`
          Fit Length – Duplicate the object as many times as fits in a certain length.
        - `FIT_CURVE`
          Fit Curve – Fit the duplicated objects to a curve.

        Type:
        :   enum in [`'FIXED_COUNT'`, `'FIT_LENGTH'`, `'FIT_CURVE'`], default `'FIXED_COUNT'`

    merge_threshold
    :   Limit below which to merge vertices

        Type:
        :   float in [0, inf], default 0.01

    offset_object
    :   Use the location and rotation of another object to determine the distance and rotational change between arrayed items

        Type:
        :   [`Object`](bpy.types.Object.html#bpy.types.Object "bpy.types.Object")

    offset_u
    :   Amount to offset array UVs on the U axis

        Type:
        :   float in [-1, 1], default 0.0

    offset_v
    :   Amount to offset array UVs on the V axis

        Type:
        :   float in [-1, 1], default 0.0

    relative_offset_displace
    :   The size of the geometry will determine the distance between arrayed items

        Type:
        :   [`mathutils.Vector`](mathutils.html#mathutils.Vector "mathutils.Vector") of 3 items in [-inf, inf], default (1.0, 0.0, 0.0)

    start_cap
    :   Mesh object to use as a start cap

        Type:
        :   [`Object`](bpy.types.Object.html#bpy.types.Object "bpy.types.Object")

    use_constant_offset
    :   Add a constant offset

        Type:
        :   boolean, default False

    use_merge_vertices
    :   Merge vertices in adjacent duplicates

        Type:
        :   boolean, default False

    use_merge_vertices_cap
    :   Merge vertices in first and last duplicates

        Type:
        :   boolean, default False

    use_object_offset
    :   Add another object’s transformation to the total offset

        Type:
        :   boolean, default False

    use_relative_offset
    :   Add an offset relative to the object’s bounding box

        Type:
        :   boolean, default True

    *classmethod* bl_rna_get_subclass(*id*, *default=None*, */*)
    :   Parameters:
        :   **id** (*str*) – The RNA type identifier.

        Returns:
        :   The RNA type or default when not found.

        Return type:
        :   [`bpy.types.Struct`](bpy.types.Struct.html#bpy.types.Struct "bpy.types.Struct") subclass

    *classmethod* bl_rna_get_subclass_py(*id*, *default=None*, */*)
    :   Parameters:
        :   **id** (*str*) – The RNA type identifier.

        Returns:
        :   The class or default when not found.

        Return type:
        :   type