2013-10-20 22 views
17

Wiem, to jest bardzo proste pytanie, ale szukałem wszędzie. Może brakuje mi punktu, nie wiem; ale powinno to być rozsądnie łatwe.Blender 2.6: Wybierz obiekt według nazwy przez Python

Moje pytanie brzmi po prostu: Jak wybrać obiekty według nazwy w Pythonie w Blenderze 2.6?


W 2.4-5, można po prostu użyć:

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

... ale zostało przerwane, aby zostać zastąpione przez co?

Można dostać aktualnie wybrane obiekty jak tak ...

bpy.context.selected_objects 

I nie sposób ustawić aktywny obiekt sceny za ...

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

i można również wybrać za pomocą operacje, takie jak select_all() lub select_by_type() ...

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

Ale nie mogę znaleźć sposobu, aby wybrać po prostu przez nazwę .

Dzięki, jestem zupełnie zagubiony ...

Odpowiedz

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

dane Wybór jest zawarta w ramach poszczególnych przedmiotów. Możesz przeczytać i zapisz je tak, jak pokazano. W formie nieco bardziej czytelny:

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 

Nie mój kod, a nie gwarantowane do pracy.

Source

+0

Aha! Każdy obiekt ma swoją wybraną własność! Dzięki, przedstawię to w czytelnej odpowiedzi. – Jollywatt

15

bpy.ops.object.select_name() został zastąpiony przez bpy.ops.object.select_pattern() (? Około 2,62, chyba), która jest mocniejsza wersja (można go wybrać dokładną nazwę, ale również korzystać z wzorców z symboli wieloznacznych, nie rozróżnia wielkości liter itp.):

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