Blender 2.6: выбор объекта по имени через Python

Я знаю, это очень простой вопрос, но я смотрел везде. Может быть, я упускаю суть, я не знаю; но это должно быть достаточно просто.

Мой вопрос прост: как вы выбираете объекты по имени через 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 ответа

Решение
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

Не мой код, не гарантированно работать.

Источник

Другие вопросы по тегам