8022bd7059
`object` is the superclass of all objects. Old-style code could still be using `class SomeClass(object)` and assigning something else to `object` could have unexpected results. This is now also documented in the [Python style guide](https://wiki.blender.org/wiki/Style_Guide/Python) on the wiki. Differential Revision: https://developer.blender.org/D4922 Reviewed by: sergey
46 lines
1.6 KiB
Python
46 lines
1.6 KiB
Python
"""
|
|
Dependency graph: Original object example
|
|
+++++++++++++++++++++++++++++++++++++++++
|
|
|
|
This example demonstrates access to the original ID.
|
|
Such access is needed to check whether object is selected, or to compare pointers.
|
|
"""
|
|
import bpy
|
|
|
|
|
|
class OBJECT_OT_original_example(bpy.types.Operator):
|
|
"""Access original object and do something with it"""
|
|
bl_label = "DEG Access Original Object"
|
|
bl_idname = "object.original_example"
|
|
|
|
def check_object_selected(self, object_eval):
|
|
# Selection depends on a context and is only valid for original objects. This means we need
|
|
# to request the original object from the known evaluated one.
|
|
#
|
|
# NOTE: All ID types have an `original` field.
|
|
obj = object_eval.original
|
|
return obj.select_get()
|
|
|
|
def execute(self, context):
|
|
# NOTE: It seems redundant to iterate over original objects to request evaluated ones
|
|
# just to get original back. But we want to keep example as short as possible, but in real
|
|
# world there are cases when evaluated object is coming from a more meaningful source.
|
|
depsgraph = context.evaluated_depsgraph_get()
|
|
for obj in context.editable_objects:
|
|
object_eval = obj.evaluated_get(depsgraph)
|
|
if self.check_object_selected(object_eval):
|
|
self.report({'INFO'}, f"Object is selected: {object_eval.name}")
|
|
return {'FINISHED'}
|
|
|
|
|
|
def register():
|
|
bpy.utils.register_class(OBJECT_OT_original_example)
|
|
|
|
|
|
def unregister():
|
|
bpy.utils.unregister_class(OBJECT_OT_original_example)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
register()
|