我想使用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模式做到这一点?

谢谢,
丹尼尔

最佳答案

假设我们向对象'Cube'添加了一个名为'testprop'的自定义属性-您可以在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,用户可以更改它,并且名称中可能存在带有数字扩展名的多个项目。

10-05 18:18
查看更多