From 89e1a1ad988ba8041b15f631aa070aa05f7c62a6 Mon Sep 17 00:00:00 2001
From: Benedikt Hock <benedikt.hock@stud.tu-darmstadt.de>
Date: Wed, 1 Mar 2023 16:48:59 +0100
Subject: [PATCH] add ability to clone assemblies

---
 functions/classes.py | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/functions/classes.py b/functions/classes.py
index 1d9c351..abc3eee 100644
--- a/functions/classes.py
+++ b/functions/classes.py
@@ -12,7 +12,6 @@ import copy
 # TODO
 # - Docstrings
 # - Minimalbeispiel für KPIs -> halb umgesetzt -> mit get_components veranschaulichen
-# - Erlaube Clone bei Assembly (jedes child muss durch durch Klon ersetzt werden)
 # - Änderungen an Beispiel umsetzen
 
 # - Gute String Darstellung -> Ist so schon ok bisher? -> Nä Semester
@@ -174,6 +173,15 @@ class LegoAssembly:
     def __repr__(self):
         return f"LegoAssembly {self.label} [{self.uuid}]"
 
+    def clone(self, label: str = None) -> LegoAssembly:
+        if label is None:
+            label = self.label
+        clone = LegoAssembly(label, copy.deepcopy(self.properties), self.layer)
+        for component in self.components:
+            clone.add_component(component.clone())
+        for assembly in self.assemblies:
+            clone.add_assembly(assembly.clone())
+        return clone
 
 def print_assembly_tree(root, level=0, is_last=False):
     # print component
-- 
GitLab