【问题标题】:Blender 2.6: Select object by name through PythonBlender 2.6:通过 Python 按名称选择对象
【发布时间】:2013-10-28 15:29:13
【问题描述】:

如何在 Blender 2.6 中通过 Python 按名称选择对象?

2.4-2.5 中,可以简单地使用:

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

...但是在 2.6 中已停止使用,要替换为什么?


2.6中,可以像这样获取当前选中的对象...

bpy.context.selected_objects

还有一种方法可以设置场景的活动对象...

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

也可以通过操作进行选择,例如select_all()select_by_type()...

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

但我找不到简单地通过名称进行选择的方法。

非常感谢。

【问题讨论】:

    标签: python blender bpy


    【解决方案1】:
    bpy.data.objects['OBJECT'].select = True
    

    选择数据包含在各个对象中。您可以阅读,如图所示。以更易读的形式:

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

    【讨论】:

      【解决方案2】:

      bpy.ops.object.select_name() 已被 bpy.ops.object.select_pattern() 取代(我认为大约是 2.62?),这是一个更强大的版本(它可以选择确切的名称,但也可以使用带通配符的模式,不区分大小写等。 ):

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

      【讨论】:

        【解决方案3】:
        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
        

        不是我的代码,不保证可以工作。

        Source

        【讨论】:

        • 啊哈!每个对象都有它自己的选定属性!谢谢,我会把它写成一个可读的答案。
        猜你喜欢
        • 1970-01-01
        • 2013-02-10
        • 2015-03-11
        • 2017-01-16
        • 2018-01-28
        • 2023-01-31
        • 2016-04-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多