user: Show practical ways to work with Sculpt Operators in a Blender add-on or script – include code.

assistant: **]**,* *(**optional**)*) – Mix Factor
        - **settings_source** (enum in [`'OPERATOR'`, `'BRUSH'`, `'SCENE'`], (optional)) –

          Settings, Use settings from here

          - `OPERATOR`
            Operator – Use settings from operator properties.
          - `BRUSH`
            Brush – Use settings from brush.
          - `SCENE`
            Scene – Use settings from scene.
        - **boundary_mode** (enum in [`'MESH'`, `'FACE_SETS'`], (optional)) –

          Mode, Boundary type to mask

          - `MESH`
            Mesh – Calculate the boundary mask based on disconnected mesh topology islands.
          - `FACE_SETS`
            Face Sets – Calculate the boundary mask between face sets.
        - **propagation_steps** (*int in* *[**1**,* *20**]**,* *(**optional**)*) – Propagation Steps

bpy.ops.sculpt.mask_from_cavity(*\**, *mix_mode='MIX'*, *mix_factor=1.0*, *settings_source='OPERATOR'*, *factor=0.5*, *blur_steps=2*, *use_curve=False*, *invert=False*)
:   Creates a mask based on the curvature of the surface

    Parameters:
    :   - **mix_mode** (enum in [`'MIX'`, `'MULTIPLY'`, `'DIVIDE'`, `'ADD'`, `'SUBTRACT'`], (optional)) – Mode, Mix mode
        - **mix_factor** (*float in* *[**0**,* *5**]**,* *(**optional**)*) – Mix Factor
        - **settings_source** (enum in [`'OPERATOR'`, `'BRUSH'`, `'SCENE'`], (optional)) –

          Settings, Use settings from here

          - `OPERATOR`
            Operator – Use settings from operator properties.
          - `BRUSH`
            Brush – Use settings from brush.
          - `SCENE`
            Scene – Use settings from scene.
        - **factor** (*float in* *[**0**,* *5**]**,* *(**optional**)*) – Factor, The contrast of the cavity mask
        - **blur_steps** (*int in* *[**0**,* *25**]**,* *(**optional**)*) – Blur, The number of times the cavity mask is blurred
        - **use_curve** (*boolean**,* *(**optional**)*) – Custom Curve
        - **invert** (*boolean**,* *(**optional**)*) – Cavity (Inverted)

bpy.ops.sculpt.mask_init(*\**, *mode='RANDOM_PER_VERTEX'*)
:   Creates a new mask for the entire mesh

    Parameters:
    :   **mode** (enum in [`'RANDOM_PER_VERTEX'`, `'RANDOM_PER_FACE_SET'`, `'RANDOM_PER_LOOSE_PART'`], (optional)) – Mode

bpy.ops.sculpt.mesh_filter(*\**, *start_mouse=(0, 0)*, *area_normal_radius=0.25*, *strength=1.0*, *iteration_count=1*, *event_history=None*, *type='INFLATE'*, *deform_axis={'X', 'Y', 'Z'}*, *orientation='LOCAL'*, *surface_smooth_shape_preservation=0.5*, *surface_smooth_current_vertex=0.5*, *sharpen_smooth_ratio=0.35*, *sharpen_intensify_detail_strength=0.0*, *sharpen_curvature_smooth_iterations=0*)
:   Applies a filter to modify the current mesh

    Parameters:
    :   - **start_mouse** (*int array* *of* *2 items in* *[**0**,* *16384**]**,* *(**optional**)*) – Starting Mouse
        - **area_normal_radius** (*float in* *[**0.001**,* *5**]**,* *(**optional**)*) – Normal Radius, Radius used for calculating area normal on initial click,in percentage of brush radius
        - **strength** (*float in* *[**-10**,* *10**]**,* *(**optional**)*) – Strength, Filter strength
        - **iteration_count** (*int in* *[**1**,* *10000**]**,* *(**optional**)*) – Repeat, How many times to repeat the filter
        - **type** (enum in [`'SMOOTH'`, `'SCALE'`, `'INFLATE'`, `'SPHERE'`, `'RANDOM'`, `'RELAX'`, `'RELAX_FACE_SETS'`, `'SURFACE_SMOOTH'`, `'SHARPEN'`, `'ENHANCE_DETAILS'`, `'ERASE_DISPLACEMENT'`], (optional)) –

          Filter Type, Operation that is going to be applied to the mesh

          - `SMOOTH`
            Smooth – Smooth mesh.
          - `SCALE`
            Scale – Scale mesh.
          - `INFLATE`
            Inflate – Inflate mesh.
          - `SPHERE`
            Sphere – Morph into sphere.
          - `RANDOM`
            Random – Randomize vertex positions.
          - `RELAX`
            Relax – Relax mesh.
          - `RELAX_FACE_SETS`
            Relax Face Sets – Smooth the edges of all the Face Sets.
          - `SURFACE_SMOOTH`
            Surface Smooth – Smooth the surface of the mesh, preserving the volume.
          - `SHARPEN`
            Sharpen – Sharpen the cavities of the mesh.
          - `ENHANCE_DETAILS`
            Enhance Details – Enhance the high frequency surface detail.
          - `ERASE_DISPLACEMENT`
            Erase Displacement – Deletes the displacement of the Multires Modifier.
        - **deform_axis** (enum set in {`'X'`, `'Y'`, `'Z'`}, (optional)) –

          Deform Axis, Apply the deformation in the selected axis

          - `X`
            X – Deform in the X axis.
          - `Y`
            Y – Deform in the Y axis.
          - `Z`
            Z – Deform in the Z axis.
        - **orientation** (enum in [`'LOCAL'`, `'WORLD'`, `'VIEW'`], (optional)) –

          Orientation, Orientation of the axis to limit the filter displacement

          - `LOCAL`
            Local – Use the local axis to limit the displacement.
          - `WORLD`
            World – Use the global axis to limit the displacement.
          - `VIEW`
            View – Use the view axis to limit the displacement.
        - **surface_smooth_shape_preservation** (*float in* *[**0**,* *1**]**,* *(**optional**)*) – Shape Preservation, How much of the original shape is preserved when smoothing
        - **surface_smooth_current_vertex** (*float in* *[**0**,* *1**]**,* *(**optional**)*) – Per Vertex Displacement, How much the position of each individual vertex influences the final result
        - **sharpen_smooth_ratio** (*float in* *[**0**,* *1**]**,* *(**optional**)*) – Smooth Ratio, How much smoothing is applied to polished surfaces
        - **sharpen_intensify_detail_strength** (*float in* *[**0**,* *10**]**,* *(**optional**)*) – Intensify Details, How much creases and valleys are intensified
        - **sharpen_curvature_smooth_iterations** (*int in* *[**0**,* *10**]**,* *(**optional**)*) – Curvature Smooth Iterations, How much smooth the resulting shape is, ignoring high frequency details

bpy.ops.sculpt.optimize()
:   Recalculate the sculpt BVH to improve performance

bpy.ops.sculpt.paint_mask_extract(*\**, *mask_threshold=0.5*, *add_boundary_loop=True*, *smooth_iterations=4*, *apply_shrinkwrap=True*, *add_solidify=True*)
:   Create a new mesh object from the current paint mask

    Parameters:
    :   - **mask_threshold** (*float in* *[**0**,* *1**]**,* *(**optional**)*) – Threshold, Minimum mask value to consider the vertex valid to extract a face from the original mesh
        - **add_boundary_loop** (*boolean**,* *(**optional**)*) – Add Boundary Loop, Add an extra edge loop to better preserve the shape when applying a subdivision surface modifier
        - **smooth_iterations** (*int in* *[**0**,* *inf**]**,* *(**optional**)*) – Smooth Iterations, Smooth iterations applied to the extracted mesh
        - **apply_shrinkwrap** (*boolean**,* *(**optional**)*) – Project to Sculpt, Project the extracted mesh into the original sculpt
        - **add_solidify** (*boolean**,* *(**optional**)*) – Extract as Solid, Extract the mask as a solid object with a solidify modifier

bpy.ops.sculpt.paint_mask_slice(*\**, *mask_threshold=0.5*, *fill_holes=True*, *new_object=True*)
:   Slices the paint mask from the mesh

    Parameters:
    :   - **mask_threshold** (*float in* *[**0**,* *1**]**,* *(**optional**)*) – Threshold, Minimum mask value to consider the vertex valid to extract a face from the original mesh
        - **fill_holes** (*boolean**,* *(**optional**)*) – Fill Holes, Fill holes after slicing the mask
        - **new_object** (*boolean**,* *(**optional**)*) – Slice to New Object, Create a new object from the sliced mask

bpy.ops.sculpt.project_line_gesture(*\**, *xstart=0*, *xend=0*, *ystart=0*, *yend=0*, *flip=False*, *cursor=5*, *use_front_faces_only=False*, *use_limit_to_segment=False*)
:   Project the geometry onto a plane defined by a line

    Parameters:
    :   - **xstart** (*int in* *[**-inf**,* *inf**]**,* *(**optional**)*) – X Start
        - **xend** (*int in* *[**-inf**,* *inf**]**,* *(**optional**)*) – X End
        - **ystart** (*int in* *[**-inf**,* *inf**]**,* *(**optional**)*) – Y Start
        - **yend** (*int in* *[**-inf**,* *inf**]**,* *(**optional**)*) – Y End
        - **flip** (*boolean**,* *(**optional**)*) – Flip
        - **cursor** (*int in* *[**0**,* *inf**]**,* *(**optional**)*) – Cursor, Mouse cursor style to use during the modal operator
        - **use_front_faces_only** (*boolean**,* *(**optional**)*) – Front Faces Only, Affect only faces facing towards the view
        - **use_limit_to_segment** (*boolean**,* *(**optional**)*) – Limit to Segment, Apply the gesture action only to the area that is contained within the segment without extending its effect to the entire line

bpy.ops.sculpt.sample_color()
:   Sample the vertex color of the active vertex

bpy.ops.sculpt.sample_detail_size(*\**, *location=(0, 0)*, *mode='DYNTOPO'*)
:   Sample the mesh detail on clicked point

    Parameters:
    :   - **location** (*int array* *of* *2 items in* *[**0**,* *32767**]**,* *(**optional**)*) – Location, Screen coordinates of sampling
        - **mode** (enum in [`'DYNTOPO'`, `'VOXEL'`], (optional)) –

          Detail Mode, Target sculpting workflow that is going to use the sampled size

          - `DYNTOPO`
            Dyntopo – Sample dyntopo detail.
          - `VOXEL`
            Voxel – Sample mesh voxel size.

bpy.ops.sculpt.sculptmode_toggle()
:   Toggle sculpt mode in 3D view

bpy.ops.sculpt.set_persistent_base()
:   Reset the copy of the mesh that is being sculpted on

bpy.ops.sculpt.set_pivot_position(*\**, *mode='UNMASKED'*, *mouse_x=0.0*, *mouse_y=0.0*)
:   Sets the sculpt transform pivot position

    Parameters:
    :   - **mode** (enum in [`'ORIGIN'`, `'UNMASKED'`, `'BORDER'`, `'ACTIVE'`, `'SURFACE'`], (optional)) –

          Mode

          - `ORIGIN`
            Origin – Sets the pivot to the origin of the sculpt.
          - `UNMASKED`
            Unmasked – Sets the pivot position to the average position of the unmasked vertices.
          - `BORDER`
            Mask Border – Sets the pivot position to the center of the border of the mask.
          - `ACTIVE`
            Active Vertex – Sets the pivot position to the active vertex position.
          - `SURFACE`
            Surface – Sets the pivot position to the surface under the cursor.
        - **mouse_x** (*float in* *[**0**,* *inf**]**,* *(**optional**)*) – Mouse Position X, Position of the mouse used for “Surface” and “Active Vertex” mode
        - **mouse_y** (*float in* *[**0**,* *inf**]**,* *(**optional**)*) – Mouse Position Y, Position of the mouse used for “Surface” and “Active Vertex” mode

bpy.ops.sculpt.symmetrize(*\**, *merge_tolerance=0.0005*)
:   Symmetrize the topology modifications

    Parameters:
    :   **merge_tolerance** (*float in* *[**0**,* *inf**]**,* *(**optional**)*) – Merge Distance, Distance within which symmetrical vertices are merged

bpy.ops.sculpt.trim_box_gesture(*\**, *xmin=0*, *xmax=0*, *ymin=0*, *ymax=0*, *wait_for_input=True*, *use_front_faces_only=False*, *location=(0, 0)*, *trim_mode='DIFFERENCE'*, *use_cursor_depth=False*, *trim_orientation='VIEW'*, *trim_extrude_mode='FIXED'*, *trim_solver='MANIFOLD'*)
:   Execute a boolean operation on the mesh and a rectangle defined by the cursor

    Parameters:
    :   - **xmin** (*int in* *[**-inf**,* *inf**]**,* *(**optional**)*) – X Min
        - **xmax** (*int in* *[**-inf**,* *inf**]**,* *(**optional**)*) – X Max
        - **ymin** (*int in* *[**-inf**,* *inf**]**,* *(**optional**)*) – Y Min
        - **ymax** (*int in* *[**-inf**,* *inf**]**,* *(**optional**)*) – Y Max
        - **wait_for_input** (*boolean**,* *(**optional**)*) – Wait for Input
        - **use_front_faces_only** (*boolean**,* *(**optional**)*) – Front Faces Only, Affect only faces facing towards the view
        - **location** (*int array* *of* *2 items in* *[**-inf**,* *inf**]**,* *(**optional**)*) – Location, Mouse location
        - **trim_mode** (enum in [`'DIFFERENCE'`, `'UNION'`, `'JOIN'`], (optional)) –

          Trim Mode

          - `DIFFERENCE`
            Difference – Use a difference boolean operation.
          - `UNION`
            Union – Use a union boolean operation.
          - `JOIN`
            Join – Join the new mesh as separate geometry, without performing any boolean operation.
        - **use_cursor_depth** (*boolean**,* *(**optional**)*) – Use Cursor for Depth, Use cursor location and radius for the dimensions and position of the trimming shape
        - **trim_orientation** (enum in [`'VIEW'`, `'SURFACE'`], (optional)) –

          Shape Orientation

          - `VIEW`
            View – Use the view to orientate the trimming shape.
          - `SURFACE`
            Surface – Use the surface normal to orientate the trimming shape.
        - **trim_extrude_mode** (enum in [`'PROJECT'`, `'FIXED'`], (optional)) –

          Extrude Mode

          - `PROJECT`
            Project – Align trim geometry with the perspective of the current view for a tapered shape.
          - `FIXED`
            Fixed – Align trim geometry orthogonally for a shape with 90 degree angles.
        - **trim_solver** (enum in [`'EXACT'`, `'FLOAT'`, `'MANIFOLD'`], (optional)) –

          Solver

          - `EXACT`
            Exact – Slower solver with the best results for coplanar faces.
          - `FLOAT`
            Float – Simple solver with good performance, without support for overlapping geometry.
          - `MANIFOLD`
            Manifold – Fastest solver that works only on manifold meshes but gives better results.

bpy.ops.sculpt.trim_lasso_gesture(*\**, *path=None*, *use_smooth_stroke=False*, *smooth_stroke_factor=0.75*, *smooth_stroke_radius=35*, *use_front_faces_only=False*, *location=(0, 0)*, *trim_mode='DIFFERENCE'*, *use_cursor_depth=False*, *trim_orientation='VIEW'*, *trim_extrude_mode='FIXED'*, *trim_solver='MANIFOLD'*)
:   Execute a boolean operation on the mesh and a shape defined by the cursor

    Parameters:
    :   - **path** (`bpy_prop_collection` of `OperatorMousePath`, (optional)) – Path
        - **use_smooth_stroke** (*boolean**,* *(**optional**)*) – Stabilize Stroke, Selection lags behind mouse and follows a smoother path
        - **smooth_stroke_factor** (*float in* *[**0.5**,* *0.99**]**,* *(**optional**)*) – Smooth Stroke Factor, Higher values gives a smoother stroke
        - **smooth_stroke_radius** (*int in* *[**10**,* *200**]**,* *(**optional**)*) – Smooth Stroke Radius, Minimum distance from last point before selection continues
        - **use_front_faces_only** (*boolean**,* *(**optional**)*) – Front Faces Only, Affect only faces facing towards the view
        - **location** (*int array* *of* *2 items in* *[**-inf**,* *inf**]**,* *(**optional**)*) – Location, Mouse location
        - **trim_mode** (enum in [`'DIFFERENCE'`, `'UNION'`, `'JOIN'`], (optional)) –

          Trim Mode

          - `DIFFERENCE`
            Difference – Use a difference boolean operation.
          - `UNION`
            Union – Use a union boolean operation.
          - `JOIN`
            Join – Join the new mesh as separate geometry, without performing any boolean operation.
        - **use_cursor_depth** (*boolean**,* *(**optional**)*) – Use Cursor for Depth, Use cursor location and radius for the dimensions and position of the trimming shape
        - **trim_orientation** (enum in [`'VIEW'`, `'SURFACE'`], (optional)) –

          Shape Orientation

          - `VIEW`
            View – Use the view to orientate the trimming shape.
          - `SURFACE`
            Surface – Use the surface normal to orientate the trimming shape.
        - **trim_extrude_mode** (enum in [`'PROJECT'`, `'FIXED'`], (optional)) –

          Extrude Mode

          - `PROJECT`
            Project – Align trim geometry with the perspective of the current view for a tapered shape.
          - `FIXED`
            Fixed – Align trim geometry orthogonally for a shape with 90 degree angles.
        - **trim_solver** (enum in [`'EXACT'`, `'FLOAT'`, `'MANIFOLD'`], (optional)) –

          Solver

          - `EXACT`
            Exact – Slower solver with the best results for coplanar faces.
          - `FLOAT`
            Float – Simple solver with good performance, without support for overlapping geometry.
          - `MANIFOLD`
            Manifold – Fastest solver that works only on manifold meshes but gives better results.

bpy.ops.sculpt.trim_line_gesture(*\**, *xstart=0*, *xend=0*, *ystart=0*, *yend=0*, *flip=False*, *cursor=5*, *use_front_faces_only=False*, *use_limit_to_segment=False*, *location=(0, 0)*, *trim_mode='DIFFERENCE'*, *use_cursor_depth=False*, *trim_orientation='VIEW'*, *trim_extrude_mode='FIXED'*, *trim_solver='MANIFOLD'*)
:   Remove a portion of the mesh on one side of a line

    Parameters:
    :   - **xstart** (*int in* *[**-inf**,* *inf**]**,* *(**optional**)*) – X Start
        - **xend** (*int in* *[**-inf**,* *inf**]**,* *(**optional**)*) – X End
        - **ystart** (*int in* *[**-inf**,* *inf**]**,* *(**optional**)*) – Y Start
        - **yend** (*int in* *[**-inf**,* *inf**]**,* *(**optional**)*) – Y End
        - **flip** (*boolean**,* *(**optional**)*) – Flip
        - **cursor** (*int in* *[**0**,* *inf**]**,* *(**optional**)*) – Cursor, Mouse cursor style to use during the modal operator
        - **use_front_faces_only** (*boolean**,* *(**optional**)*) – Front Faces Only, Affect only faces facing towards the view
        - **use_limit_to_segment** (*boolean**,* *(**optional**)*) – Limit to Segment, Apply the gesture action only to the area that is contained within the segment without extending its effect to the entire line
        - **location** (*int array* *of* *2 items in* *[**-inf**,* *inf**]**,* *(**optional**)*) – Location, Mouse location
        - **trim_mode** (enum in [`'DIFFERENCE'`, `'UNION'`, `'JOIN'`], (optional)) –

          Trim Mode