From cb768c26a0bc63e02c3035b4af31ba5cbc2e9dda Mon Sep 17 00:00:00 2001 From: Grant Sanderson Date: Wed, 20 Apr 2022 21:48:58 -0700 Subject: [PATCH] Add functionality for recovering mobjects from their ids (to enable copying and pasting) --- manimlib/scene/scene.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/manimlib/scene/scene.py b/manimlib/scene/scene.py index bb40ebc1..284a03c9 100644 --- a/manimlib/scene/scene.py +++ b/manimlib/scene/scene.py @@ -295,6 +295,25 @@ class Scene(object): return mobject return None + def get_group(self, *mobjects): + if all(isinstance(m, VMobject) for m in mobjects): + return VGroup(*mobjects) + else: + return Group(*mobjects) + + def id_to_mobject(self, id_value): + for mob in self.mobjects: + for sm in mob.get_family(): + if id(sm) == id_value: + return sm + return None + + def ids_to_group(self, *id_values): + return self.get_group(*filter( + lambda x: x is not None, + map(self.id_to_mobject, id_values) + )) + # Related to skipping def update_skipping_status(self) -> None: if self.start_at_animation_number is not None: