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

2024-06-09 22:46:13 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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


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

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

谢谢,我完全迷路了。。。


Tags: 对象方法name名称重点objectsobjectcontext
3条回答
bpy.data.objects['OBJECT'].select = True

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

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

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

bpy.ops.object.select_pattern(pattern="Cube")
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

相关问题 更多 >