22

Blender 2.6 中如何通过 Python 按名称选择对象?

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

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

...但这已在2.6中停产,要替换为什么?


2.6中,可以像这样获取当前选定的对象...

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")

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

非常感谢。

4

3 回答 3

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

选择数据包含在各个对象中。您可以如图所示读取写入它们。以更易读的形式:

object = bpy.data.objects['OBJECT']
object.select = True
于 2013-10-20T00:32:59.047 回答
15

bpy.ops.object.select_name()已被替换为bpy.ops.object.select_pattern()(大约 2.62,我认为?),这是一个更强大的版本(它可以选择确切的名称,但也可以使用带通配符的模式,不区分大小写等):

bpy.ops.object.select_pattern(pattern="Cube")
于 2013-11-23T23:00:38.053 回答
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

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

来源

于 2013-10-20T00:18:57.390 回答