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

Posted

技术标签:

【中文标题】Blender 2.6:通过 Python 按名称选择对象【英文标题】:Blender 2.6: Select object by name through Python 【发布时间】:2013-10-28 15:29:13 【问题描述】:

如何在 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")

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

非常感谢。

【问题讨论】:

【参考方案1】:
bpy.data.objects['OBJECT'].select = True

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

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

【讨论】:

【参考方案2】:

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

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

【讨论】:

【参考方案3】:
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

【讨论】:

啊哈!每个对象都有它自己的选定属性!谢谢,我会把它写成一个可读的答案。

以上是关于Blender 2.6:通过 Python 按名称选择对象的主要内容,如果未能解决你的问题,请参考以下文章

创建一个弹出菜单来调用自定义导出器(Blender 2.6 API)?

Blender 2.6 JSON导出器,纹理坐标麻烦

重置动画时间线 - blender 2.6

如何将 C++ 库与 Python 集成?

Blender中的Python编码

如何运行带有blender参数的python脚本?