web-dev-qa-db-fra.com

Blender 2.6: Sélectionnez un objet par son nom via Python

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 ...

22
Jollywatt
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
27
Jollywatt

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")
15
mont29
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.

Source

4
Azeirah