Ответ 1
bpy.data.objects['OBJECT'].select = True
Данные выбора содержатся в отдельных объектах. Вы можете читать и записывать их, как показано. В несколько более читаемой форме:
object = bpy.data.objects['OBJECT']
object.select = True
Я знаю, это очень простой вопрос, но я везде искал. Может быть, мне не хватает смысла, я не знаю; но это должно быть достаточно легко.
Мой вопрос просто: как вы выбираете объекты по имени через 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")
Но я не могу найти способ выбрать просто по имени.
Спасибо, я полностью потерял...
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
Не мой код, не гарантируется работа.