Подтвердить что ты не робот

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

Но я не могу найти способ выбрать просто по имени.

Спасибо, я полностью потерял...

4b9b3361

Ответ 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

Не мой код, не гарантируется работа.

Источник