API

Quickly renaming data blocks to match object names in Blender

When we assign or change the name of an object in Blender, we work at the object level. However, all objects also have a data block – a pointer to the actual object data, which also have names. The name of the data block can be seen by clicking on the corner arrow to the left of the object name in the outliner.

Assigning real indices to vertices created in bmesh

When we work with the bmesh object through the Blender Python API to create new geometry, all created vertices receive an index equal to -1. Although we can fully interact and control the created vertices, the lack of a numbered index can make it somewhat difficult to perceive the geometry and debug the code.

Blocking the UV elements from moving beyond the UV area boundaries

In most cases, UV elements (vertices, edges, faces, islands) can be freely moved anywhere in the UV Edit area. However, sometimes it is undesirable to move the UV beyond the boundaries of the base UV borders, for example, to ensure that the UV does not “move away” when baking it into atlases.

Making a cancellable operator in Blender uncancellable

When defining custom operators in Blender, we can make them cancellable and uncancellable by specifying the “UNDO” value in the “bl_options” parameter of the operator. But what if we need to exclude an existing operator, for example, a system operator, from the undo queue? This is very easy to do by redefining the operator with our own, without specifying “UNDO” in its parameters.

Operators with undo (Ctrl + z) and without

Defining operators, we most often provide for the ability to undo the action they performed – if after executing the operator the user presses the Ctrl + z key combination, all the effects of the operator on the scene should be canceled. However, in some cases, it may be necessary to define an operator that will be ignored if the user tries to undo its actions. Blender’s API allows us to create both types of operators by simply specifying the ability or prohibition of undo in their parameters.

Custom Icons for EnumProperty in Blender

We can use custom icons, icons loaded from external files, and not embedded in Blender libraries, for example, to add customization to operator call buttons in UI panels. However, it is not only buttons that may require custom icons. Using the Blender Python API, we can add customization to drop-down list items or switches that are created based on the EnumProperty type.

Placing Max/Min socket controls of geometry node on the user panel

In order to display the value of a socket on the Geometry Nodes modifier panel in Blender, we simply need to create a link and connect the desired socket of the desired node with an empty socket on the Group Input node. After this, a field appears in the modifier panel in which we can change the value of the desired socket. We can then place this field on the user panel by accessing it as a dynamic property.

Changing the order of sockets in Blender Geometry Nodes groups

We can change the order of sockets in a Blender Geometry Nodes node group manually by simply dragging it – in the N-panel in the Group – Interface tab, hold down the desired socket and drag it with the mouse to the desired place. We can move a socket in a group node to a new location using the Blender Python API with the move() function of the “interface” object.

Labels for Reroute nodes in Blender Geometry Nodes

Did you know that you can set your own text labels for Reroute nodes in Blender Geometry Nodes? Since Reroute nodes are most often used to simplify and improve the readability of node trees in Geometry Nodes, marking such nodes with a label with a short informational inscription can be very convenient – you will not need to remember or scroll through the tree of nodes every time to find out where this Reroute data comes from.