例如,我得到了:
bpy.types.Modifier.bl_rna.properties['type'].enum_items[12](布尔修饰符)
布尔修饰符具有一个名为"object“的属性,用于实际bool网格。如何快速检查它是否实际获得了"object“属性(通过bpy.types)?
我想通过它们的属性过滤修饰符,如下所示:
[modifier.identifier for modifier in bpy.types.Modifier.bl_rna.properties['type'].enum_items if modifier.object != NULL]显然这是行不通的,只是为了让你更好地了解我想做的事情而已。
发布于 2019-08-13 11:11:29
在另一个论坛上,我注意到了python函数dir(),它列出了一个实体的所有属性。
所以:
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'.")有点笨重但很管用。
发布于 2019-08-07 05:25:29
bpy.types包含类定义。bpy.data包含用于在搅拌机场景中定义对象的实例。bpy.context可以提供对多个感兴趣点的轻松访问,而不是直接使用bpy.data,例如活动场景和对象以及选定的和可见的对象列表。
作为类定义,bpy.types只能告诉您每个类型可以包含哪些属性,这些属性可能是修改后的。例如,一个插件可以使用bpy.props向现有的数据类型添加属性,这是在bpy.types中的类定义上完成的。
bpy.types.Modifier的每个子类都有自己的属性,BooleanModifier有一个对象属性,这是将与修饰符父网格的网格交互的第二个对象。
若要访问项的特定实例上的数据,需要在bpy.data或bpy.context中找到相关数据。
例如,如果一个立方体有一个布尔修饰符,将它的网格与球网格结合在一起,那么您可以在python控制台中得到以下内容。
>>> bpy.data.objects['Cube'].modifiers['Boolean'].object
bpy.data.objects['Sphere']
>>> bpy.data.objects['Cube'].modifiers['Boolean'].operation
'UNION'https://stackoverflow.com/questions/57364245
复制相似问题