diff --git a/functions/classes.py b/functions/classes.py index 1d9c351378e34b29c236f9f598effb4672daee9c..abc3eee0b453efdae0423ee35416af19354c62e2 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