2013-10-20 5 views
17

Ich weiß, das ist eine sehr einfache Frage, aber ich habe überall gesucht. Vielleicht verpasse ich den Punkt, ich weiß es nicht; aber das sollte ziemlich einfach sein.Blender 2.6: Wählen Sie ein Objekt nach Namen durch Python

Meine Frage ist einfach, Wie wählen Sie Objekte über Namen durch Python in Blender 2.6?


In 2.4-5, könnte man einfach nutzen:

bpy.ops.object.select_name("OBJECT") 

... aber das ist nicht mehr durch das, was ersetzt zu werden?

Man kann wie so die aktuell ausgewählten Objekte erhalten ...

bpy.context.selected_objects 

Und es gibt eine Art und Weise der Szene aktiv Objekt zu setzen ...

bpy.context.scene.objects.active = bpy.data.objects["OBJECT"] 

Und man kann auch wählen über Operationen, wie select_all() oder select_by_type() ...

bpy.ops.object.select_all(action="TOGGLE") 

Aber ich kann keinen Weg finden, einfach durch Namen zu wählen.

Danke, bin ich total verloren ...

Antwort

24
bpy.data.objects['OBJECT'].select = True 

Selection Daten innerhalb der einzelnen Objekte enthalten. Sie können lesen und schreiben Sie sie wie gezeigt. In einer leicht lesbaren Form:

object = bpy.data.objects['OBJECT'] 
object.select = True 
4
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 

Nicht mein Code arbeiten, nicht garantiert.

Source

+0

Aha! Jedes Objekt hat seine eigene Eigenschaft! Danke, ich werde das in eine lesbare Antwort bringen. – Jollywatt

15

bpy.ops.object.select_name() wird von bpy.ops.object.select_pattern() ersetzt worden (? Um 2.62, glaube ich), die eine leistungsstärkere Version ist (es kann einen genauen Namen zu wählen, aber auch verwenden, um Muster mit Wildcards, ohne Groß-/Kleinschreibung usw.):

bpy.ops.object.select_pattern(pattern="Cube")