web-dev-qa-db-ja.com

Blender 2.6:Pythonで名前でオブジェクトを選択

これは非常に単純な質問ですが、私はいたるところを見てきました。たぶん、私はポイントを失っています、私は知りません。しかし、これはかなり簡単なはずです。

私の質問は、単純に、Python Blender 2.6では名前でオブジェクトをどのように選択しますか?


2.4-5では、次のものを使用できます。

_bpy.ops.object.select_name("OBJECT")
_

...しかし、これは廃止され、何に置き換えられますか?

次のように現在選択されているオブジェクトを取得できます...

_bpy.context.selected_objects
_

そして、シーンのアクティブなオブジェクトを設定する方法があります...

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

また、select_all()select_by_type()などのoperationsで選択することもできます。

_bpy.ops.object.select_all(action="TOGGLE")
_

しかし、私は単にname。で選択する方法を見つけることができません

おかげで、私は完全に失われました...

22
Jollywatt
bpy.data.objects['OBJECT'].select = True

選択データは個々のオブジェクトに含まれています。次のようにandを読むことができます。もう少し読みやすい形式で:

object = bpy.data.objects['OBJECT']
object.select = True
27
Jollywatt

bpy.ops.object.select_name()bpy.ops.object.select_pattern()(2.62前後)と置き換えられました。これはより強力なバージョンです(正確な名前を選択できますが、ワイルドカードを含むパターンも使用できます) -insensitiveなど):

bpy.ops.object.select_pattern(pattern="Cube")
15
mont29
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

私のコードではなく、動作が保証されていません。

ソース

4
Azeirah