2
$\begingroup$

I was trying to a add a plane primitive using Blender Python and aligning it to the viewport.

I already tried setting align_view = True when adding it via Python, but it doesn't change the rotation at all.

$\endgroup$

1 Answer 1

5
$\begingroup$

bpy.ops.mesh.primitive_*() operators need to be run in a proper context (3D View) in order to use align_view.

Either run an operator via Spacebar menu, or use an override:

import bpy

for area in bpy.context.screen.areas:
    if area.type == 'VIEW_3D':
        for region in area.regions:
            if region.type == 'WINDOW':
                ctx = bpy.context.copy()
                ctx['area'] = area
                ctx['region'] = region
                bpy.ops.mesh.primitive_plane_add(ctx, view_align=True)
                break

Note that there seems to be a bug, the plane appears to be in Edit mode, but the UI reports Object Mode, and the face may be missing.

$\endgroup$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .