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
Не мой код, не гарантированно работать.