2013-10-20 11 views
17

Lo so, questa è una domanda estremamente semplice, ma ho cercato ovunque. Forse mi manca il punto, non lo so; ma questo dovrebbe essere ragionevolmente facile.Blender 2.6: Seleziona oggetto per nome tramite Python

La mia domanda è semplicemente, come si selezionano gli oggetti per nome tramite Python in Blender 2.6?


In 2,4-5, si potrebbe utilizzare semplicemente:

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

... ma questo è fuori produzione, per essere sostituito da che cosa?

Si possono ottenere gli oggetti attualmente selezionati in questo modo ...

bpy.context.selected_objects 

E c'è un modo per impostare oggetto attivo della scena ...

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

E si può anche selezionare tramite operazioni, come select_all() o select_by_type() ...

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

Ma non riesco a trovare un modo per selezionare semplicemente il nome .

Grazie, io sono totalmente perso ...

risposta

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

dati di selezione è contenuta all'interno dei singoli oggetti. Puoi leggere e scrivendoli come mostrato. In una forma leggermente più leggibile:

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 

Non è il mio codice, non è garantito il funzionamento.

Source

+0

Aha! Ogni oggetto ha la sua proprietà selezionata! Grazie, metterò questa in una risposta leggibile. – Jollywatt

15

bpy.ops.object.select_name() è stato sostituito dal bpy.ops.object.select_pattern() (? Intorno 2.62, credo), che è una versione più potente (è possibile selezionare un nome esatto, ma utilizzare anche i modelli con caratteri jolly, senza distinzione tra maiuscole e minuscole, ecc.):

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