PGCRYPT/OpenBlender_Train huggingface dataset:
user: Give a detailed overview of Magic: syntax, arguments, return values, common patterns.

assistant: # Magic

The Magic Texture node is used to add a psychedelic color texture.
It can be used for “Thin Film Interference” if you set *Mapping*
to *Reflection* and use a relatively high *Turbulence*.
The RGB components are generated independently with a sine formula.

[image reference removed]

Magic Texture panels.
user: Show practical ways to work with NodeEvaluateClosureInputItem(bpy_struct) in a Blender add-on or script – include code.

assistant: # NodeEvaluateClosureInputItem(bpy_struct)

base class — [`bpy_struct`](bpy.types.bpy_struct.html#bpy.types.bpy_struct "bpy.types.bpy_struct")

*class* bpy.types.NodeEvaluateClosureInputItem(*bpy_struct*)
:   color
    :   Color of the corresponding socket type in the node editor

        Type:
        :   float array of 4 items in [0, inf], default (0.0, 0.0, 0.0, 0.0), (readonly)

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

    socket_type
    :   Type:
        :   enum in [Node Socket Data Type Items](bpy_types_enum_items/node_socket_data_type_items.html#rna-enum-node-socket-data-type-items), default `'FLOAT'`

    structure_type
    :   What kind of higher order types are expected to flow through this socket

        Type:
        :   enum in [Node Socket Structure Type Items](bpy_types_enum_items/node_socket_structure_type_items.html#rna-enum-node-socket-structure-type-items), default `'AUTO'`

    *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
user: Explain Properties in complete detail according to the official Blender documentation.

assistant: Domain
:   The domain on which the selection field is evaluated.

    Point:
    :   The selection is on the points, control points, and vertices of the geometry.

    Edge:
    :   The selection is on the edges of the mesh component. The other components
        are not modified.

    Faces:
    :   The selection is on the faces of the mesh component. The other components
        are not modified.

    Spline:
    :   The selection is on the splines in the curve component. For each spline, it
        is either entirely in the selection or not at all. The other components are not
        modified.
user: Give a detailed overview of OperatorFileListElement(PropertyGroup): syntax, arguments, return values, common patterns.

assistant: # OperatorFileListElement(PropertyGroup)

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

*class* bpy.types.OperatorFileListElement(*PropertyGroup*)
:   name
    :   Name of a file or directory within a file list

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

    *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
user: Provide the full official documentation entry for NodeCompositorFileOutputItem(bpy_struct), preserving all code examples.

assistant: # NodeCompositorFileOutputItem(bpy_struct)

base class — [`bpy_struct`](bpy.types.bpy_struct.html#bpy.types.bpy_struct "bpy.types.bpy_struct")

*class* bpy.types.NodeCompositorFileOutputItem(*bpy_struct*)
:   color
    :   Color of the corresponding socket type in the node editor

        Type:
        :   float array of 4 items in [0, inf], default (0.0, 0.0, 0.0, 0.0), (readonly)

    format
    :   Type:
        :   [`ImageFormatSettings`](bpy.types.ImageFormatSettings.html#bpy.types.ImageFormatSettings "bpy.types.ImageFormatSettings"), (readonly)

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

    override_node_format
    :   Use a different format instead of the node format for this file

        Type:
        :   boolean, default False

    save_as_render
    :   Apply render part of display transform when saving byte image

        Type:
        :   boolean, default False

    socket_type
    :   Type:
        :   enum in [Node Socket Data Type Items](bpy_types_enum_items/node_socket_data_type_items.html#rna-enum-node-socket-data-type-items), default `'FLOAT'`

    vector_socket_dimensions
    :   Dimensions of the vector socket

        Type:
        :   int in [2, 4], default 0

    *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
user: Give a detailed overview of Saving Defaults: syntax, arguments, return values, common patterns.

assistant: The preferences are automatically saved when changed. This behavior can be changed by following the instructions under
[Auto-Save Preferences](introduction.xhtml#autosave-preferences)

Changing the default startup file can be done via File ‣ Defaults ‣ Save Startup File. See
[Startup File](../../interface/window_system/topbar.xhtml#startup-file).

There are two areas where Blender’s defaults are stored:

Preferences
:   The [Preferences](../../editors/preferences/introduction.xhtml#prefs-menu) file stores keymap, add-ons theme and other options.

Startup File
:   The [Startup File](../../interface/window_system/topbar.xhtml#startup-file) stores the scene and UI setup which are displayed at startup and when
    creating a new file (File ‣ New).
user: Explain Use an External Editor in complete detail according to the official Blender documentation.

assistant: Blender’s text editor is fine for small changes and writing tests but its not full featured,
for larger projects you’ll probably want to use a standalone editor or Python IDE.
Editing a text file externally and having the same text open in Blender does work
but isn’t that optimal so here are two ways you can use an external file from Blender.
Using the following examples you’ll still need text data-block in Blender to execute,
but reference an external file rather than including it directly.

### Executing External Scripts

This is the equivalent to running the script directly, referencing a script’s path from a two line code block.

```
filename = "/full/path/to/myscript.py"
exec(compile(open(filename).read(), filename, 'exec'))
```

You might want to reference a script relative to the blend-file.

```
import bpy
import os

filename = os.path.join(os.path.dirname(bpy.data.filepath), "myscript.py")
exec(compile(open(filename).read(), filename, 'exec'))
```

### Executing Modules

This example shows loading a script in as a module and executing a module function.

```
import myscript
import importlib

importlib.reload(myscript)
myscript.main()
```

Notice that the script is reloaded every time, this forces use of the modified version,
otherwise the cached one in `sys.modules` would be used until Blender was restarted.

The important difference between this and executing the script directly is it
has to call a function in the module, in this case `main()` but it can be any function,
an advantage with this is you can pass arguments to the function from this
small script which is often useful for testing different settings quickly.

The other issue with this is the script has to be in Python’s module search path.
While this is not best practice – for testing purposes you can extend the search path,
this following example adds the current blend-file’s directory to the search path
and then loads the script as a module.

```
import sys
import os
import bpy

blend_dir = os.path.dirname(bpy.data.filepath)
if blend_dir not in sys.path:
   sys.path.append(blend_dir)

import myscript
import importlib
importlib.reload(myscript)
myscript.main()
```
user: How do I use ShaderNodeEmission(ShaderNode) in Blender? Include parameters, examples, warnings and best practices.

assistant: # ShaderNodeEmission(ShaderNode)

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

*class* bpy.types.ShaderNodeEmission(*ShaderNode*)
:   Lambertian emission shader

    *classmethod* is_registered_node_type()
    :   True if a registered node type

        Returns:
        :   Result

        Return type:
        :   boolean

    *classmethod* input_template(*index*)
    :   Input socket template

        Parameters:
        :   **index** (*int in* *[**0**,* *inf**]*) – Index

        Returns:
        :   result

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

    *classmethod* output_template(*index*)
    :   Output socket template

        Parameters:
        :   **index** (*int in* *[**0**,* *inf**]*) – Index

        Returns:
        :   result

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

    *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
user: What is Examples and how is it used in Blender Python scripting?

assistant: Mirror around the individual origins.

|  |  |
| --- | --- |
| ../../../../_images/modeling_meshes_editing_mesh_mirror_cursor-before.png   Mesh before mirroring. | ../../../../_images/modeling_meshes_editing_mesh_mirror_individual-after.png   Mesh after mirroring along the X axis. |

The next example shows mirroring around the *3D Cursor*, with the orientation set to *Local*:

Mirror around the 3D Cursor.

|  |  |
| --- | --- |
| ../../../../_images/modeling_meshes_editing_mesh_mirror_cursor-before.png   Mesh before mirroring. | ../../../../_images/modeling_meshes_editing_mesh_mirror_cursor-after.png   Mesh after mirroring along the X axis using the 3D Cursor as the pivot point. |
user: Explain Node Context in complete detail according to the official Blender documentation.

assistant: bpy.context.selected_nodes
:   Type:
    :   sequence of [`bpy.types.Node`](bpy.types.Node.html#bpy.types.Node "bpy.types.Node")

bpy.context.active_node
:   Type:
    :   [`bpy.types.Node`](bpy.types.Node.html#bpy.types.Node "bpy.types.Node")

bpy.context.light
:   Type:
    :   [`bpy.types.Light`](bpy.types.Light.html#bpy.types.Light "bpy.types.Light")

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

bpy.context.world
:   Type:
    :   [`bpy.types.World`](bpy.types.World.html#bpy.types.World "bpy.types.World")
user: Explain ByteIntAttribute(Attribute) in complete detail according to the official Blender documentation.

assistant: # ByteIntAttribute(Attribute)

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

*class* bpy.types.ByteIntAttribute(*Attribute*)
:   Geometry attribute that stores 8-bit integers

    data
    :   Type:
        :   [`bpy_prop_collection`](bpy.types.bpy_prop_collection.html#bpy.types.bpy_prop_collection "bpy.types.bpy_prop_collection") of [`ByteIntAttributeValue`](bpy.types.ByteIntAttributeValue.html#bpy.types.ByteIntAttributeValue "bpy.types.ByteIntAttributeValue"), (readonly)

    *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
user: Show practical ways to work with NodeTreeInterfaceSocketIntFactor(NodeTreeInterfaceSocket) in a Blender add-on or script – include code.

assistant: # NodeTreeInterfaceSocketIntFactor(NodeTreeInterfaceSocket)

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

*class* bpy.types.NodeTreeInterfaceSocketIntFactor(*NodeTreeInterfaceSocket*)
:   Integer number socket of a node

    default_value
    :   Input value used for unconnected socket

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

    max_value
    :   Maximum value

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

    min_value
    :   Minimum value

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

    subtype
    :   Subtype of the default value

        Type:
        :   enum in [`'DEFAULT'`], default `'DEFAULT'`

    draw(*context*, *layout*)
    :   Draw interface socket settings

        Parameters:
        :   **layout** ([`UILayout`](bpy.types.UILayout.html#bpy.types.UILayout "bpy.types.UILayout"), (never None)) – Layout, Layout in the UI

    init_socket(*node*, *socket*, *data_path*)
    :   Initialize a node socket instance

        Parameters:
        :   - **node** ([`Node`](bpy.types.Node.html#bpy.types.Node "bpy.types.Node"), (never None)) – Node, Node of the socket to initialize
            - **socket** ([`NodeSocket`](bpy.types.NodeSocket.html#bpy.types.NodeSocket "bpy.types.NodeSocket"), (never None)) – Socket, Socket to initialize
            - **data_path** (*string**,* *(**never None**)*) – Data Path, Path to specialized socket data

    from_socket(*node*, *socket*)
    :   Setup template parameters from an existing socket

        Parameters:
        :   - **node** ([`Node`](bpy.types.Node.html#bpy.types.Node "bpy.types.Node"), (never None)) – Node, Node of the original socket
            - **socket** ([`NodeSocket`](bpy.types.NodeSocket.html#bpy.types.NodeSocket "bpy.types.NodeSocket"), (never None)) – Socket, Original socket

    *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
user: Show practical ways to work with Import STL Node in a Blender add-on or script – include code.

assistant: # Import STL Node

[image reference removed]

The *Import STL* node imports mesh geometry from a .stl (Stereolithography) file.

STL files are commonly used for 3D printing and CAD applications and contain only surface geometry,
typically as a collection of triangles with no color, texture, or other attributes.

This node enables incorporating external STL assets into Geometry Nodes for procedural processing or visualization.
user: What is XrActionMap(bpy_struct) and how is it used in Blender Python scripting?

assistant: # XrActionMap(bpy_struct)

base class — [`bpy_struct`](bpy.types.bpy_struct.html#bpy.types.bpy_struct "bpy.types.bpy_struct")

*class* bpy.types.XrActionMap(*bpy_struct*)
:   actionmap_items
    :   Items in the action map, mapping an XR event to an operator, pose, or haptic output

        Type:
        :   [`XrActionMapItems`](bpy.types.XrActionMapItems.html#bpy.types.XrActionMapItems "bpy.types.XrActionMapItems") [`bpy_prop_collection`](bpy.types.bpy_prop_collection.html#bpy.types.bpy_prop_collection "bpy.types.bpy_prop_collection") of [`XrActionMapItem`](bpy.types.XrActionMapItem.html#bpy.types.XrActionMapItem "bpy.types.XrActionMapItem"), (readonly)

    name
    :   Name of the action map

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

    selected_item
    :   Type:
        :   int in [-32768, 32767], default 0

    *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
user: How do I use Proportional Falloff Curve Only Items in Blender? Include parameters, examples, warnings and best practices.

assistant: # Proportional Falloff Curve Only Items

SMOOTH:
:   Smooth.

    Smooth falloff.

SPHERE:
:   Sphere.

    Spherical falloff.

ROOT:
:   Root.

    Root falloff.

INVERSE_SQUARE:
:   Inverse Square.

    Inverse Square falloff.

SHARP:
:   Sharp.

    Sharp falloff.

LINEAR:
:   Linear.

    Linear falloff.
user: Describe Inherited Properties from the Blender manual or Python API, including usage steps and snippets.

assistant: |  |  |
| --- | --- |
| - [`bpy_struct.id_data`](bpy.types.bpy_struct.html#bpy.types.bpy_struct.id_data "bpy.types.bpy_struct.id_data") - [`Strip.name`](bpy.types.Strip.html#bpy.types.Strip.name "bpy.types.Strip.name") - [`Strip.type`](bpy.types.Strip.html#bpy.types.Strip.type "bpy.types.Strip.type") - [`Strip.select`](bpy.types.Strip.html#bpy.types.Strip.select "bpy.types.Strip.select") - [`Strip.select_left_handle`](bpy.types.Strip.html#bpy.types.Strip.select_left_handle "bpy.types.Strip.select_left_handle") - [`Strip.select_right_handle`](bpy.types.Strip.html#bpy.types.Strip.select_right_handle "bpy.types.Strip.select_right_handle") - [`Strip.mute`](bpy.types.Strip.html#bpy.types.Strip.mute "bpy.types.Strip.mute") - [`Strip.lock`](bpy.types.Strip.html#bpy.types.Strip.lock "bpy.types.Strip.lock") - [`Strip.frame_final_duration`](bpy.types.Strip.html#bpy.types.Strip.frame_final_duration "bpy.types.Strip.frame_final_duration") - [`Strip.frame_duration`](bpy.types.Strip.html#bpy.types.Strip.frame_duration "bpy.types.Strip.frame_duration") - [`Strip.frame_start`](bpy.types.Strip.html#bpy.types.Strip.frame_start "bpy.types.Strip.frame_start") - [`Strip.frame_final_start`](bpy.types.Strip.html#bpy.types.Strip.frame_final_start "bpy.types.Strip.frame_final_start") | - [`Strip.frame_final_end`](bpy.types.Strip.html#bpy.types.Strip.frame_final_end "bpy.types.Strip.frame_final_end") - [`Strip.frame_offset_start`](bpy.types.Strip.html#bpy.types.Strip.frame_offset_start "bpy.types.Strip.frame_offset_start") - [`Strip.frame_offset_end`](bpy.types.Strip.html#bpy.types.Strip.frame_offset_end "bpy.types.Strip.frame_offset_end") - [`Strip.channel`](bpy.types.Strip.html#bpy.types.Strip.channel "bpy.types.Strip.channel") - [`Strip.use_linear_modifiers`](bpy.types.Strip.html#bpy.types.Strip.use_linear_modifiers "bpy.types.Strip.use_linear_modifiers") - [`Strip.blend_type`](bpy.types.Strip.html#bpy.types.Strip.blend_type "bpy.types.Strip.blend_type") - [`Strip.blend_alpha`](bpy.types.Strip.html#bpy.types.Strip.blend_alpha "bpy.types.Strip.blend_alpha") - [`Strip.effect_fader`](bpy.types.Strip.html#bpy.types.Strip.effect_fader "bpy.types.Strip.effect_fader") - [`Strip.use_default_fade`](bpy.types.Strip.html#bpy.types.Strip.use_default_fade "bpy.types.Strip.use_default_fade") - [`Strip.color_tag`](bpy.types.Strip.html#bpy.types.Strip.color_tag "bpy.types.Strip.color_tag") - [`Strip.modifiers`](bpy.types.Strip.html#bpy.types.Strip.modifiers "bpy.types.Strip.modifiers") - [`Strip.show_retiming_keys`](bpy.types.Strip.html#bpy.types.Strip.show_retiming_keys "bpy.types.Strip.show_retiming_keys") |
user: What is Markup Style Guide and how is it used in Blender Python scripting?

assistant: # Markup Style Guide

This page covers conventions for writing Blender’s documentation using reStructuredText (RST) markup syntax.
Following these conventions ensures clarity, consistency, and ease of maintenance.
user: How do I use UV Rip Move in Blender? Include parameters, examples, warnings and best practices.

assistant: The *UV Rip Move* operator separates selected UV elements (vertices, edges, or faces) from connected components,
creating a “rip” in the UV map. After the separation, the selection enters move mode,
allowing precise control over where and how the UV elements are pulled apart.

This is useful for isolating UV islands or unwrapping overlapping elements
without affecting surrounding geometry.

|  |  |
| --- | --- |
| ../../../_images/modeling_meshes_uv_tools_rip_before.png   Before. | ../../../_images/modeling_meshes_uv_tools_rip_after.png   After. |
user: Show practical ways to work with GeometryNodeEdgesOfCorner(GeometryNode) in a Blender add-on or script – include code.

assistant: # GeometryNodeEdgesOfCorner(GeometryNode)

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

*class* bpy.types.GeometryNodeEdgesOfCorner(*GeometryNode*)
:   Retrieve the edges on both sides of a face corner

    *classmethod* is_registered_node_type()
    :   True if a registered node type

        Returns:
        :   Result

        Return type:
        :   boolean

    *classmethod* input_template(*index*)
    :   Input socket template

        Parameters:
        :   **index** (*int in* *[**0**,* *inf**]*) – Index

        Returns:
        :   result

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

    *classmethod* output_template(*index*)
    :   Output socket template

        Parameters:
        :   **index** (*int in* *[**0**,* *inf**]*) – Index

        Returns:
        :   result

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

    *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
user: Explain SubtractStrip(EffectStrip) in complete detail according to the official Blender documentation.

assistant: # SubtractStrip(EffectStrip)

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

*class* bpy.types.SubtractStrip(*EffectStrip*)
:   Subtract Strip

    input_1
    :   First input for the effect strip

        Type:
        :   [`Strip`](bpy.types.Strip.html#bpy.types.Strip "bpy.types.Strip"), (never None)

    input_2
    :   Second input for the effect strip

        Type:
        :   [`Strip`](bpy.types.Strip.html#bpy.types.Strip "bpy.types.Strip"), (never None)

    input_count
    :   Type:
        :   int in [0, inf], default 0, (readonly)

    *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
user: How do I use GeometryNodeInputMeshFaceIsPlanar(GeometryNode) in Blender? Include parameters, examples, warnings and best practices.

assistant: # GeometryNodeInputMeshFaceIsPlanar(GeometryNode)

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

*class* bpy.types.GeometryNodeInputMeshFaceIsPlanar(*GeometryNode*)
:   Retrieve whether all triangles in a face are on the same plane, i.e. whether they have the same normal

    *classmethod* is_registered_node_type()
    :   True if a registered node type

        Returns:
        :   Result

        Return type:
        :   boolean

    *classmethod* input_template(*index*)
    :   Input socket template

        Parameters:
        :   **index** (*int in* *[**0**,* *inf**]*) – Index

        Returns:
        :   result

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

    *classmethod* output_template(*index*)
    :   Output socket template

        Parameters:
        :   **index** (*int in* *[**0**,* *inf**]*) – Index

        Returns:
        :   result

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

    *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
user: How do I use Introduction in Blender? Include parameters, examples, warnings and best practices.

assistant: # Introduction

Blender provides a variety of operators for editing meshes.
These operators are used to add, duplicate, move and delete elements.

These are available through the Menus in the 3D Viewport header, and context menus in the 3D Viewport,
as well as individual shortcut keys.

These transform operators are available in the *Transform* section of the *Mesh* menu in the header.
Note that, some of these can also be used on other editable objects, like curves, surfaces, and lattices.
user: Show practical ways to work with Clip Display in a Blender add-on or script – include code.

assistant: # Clip Display

This pop-over contains various display settings for both Tracking mode and Mask mode.

R, G, B
:   Controls the color channels used for the frame preview. The tracking algorithm works with grayscale images,
    and with these options, you can check which combination of enabled and disabled channels will yield
    the best contrast and the least noise.

    Note that this only affects the preview. To select which channels to use for the actual tracking,
    use the [Track tab in the Toolbar](../../../movie_clip/tracking/clip/toolbar/track.html) to set a default
    for newly created markers, or the [Track tab in the Sidebar](../../../movie_clip/tracking/clip/sidebar/track/track.html)
    to configure existing markers.

Grayscale Preview (B/W)
:   Shows the whole frame as a grayscale image.

Mute Footage `M`
:   Hides the movie clip and displays a black image instead.
    This helps to find markers that are tracked inaccurately or not at all.

Render Undistorted
:   Applies the [Lens settings](../../../movie_clip/tracking/clip/sidebar/track/camera.html#motion-tracking-camera-lens) to the
    video preview to undo lens distortion. Does not change the footage itself.

Show Stable
:   Applies the [2D stabilization](../../../movie_clip/tracking/clip/sidebar/stabilization/introduction.html)
    settings to the video preview. Does not change the footage itself.

Grid
:   Displays a grid which is originally orthographic, but is distorted by the Lens settings.
    This can be used for manual calibration: the distorted grid lines should match lines
    in the footage that are meant to be straight.

Calibration
:   Applies the Lens settings to annotation strokes.
    Like the Grid, this option also helps to perform manual calibration.

Display Aspect Ratio
:   Changes the aspect ratio for displaying only. It does not affect the tracking or solving process.
user: Provide the full official documentation entry for Python Scripting, preserving all code examples.

assistant: |  |  |
| --- | --- |
| `Ctrl`-`C` | When pressed while hovering over an [operator button](../controls/buttons/buttons.xhtml#ui-operator-buttons), copies its Python command to the clipboard. This command can then be used in the [Python Console](../../editors/python_console.xhtml) or in the [Text Editor](../../editors/text_editor.xhtml) when writing scripts. |
| `Shift`-`Ctrl`-`C` | When pressed while hovering over a field, copies its relative data path (also available from the context menu). Useful when writing drivers or scripts. |
| `Shift`-`Ctrl`-`Alt`-`C` | When pressed while hovering over a field, copies its full data path. |
user: Explain Object Data in complete detail according to the official Blender documentation.

assistant: # Object Data

These panels can be found in the *Data* tab of the [Properties Editor](../../../editors/properties_editor.xhtml)
editor after selecting a mesh object.

Mesh data-block
:   The [Data-Block Menu](../../../interface/controls/templates/data_block.xhtml#ui-data-block) at the top can be used to make the object point
    to different mesh [object data](../../../scene_layout/object/introduction.xhtml).
user: Explain Passes in complete detail according to the official Blender documentation.

assistant: # Passes

A *Pass* is a type of intermediate rendering information that’s extracted as a separate image.
Examples include the diffuse colors of the objects in the scene, the light distribution,
the depth map, and the normal map.

These images can be accessed using the [Render Layers Node](../../compositing/types/input/scene/render_layers.xhtml)
in the [Compositor](../../editors/compositor.xhtml) and combined in a custom way that replaces the standard one.
user: Give a detailed overview of Modifiers: syntax, arguments, return values, common patterns.

assistant: ### Common Options

Mix
:   The modifier output can be mixed with the base property using the usual methods
    (see for example the [Mix compositing node](../../../../compositing/types/color/mix_color.html)).

Influence
:   How much the result of this modifier affects the current property.

### Types

- [Along Stroke](modifiers/thickness/along_stroke.html)
- [Calligraphy](modifiers/thickness/calligraphy.html)
- [Crease Angle](modifiers/thickness/crease_angle.html)
- [Curvature 3D](modifiers/thickness/curvature_3d.html)
- [Distance from Camera](modifiers/thickness/distance_from_camera.html)
- [Distance from Object](modifiers/thickness/distance_from_object.html)
- [Material](modifiers/thickness/material.html)
- [Noise](modifiers/thickness/noise.html)
- [Tangent](modifiers/thickness/tangent.html)
user: Show practical ways to work with Contributing in a Blender add-on or script – include code.

assistant: This importer/exporter is developed through
the [glTF-Blender-IO repository](https://github.com/KhronosGroup/glTF-Blender-IO),
where you can file bug reports, submit feature requests, or contribute code.

Discussion and development of the glTF 2.0 format itself takes place on
the Khronos Group [glTF GitHub repository](https://github.com/KhronosGroup/glTF),
and feedback there is welcome.
user: Describe Toolbar from the Blender manual or Python API, including usage steps and snippets.

assistant: The *Toolbar* contains a set of tools that can be used in the node editor.

[Select](../../selecting.html#tool-select-tweak)
:   Select or move nodes and links.

    [Select Box](../../selecting.html#tool-select-box)
    :   Select nodes or links by dragging a box around them.

    [Select Circle](../../selecting.html#tool-select-circle)
    :   Select nodes or links by clicking or dragging with a circular brush.

    [Select Lasso](../../selecting.html#tool-select-lasso)
    :   Select nodes or links by drawing a free-form lasso.

[Annotate](../../annotate_tool.html#tool-annotate-freehand)
:   Draw free-hand annotation.

    [Annotate Line](../../annotate_tool.html#tool-annotate-line)
    :   Draw straight line annotation.

    [Annotate Polygon](../../annotate_tool.html#tool-annotate-polygon)
    :   Draw a polygon annotation.

    [Annotate Eraser](../../annotate_tool.html#tool-annotate-eraser)
    :   Erase previous drawn annotations.

Link Cuts
:   Delete connections between nodes by drawing a line across the links.
    See [Cut Links](editing.html#bpy-ops-node-links-cut) for more information.

Mute Links
:   Mute connections between nodes by drawing a line across the links.
    Muted links are kept in place but ignored in evaluation.
    See [Mute Links](editing.html#bpy-ops-node-links-mute) for more information.

Add Reroute
:   Insert a [Reroute Node](types/layout/reroute.html)
    point on links by drawing a line across them.
    Reroute nodes help organize complex node trees by redirecting connections.
user: Explain Adaptive Domain in complete detail according to the official Blender documentation.

assistant: # Adaptive Domain

When enabled, the domain will adaptively shrink to best fit the gas,
saving computation time by leaving voxels without gas out of the simulation.
Unless the *Add Resolution* is used, the adaptive domain will not exceed the bounds of the original domain.

Add Resolution
:   Number of voxels to add around the outside of the domain.

Margin
:   Amount of extra space to leave around gas, measured in voxels.
    With very fast-moving gas larger margins may be required to prevent the gas from being cut off
    by the adaptive boundary, but note this will increase the number of voxels which need to be computed.

Threshold
:   Smallest amount of gas a voxel can contain before it is considered empty
    and the adaptive domain is allowed to cut it out of the simulation.
user: Explain Inputs in complete detail according to the official Blender documentation.

assistant: Image
:   Standard color input.

Alpha
:   The amount of Alpha can be set for the whole image by using the input field or
    per pixel by connecting to the socket.

Type
:   Method to mix the alpha with the input *Image*.

    Apply Mask:
    :   Multiply the input images RGBA channels by the *Alpha* input value.
        In this cases, the output is using [Premultiplied Alpha](../../../glossary/index.html#term-Premultiplied-Alpha).

    Replace Alpha:
    :   Replace the inputs alpha channel with the *Alpha* input value.
        In this cases, the output is using [Straight Alpha](../../../glossary/index.html#term-Straight-Alpha).
user: How do I use Execution Context in Blender? Include parameters, examples, warnings and best practices.

assistant: When calling an operator you may want to pass the execution context.

This determines the context that is given for the operator to run in, and whether
invoke() is called or only execute().

`EXEC_DEFAULT` is used by default, running only the `execute()` method, but you may
want the operator to take user interaction with `INVOKE_DEFAULT` which will also
call invoke() if existing.

The execution context is one of:

- `INVOKE_DEFAULT`
- `INVOKE_REGION_WIN`
- `INVOKE_REGION_CHANNELS`
- `INVOKE_REGION_PREVIEW`
- `INVOKE_AREA`
- `INVOKE_SCREEN`
- `EXEC_DEFAULT`
- `EXEC_REGION_WIN`
- `EXEC_REGION_CHANNELS`
- `EXEC_REGION_PREVIEW`
- `EXEC_AREA`
- `EXEC_SCREEN`

```
# Collection add popup.
import bpy
bpy.ops.object.collection_instance_add('INVOKE_DEFAULT')
```

It is also possible to run an operator in a particular part of the user
interface. For this we need to pass the window, area and sometimes a region.

```
# Maximize 3d view in all windows.
import bpy
from bpy import context

for window in context.window_manager.windows:
    screen = window.screen
    for area in screen.areas:
        if area.type == 'VIEW_3D':
            with context.temp_override(window=window, area=area):
                bpy.ops.screen.screen_full_area()
            break
```
user: Describe Name & Rename from the Blender manual or Python API, including usage steps and snippets.

assistant: Data-blocks names are unique within their namespace. A data-block namespace is defined by its type, and the blendfile
it is stored in.

This means that there can be for example an Object and a Mesh named the same, but there cannot be two local objects
named the same in a blendfile. However, it is possible to have one local and several linked Objects sharing the same
name.

Data-block names have a fixed length of 255 bytes, i.e. 255 basic ASCII characters, or less when using diacritics or
non-latin glyphs (the UTF8 encoding will then typically use more than one byte per character).

When Blender has to name a new data-block, or rename an existing one, it will check for name collisions. If a
data-block with the same name already exists, the (re)named data-block will get a numeric extension added as a
post-fix to its ‘root name’, like e.g. .001. The first available index is used (up to the 999 value, after that
the postfix index values are simply incremented until no collision happens anymore).

In case adding the numeric suffix would make the data-block name too long, the root name part will be shortened as
needed.

Blender will never rename another data-block when doing automatic naming. So e.g. when adding a new Cube object and
there are already Cube and Cube.001 local objects, the new one will be named Cube.002.

Local data-blocks can be renamed by the user in several places in the UI (like the ID selection widget, or the
Outliner view). When renamed from the UI, the behavior in case of name collision is as follow:

- If the original root name is different than in the new requested name, the renamed data-block gets the first
  available numerical suffix.

  - E.g. assuming that there are three objects named Sphere, Cube and Cube.001, renaming Sphere to Cube will
    rename the data-block to Cube.002.
- If the original root name is the same as in the new requested name, the renamed data-block gets the requested name,
  and the conflicting of data-block is renamed accordingly.

  - E.g. assuming that there are three objects named Sphere, Cube and Cube.001, renaming Cube.001 to Cube
    will rename the data-block to Cube, and the other data-block to Cube.001.
user: Show practical ways to work with Inputs in a Blender add-on or script – include code.

assistant: Image
:   The input image in *scene linear* color space to be converted.

Invert
:   Converts from display space back to *scene linear*.
    Not all view transforms can be inverted exactly, so the result may differ from the original image.
user: What is Display Settings and how is it used in Blender Python scripting?

assistant: The face sets display can be toggled as a [viewport overlay](../../../editors/3dview/display/overlays.html).
In the overlay popover, the opacity of the face sets overlay can be adjusted
to make it more or less visible on the mesh.
user: Explain IMAGE_FH_drop_handler(FileHandler) in complete detail according to the official Blender documentation.

assistant: # IMAGE_FH_drop_handler(FileHandler)

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

*class* bpy.types.IMAGE_FH_drop_handler(*FileHandler*)
:   *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
user: Describe Driver Configuration from the Blender manual or Python API, including usage steps and snippets.

assistant: The [Drivers panel](drivers_panel.html) shows the setup for a driver.

A driver can have zero, one, or more **variables**. Variables specify which properties,
object transformation channels, or relative distances between objects, are used as inputs
by the driver.

The driver **type** determines how the variables are used. The type can be:

- a built-in function: for example, the sum of the variables’ values, or
- a scripted expression: an arbitrary Python expression that refers to the variables by their names.

This driver configuration outputs a single value which changes when the variables change.
This value is then evaluated through the driver function curve to produce the result
to be applied to the driven property.
user: Explain Toolbar in complete detail according to the official Blender documentation.

assistant: # Toolbar

[Select](../../../../interface/selecting.xhtml#tool-select-tweak)
:   Select or moved.

    [Select Box](../../../../interface/selecting.xhtml#tool-select-box)
    :   Select UVs by dragging a box.

    [Select Circle](../../../../interface/selecting.xhtml#tool-select-circle)
    :   Select UVs by painting on it.

    [Select Lasso](../../../../interface/selecting.xhtml#tool-select-lasso)
    :   Select UVs by drawing a lasso.

Cursor
:   Change the location of the 2D Cursor.

Move
:   Translation tool.

Rotate
:   Rotation tool.

Scale
:   Scale tool.

Transform
:   Tool to adjust the UVs translation, rotation and scale.

[Annotate](../../../../interface/annotate_tool.xhtml#tool-annotate-freehand)
:   Draw free-hand annotation.

    [Annotate Line](../../../../interface/annotate_tool.xhtml#tool-annotate-line)
    :   Draw straight line annotation.

    [Annotate Polygon](../../../../interface/annotate_tool.xhtml#tool-annotate-polygon)
    :   Draw a polygon annotation.

    [Annotate Eraser](../../../../interface/annotate_tool.xhtml#tool-annotate-eraser)
    :   Erase previous drawn annotations.

[Rip](rip.xhtml)
:   The Rip tool separates UV faces from each other.

[Grab](grab.xhtml)
:   The Grab tool moves UVs around using a brush.

[Relax](relax.xhtml)
:   The Relax tool makes UVs more evenly distributed using a brush.

[Pinch](pinch.xhtml)
:   The Pinch tool moves UVs toward the brush’s center.
user: Give a detailed overview of Pose: syntax, arguments, return values, common patterns.

assistant: Pose Position
:   A radio button to switch between Pose Position and Rest Position.

    In *Edit Mode*, you always see armatures in their rest position,
    in *Object Mode* and *Pose Mode*, by default, you see them in *Pose Position*
    (i.e. as it was transformed in the *Pose Mode*).
    If you want to see it in the rest position in all modes, select *Rest Position*.