From 4fed309e477bab259847f5512e440145d1aef3c3 Mon Sep 17 00:00:00 2001 From: Sven Date: Thu, 9 Jul 2026 15:51:15 +0200 Subject: [PATCH] Adding ability of branching --- main.py | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/main.py b/main.py index 44b0a9d..e361797 100644 --- a/main.py +++ b/main.py @@ -46,7 +46,7 @@ class BeamlineEditor(QtWidgets.QMainWindow, Ui_BeamlineGUI): self.elementDB={} self.savefile='' self.lines={} - self.branchingID=[] + self.branchingID={} self.PL=ProtoListe(0) self.loadFile('Layouts/SFTest2.json') @@ -210,10 +210,12 @@ class BeamlineEditor(QtWidgets.QMainWindow, Ui_BeamlineGUI): self.branchingID.clear() for key in self.elementDB.keys(): ele = self.elementDB[key] - if ele.branching: - self.branchingID.append(key) - print('Branching elements') - print(self.branchingID) + + if isinstance(ele,Dipole) and ele.branching: + self.branchingID[key] = False + print('Branching elements:') + for key in self.branchingID.keys(): + print('ID:',key) def flatten(self, node_id, case_num=1 ): print('Flatten beamline for case:', case_num) @@ -240,6 +242,7 @@ class BeamlineEditor(QtWidgets.QMainWindow, Ui_BeamlineGUI): def unwrap(self, name, node_id,line,case_num): print('Unwrapping Line: %s' % name) tree=self.editor.flatten(node_id,case_num) + secondBranch = False for ele in tree.path: self.report(ele, name) type = self.editor.getElementType(ele) @@ -251,7 +254,7 @@ class BeamlineEditor(QtWidgets.QMainWindow, Ui_BeamlineGUI): name1 = subline.Name ref = subline.firstElementID if ref in self.elementDB.keys(): - self.unwrap(name + name1, ref, subline,case_num) + secondBranch = self.unwrap(name + name1, ref, subline,case_num) else: print('Undefined reference in Line Container:', name + name1) elif type == 'Variable Line': @@ -270,8 +273,16 @@ class BeamlineEditor(QtWidgets.QMainWindow, Ui_BeamlineGUI): Ref='relative' line.append(self.elementDB[ele],sRef=sRef,Ref=Ref) self.elementDB[ele].Prefix=name - if tree.primary: - self.unwrap(name,tree.primary.node_id,line,case_num) + if ele in self.branchingID.keys(): + if self.branchingID[ele] is True: + return True + if secondBranch: + if tree.secondary: + self.unwrap(name, tree.secondary.node_id, line, case_num) + else: + if tree.primary: + self.unwrap(name,tree.primary.node_id,line,case_num) + return False