Blender 2.6:通过Python按名称选择对象

时间:2013-10-20 00:08:13

标签: python blender bpy

我知道,这是一个非常简单的问题,但我到处寻找。也许我错过了这一点,我不知道;但这应该相当容易。

我的问题很简单,如何通过Python在Blender 2.6中按名称选择对象?


在2.4-5中,可以简单地使用:

bpy.ops.object.select_name("OBJECT")

......但是这已经停止了,取而代之的是什么?

可以获得当前选择的对象......

bpy.context.selected_objects

还有一种设置场景活动对象的方法......

bpy.context.scene.objects.active = bpy.data.objects["OBJECT"]

还可以通过操作选择,例如select_all()select_by_type() ......

bpy.ops.object.select_all(action="TOGGLE")

但我找不到简单地通过名称选择的方法。

谢谢,我完全失去了......

3 个答案:

答案 0 :(得分:27)

bpy.data.objects['OBJECT'].select = True

选择数据包含在各个对象中。您可以阅读,如图所示。以稍微可读的形式:

object = bpy.data.objects['OBJECT']
object.select = True

答案 1 :(得分:15)

bpy.ops.object.select_name()已被bpy.ops.object.select_pattern()取代(我认为约为2.62?),这是一个功能更强大的版本(它可以选择一个确切的名称,但也可以使用带有通配符的模式,如果是 - 不敏感等):

bpy.ops.object.select_pattern(pattern="Cube")

答案 2 :(得分:4)

import bpy

def returnObjectByName (passedName= ""):
    r = None
    obs = bpy.data.objects
    for ob in obs:
        if ob.name == passedName:
            r = ob
    return r

obs = bpy.data.objects

bpy.ops.object.select_all(action='DESELECT')

for ob in obs:
    print (ob.name)
    myObj = returnObjectByName(ob.name)
    if myObj != None:
        print (dir(myObj))
        myObj.selected = True
        myObj.location[2] = 10
        myObj.selected = False

不是我的代码,不保证能够正常工作。

Source