如何通过bpy.types获取特定的修饰属性信息



例如,我得到了:

bpy.types.Modifier.bl_rna.properties['type'].enum_items[12]

(布尔修饰符(

布尔修饰符具有实际布尔网格的属性,称为"对象"。我如何快速检查一下它是否真的获得了可用的"对象"属性(通过bpy.types(?

我想通过其属性过滤修饰符,例如:

[modifier.identifier for modifier in bpy.types.Modifier.bl_rna.properties['type'].enum_items if modifier.object != NULL]

显然,这是不起作用的,只是为您更好地了解我正在尝试的东西。

bpy.types包含类定义。bpy.data包含用于在搅拌机场景中定义对象的实例。bpy.context可以轻松访问几个兴趣点,而不是直接使用bpy.data,例如活动场景和对象以及所选对象和可见对象的列表。

作为类定义,bpy.types只能告诉您每种类型可以包含哪些属性,哪些可能是在修改后。例如,插件可以使用bpy.props将属性添加到现有数据类型中,这是在bpy.types中的类定义上完成的。

bpy.types.Modifier的每个子类都有其自己的属性,BooleanModifier具有对象属性,这是第二个将与修饰符的网格交互的对象。

要访问项目的特定实例数据,您需要在bpy.databpy.context中找到相关数据。

例如,如果一个立方体有一个布尔修饰符,该修饰符与球体网眼网格,则可以在Python控制台中获得以下内容。

>>> bpy.data.objects['Cube'].modifiers['Boolean'].object
bpy.data.objects['Sphere']
>>> bpy.data.objects['Cube'].modifiers['Boolean'].operation
'UNION'

在另一个论坛中,我意识到python函数 dir()列出了实体的所有属性。

so:

    for mods in orig_active.modifiers:
        for properties in dir(mods):
            if "__" not in properties:
                props=eval("type(mods."+str(properties)+")")
                if "Object" in str(props):
                    print(mods.name + "modifier got a property called 'object'.")

有点笨拙,但有效。

最新更新