首页 > 解决方案 > 重新选择活动对象

问题描述

Blender 中的 Python 脚本新手,想做一些相对简单的事情 - 创建一个对象,复制它并翻译复制的对象,然后重新选择原始对象。这是我使用 Blender 2.76 的代码:

import bpy
from bpy import context
original_object = bpy.ops.mesh.primitive_cube_add()
bpy.ops.object.duplicate()
bpy.ops.transform.rotate(value(90),axis=(1,0,0))
bpy.context.scene.objects.active = original_object

最后一行不起作用 - 原始对象不再处于活动状态。想知道错误在哪里?

标签: blender

解决方案


这个:

bpy.context.scene.objects.active = original_object

只需为当前场景设置活动对象,但您还需要选择它,可以使用以下方法完成:

original_object.select = True

因此,在您的情况下,您可以编写如下内容:

import bpy
from bpy import context

bpy.ops.mesh.primitive_cube_add()                  

original_object = bpy.context.scene.objects.active

bpy.ops.object.duplicate()
bpy.ops.transform.rotate(value=90,axis=(1,0,0))    # you need to put value=90 instead of value(90), otherwise you will get an error

for obj in bpy.context.selected_objects:           # deselects all selected objects
    obj.select = False

bpy.context.scene.objects.active = original_object
original_object.select = True

推荐阅读