Changeset View
Changeset View
Standalone View
Standalone View
doc/python_api/examples/bpy.types.Depsgraph.2.py
- This file was added.
| """ | |||||
| 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. | |||||
| # | |||||
brecht: original object -> the original object | |||||
| # NOTE: All ID types have an `original` field. | |||||
| object = object_eval.original | |||||
Not Done Inline Actionshas -> have an brecht: has -> have an | |||||
| return object.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 | |||||
Not Done Inline ActionsThis seems -> It seems brecht: This seems -> It seems | |||||
| # world there are cases when evaluated object is coming from a more meaningful source. | |||||
| depsgraph = context.evaluated_depsgraph_get() | |||||
| for object in context.editable_objects: | |||||
| object_eval = object.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() | |||||
original object -> the original object