user: Show practical ways to work with ShrinkwrapModifier(Modifier) in a Blender add-on or script – include code.

assistant: # ShrinkwrapModifier(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.ShrinkwrapModifier(*Modifier*)
:   Shrink wrapping modifier to shrink wrap and object to a target

    auxiliary_target
    :   Additional mesh target to shrink to

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

    cull_face
    :   Stop vertices from projecting to a face on the target when facing towards/away

        Type:
        :   enum in [Shrinkwrap Face Cull Items](bpy_types_enum_items/shrinkwrap_face_cull_items.html#rna-enum-shrinkwrap-face-cull-items), default `'OFF'`

    invert_vertex_group
    :   Invert vertex group influence

        Type:
        :   boolean, default False

    offset
    :   Distance to keep from the target

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

    project_limit
    :   Limit the distance used for projection (zero disables)

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

    subsurf_levels
    :   Number of subdivisions that must be performed before extracting vertices’ positions and normals

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

    target
    :   Mesh target to shrink to

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

    use_invert_cull
    :   When projecting in the negative direction invert the face cull mode

        Type:
        :   boolean, default False

    use_negative_direction
    :   Allow vertices to move in the negative direction of axis

        Type:
        :   boolean, default False

    use_positive_direction
    :   Allow vertices to move in the positive direction of axis

        Type:
        :   boolean, default True

    use_project_x
    :   Type:
        :   boolean, default False

    use_project_y
    :   Type:
        :   boolean, default False

    use_project_z
    :   Type:
        :   boolean, default False

    vertex_group
    :   Vertex group name

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

    wrap_method
    :   Type:
        :   enum in [Shrinkwrap Type Items](bpy_types_enum_items/shrinkwrap_type_items.html#rna-enum-shrinkwrap-type-items), default `'NEAREST_SURFACEPOINT'`

    wrap_mode
    :   Select how vertices are constrained to the target surface

        Type:
        :   enum in [Modifier Shrinkwrap Mode Items](bpy_types_enum_items/modifier_shrinkwrap_mode_items.html#rna-enum-modifier-shrinkwrap-mode-items), default `'ON_SURFACE'`

    *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