2013-10-20 23 views
17

Tôi biết, đây là một câu hỏi cực kỳ đơn giản, nhưng tôi đã nhìn khắp mọi nơi. Có lẽ tôi đang thiếu điểm, tôi không biết; nhưng điều này nên được hợp lý dễ dàng.Máy xay sinh tố 2.6: Chọn đối tượng theo tên thông qua Python

Câu hỏi của tôi đơn giản là, làm thế nào để bạn chọn đối tượng theo tên thông qua Python trong Blender 2.6?


Trong 2,4-5, một cách đơn giản có thể sử dụng:

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

... nhưng điều này đã hết hiệu lực, phải được thay thế bởi những gì?

Người ta có thể có được các đối tượng đang được chọn như vậy ...

bpy.context.selected_objects 

Và có một cách để thiết lập đối tượng hoạt động của cảnh ...

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

Và người ta cũng có thể chọn qua hoạt động, như select_all() hoặc select_by_type() ...

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

Nhưng tôi không thể tìm cách chọn đơn giản chỉ bằng tên .

Cảm ơn, tôi đang hoàn toàn bị mất ...

Trả lời

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

Lựa chọn dữ liệu được chứa trong các đối tượng cá nhân. Bạn có thể đọc viết chúng như được hiển thị. Trong một hình thức hơi dễ đọc hơn:

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 

Không mã của tôi, không được bảo đảm để làm việc.

Source

+0

Aha! Mỗi đối tượng có thuộc tính được chọn riêng của nó! Cảm ơn, tôi sẽ đưa câu trả lời này thành một câu trả lời có thể đọc được. – Jollywatt

15

bpy.ops.object.select_name() đã được thay thế bởi bpy.ops.object.select_pattern() (? Khoảng 2,62, tôi nghĩ), mà là một phiên bản mạnh mẽ hơn (nó có thể chọn một cái tên chính xác, mà còn sử dụng các mẫu với các kí hiệu, phân biệt chữ hoa chữ thường, v.v.):

bpy.ops.object.select_pattern(pattern="Cube") 
Các vấn đề liên quan