Je sais, c'est une question extrêmement simple, mais j'ai cherché partout. Peut-être que je manque le point, je ne sais pas; mais cela devrait être raisonnablement facile.
Ma question est simplement, comment sélectionnez-vous les objets par leur nom via Python dans Blender 2.6?
En 2.4-5, on pourrait simplement utiliser:
bpy.ops.object.select_name("OBJECT")
... mais cela a été abandonné, pour être remplacé par quoi?
On peut obtenir les objets actuellement sélectionnés comme ça ...
bpy.context.selected_objects
Et il existe un moyen de définir l'objet actif de la scène ...
bpy.context.scene.objects.active = bpy.data.objects["OBJECT"]
Et on peut également sélectionner via opérations, comme select_all()
ou select_by_type()
...
bpy.ops.object.select_all(action="TOGGLE")
Mais je ne peux pas trouver un moyen de sélectionner simplement par nom.
Merci, je suis totalement perdu ...
bpy.data.objects['OBJECT'].select = True
Les données de sélection sont contenues dans les objets individuels. Vous pouvez lire et les écrire comme indiqué. Sous une forme légèrement plus lisible:
object = bpy.data.objects['OBJECT']
object.select = True
bpy.ops.object.select_name()
a été remplacée par bpy.ops.object.select_pattern()
(environ 2,62, je pense?), qui est une version plus puissante (elle peut sélectionner un nom exact, mais également utiliser des modèles avec des caractères génériques, par exemple -insensible, etc.):
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
Pas mon code, pas garanti de fonctionner.