我如何用Python在Blender中读出自定义属性?

时间:2014-01-21 17:57:21

标签: python blender

我想在Blender本身中使用脚本模式读出Blender对象的自定义属性。 到目前为止,我发现只能读出您在脚本模式下自己创建的自定义属性。但是我想读出我自己用手标记的自定义属性。这意味着我没有要使用的局部变量。

我希望这可以在以下环境中: 我有一个循环遍历所有对象:

for obj in bpy.data.objects:
if not 'Camera' in obj.name and not 'Lamp' in obj.name and not 'Armature' in obj.name:
    #here I get the location of the current Object
    loc.append(obj.location)

现在最完美的是:

obj.getCustomProperties

有没有办法用Blender Python模式做到这一点?

谢谢, 丹尼尔

2 个答案:

答案 0 :(得分:9)

假设我们将一个名为'testprop'的自定义属性添加到对象'Cube' - 您可以在python中访问该属性bpy.data.objects['Cube']['testprop']

如果您不知道属性名称,可以通过调用对象的keys()来获取可用自定义属性的列表。

这导致以下内容打印自定义属性 -

bad_obj_types = ['CAMERA','LAMP','ARMATURE']
for obj in bpy.data.objects:
    if obj.type not in bad_obj_types:
        if len(obj.keys()) > 1:
            # First item is _RNA_UI
            print("Object",obj.name,"custom properties:")
            for K in obj.keys():
                if K not in '_RNA_UI':
                    print( K , "-" , obj[K] )

您可能还会注意到我测试了obj.type而不是obj.name,这可以由用户更改,并且名称中可能还存在多个带​​有数字扩展名的项目。

答案 1 :(得分:0)

相关

github具有Python脚本,可从csv文件读取并更新网格的“自定义属性”: