user: Explain GreasePencilArrayModifier(Modifier) in complete detail according to the official Blender documentation.

assistant: # GreasePencilArrayModifier(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.GreasePencilArrayModifier(*Modifier*)
:   Create grid of duplicate instances

    constant_offset
    :   Value for the distance between items

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

    count
    :   Number of items

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

    invert_layer_filter
    :   Invert layer filter

        Type:
        :   boolean, default False

    invert_layer_pass_filter
    :   Invert layer pass filter

        Type:
        :   boolean, default False

    invert_material_filter
    :   Invert material filter

        Type:
        :   boolean, default False

    invert_material_pass_filter
    :   Invert material pass filter

        Type:
        :   boolean, default False

    layer_pass_filter
    :   Layer pass filter

        Type:
        :   int in [0, 100], default 0

    material_filter
    :   Material used for filtering

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

    material_pass_filter
    :   Material pass

        Type:
        :   int in [0, 100], default 0

    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")

    open_constant_offset_panel
    :   Type:
        :   boolean, default False

    open_influence_panel
    :   Type:
        :   boolean, default False

    open_object_offset_panel
    :   Type:
        :   boolean, default False

    open_randomize_panel
    :   Type:
        :   boolean, default False

    open_relative_offset_panel
    :   Type:
        :   boolean, default False

    random_offset
    :   Value for changes in location

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

    random_rotation
    :   Value for changes in rotation

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

    random_scale
    :   Value for changes in scale

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

    relative_offset
    :   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)

    replace_material
    :   Index of the material used for generated strokes (0 keep original material)

        Type:
        :   int in [0, 32767], default 0

    seed
    :   Random seed

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

    tree_node_filter
    :   Layer name

        Type:
        :   string, default “”, (never None)

    use_constant_offset
    :   Enable offset

        Type:
        :   boolean, default False

    use_layer_group_filter
    :   Filter by layer group name

        Type:
        :   boolean, default False

    use_layer_pass_filter
    :   Use layer pass filter

        Type:
        :   boolean, default False

    use_material_pass_filter
    :   Use material pass filter

        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

    use_uniform_random_scale
    :   Use the same random seed for each scale axis for a uniform scale

        Type:
        :   boolean, default False

    *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