API

Changes in add-ons registration through the API in Blender 2.8

Add-on registration and removing were made with the “Window manager” (wm) in Blender 2.7 Python API:

In Blender 2.8 API add-on operators moved to the “preferences”:

 

3D Cursor location in Blender 2.8 Python API

3D-cursor location property

in Blender 2.8 API moved to “cursor” object

When trying to get the cursor location through the “context.scene.cursor_location” Blender throws an error:

‘Scene’ object has no attribute ‘cursor_location’

Add-on preferences panel

When developing add-ons it is often necessary to give an ability to set a number of parameters that affect the whole add-on work to the user. For example, the user can specify a directory for saving/loading files, set some default variables or switch between add-on modes. Of course, the interface for setting such parameters can be placed in the add-on panel, but it is better to place it in a separate add-on preferences panel, which is located in the “Preferences” window under the add-on installation panel.

The main advantage of the add-on preferences is that they don’t reset when Blender restarts. The user does not need to configure the add-on preferences each time, it’s enough to set the necessary parameters once, personalizing the add-on for convenient work.

Let’s create an add-on and define a parameter, placing it in the add-on preferences panel.

Matrix, vector and quaternion multiplication in Blender 2.8 Python API

In Blender 2.7 the “*” (star) operator is used in the matrix, vector, and quaternion multiplication. In Blender 2.8 it is replaced with the “@” (at) operator.

If the “*” operator is used in vector, matrix or quaternion multiplication in Blender 2.8 it throws an error:

Element-wise multiplication: not supported between ‘Matrix’ and ‘Matrix’ types

Proper use of the “@” operator:

 

Accessing the pivot point type in Blender 2.8 Python API

The “pivot_point” property from Blender 2.7

in Blender 2.8 API moved to:

 

Changing the current coordinate system in Blender Python API

In Blender 2.7 the current coordinate system could be changed through the

property. In Blender 2.8 coordinate system access moved to the scene collection of “TransformOrientatiosSlots” objects. To get or set the current coordinate system the “transform_orientation_slots” collection is used.

How to set object (mesh) to active in Blender 2.8 Python API

To set mesh (object) as active in Blender 2.8 Python API the “context.view_layer” is used instead of “context.scene”.

When trying to make object active with “bpy.context.scene.objects.active” Blender throws an error:

AttributeError: bpy_prop_collection: attribute “active” not found

To make object active in Blender 2.8 use the following code:

 

Selecting objects (meshes) in Blender 2.8 Python API

According to Blender 2.8 Python API changes mesh (object) can be selected with using getters and setters.

When trying to check the selected status of the mesh through the “bpy.context.active_object.select” property, Blender throws an error:

AttributeError: ‘Object’ object has no attribute ‘select’

To check whether an object is selected in Blender 2.8 use a getter:

To select an object in Blender 2.8 use a setter:

To unselect an object use the same setter: