我想使用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,用户可以更改它,并且名称中可能存在带有数字扩展名的多个项目。