2014-12-03 6 views
2

Я столкнулся с довольно простой проблемой, но я просто не знаю, как это сделать. Я хочу, чтобы blender отображал все объекты, выбранные в виде строки. Например. если я бегу:получить список выбранных объектов в виде строки Blender python

selection_names = bpy.context.selected_objects 
print (selection_names) 

это дает мне эту строку:

[bpy.data.objects['Cube.003'], bpy.data.objects['Cube.002'], bpy.data.objects['Cube.001'], bpy.data.objects['Cube']] 

Но то, что я хочу, чтобы selection_names является печать как:

['Cube.001','Cube.002','Cube.003','Cube'] 

ответ

4
>> selection_names = bpy.context.selected_objects 
>>> print (selection_names) 
[bpy.data.objects['Armature 05.04 p'], bpy.data.objects['Armature 04.08 l'], bpy.data.objects['Armature 04.07 p'], bpy.data.objects['Armature 04.07 l'], bpy.data.objects['Armature 04.04 p'], bpy.data.objects['Armature 04.05 p'], bpy.data.objects['Armature 04.05 l']] 

>>> for i in selection_names: 
...  print(i.name) 
...  
Armature 05.04 p 
Armature 04.08 l 
Armature 04.07 p 
Armature 04.07 l 
Armature 04.04 p 
Armature 04.05 p 
Armature 04.05 l 

Если вы хотите чтобы стать объектами в массиве, вы можете сделать это:

>>> SelNameArr=[] 
>>> for i in selection_names: 
...  SelNameArr.append(i.name) 
...  
>>> SelNameArr 
['Armature 05.04 p', 'Armature 04.08 l', 'Armature 04.07 p', 'Armature 04.07 l', 'Armature 04.04 p', 'Armature 04.05 p', 'Armature 04.05 l'] 
+0

спасибо Давиду :) –

3

Самый быстрый способ решить эту проблему через список понимания:

selection_names = [obj.name for obj in bpy.context.selected_objects]

, который является точным эквивалентом:

selection_names = [] 
for obj in bpy.context.selected_objects: 
    selection_names.append(obj.name) 
+0

ура, что: P –