diff --git a/lib/plant.py b/lib/plant.py index 19c19d7..14e868c 100644 --- a/lib/plant.py +++ b/lib/plant.py @@ -14,6 +14,10 @@ import shapely # Globale Variable, die in main aufgerufen wird und steuert ob Graphen in unittests gezeichnet werden draw = False class PointSorter: + ''' Klasse, die Punkte sortiert. + Die Punkte werden in der Liste self.points gespeichert. + Die Punkte werden sortiert nach x- und y-Koordinate. + ''' def __init__(self): self.points = [] @@ -34,6 +38,9 @@ def to_json(d, pretty: bool = True) -> str: return json.dumps(d, indent=2 if pretty else None, default=str) #ensure_ascii false für darstellung von "ue" class NodeIDs(): + ''' Klasse, die Punkte verwaltet und NodeIDs zu Punkten zuordnet. + Die NodeIDs sind ganze Zahlen, die die Position der Punkte in der Liste self.points repräsentieren. + ''' def __init__(self, points=[]): self._counter = 0 self._cord2id = dict() @@ -41,6 +48,8 @@ class NodeIDs(): self.add_points(points) def add_point(self, point:Point): + ''' Fügt den Punkt unter einer neuen NodeId hinzu. + ''' if self.point_exists(point): return True self._counter += 1 @@ -78,6 +87,9 @@ class NodeIDs(): return len(self._cord2id.keys()) def get_points(self, nids:list[int]) -> list[Point]: + ''' Gibt zu einer Liste von NodeIDs die zugehörigen Punkte zurück. + Die Punkte werden in der gleichen Reihenfolge wie die NodeIDs zurückgegeben. + ''' ret = list() for n in nids: c = self.get_point(n) @@ -87,6 +99,9 @@ class NodeIDs(): def show(self): return self._id2cord class RackIDs(): + ''' Klasse, die Racks verwaltet und Rack-Racks und Rack-Equipment miteinander verbindet. + Die Racks werden als Linien in den STR-Baum eingefügt. + ''' def __init__(self, tol_snap = 200.0): self._point2rack = dict() self._rack2begend = dict() @@ -96,12 +111,18 @@ class RackIDs(): self._rack_tree = None def add_rack(self, beg:Point, end:Point, name:str): + ''' Fügt einen Rack hinzu. + Fügt die Anfangs- und Endpunkte des Racks zu den Racks hinzu. + ''' self.add_point_to_rack(beg, name) self.add_point_to_rack(end, name) self._rack2begend[name] = (beg, end) # Anfangs und Endpunkte zu Rack Namen merken def add_racks(self, racks:dict): + ''' Fügt Racks hinzu. + Fügt die Anfangs- und Endpunkte der Racks zu den Racks hinzu. + ''' for name,v in racks.items(): if len(v) == 2: self.add_rack(v[0], v[1], name) @@ -151,6 +172,9 @@ class RackIDs(): return ret_sorted def _build_rack_strtree(self): + ''' Erzeugt einen STR-Baum aus den Racks. + Die Racks werden als Linien in den STR-Baum eingefügt. + ''' self._rack_lines = [] self._rack_map = {} for r_name, pts in self.get_racks_borders().items(): @@ -160,6 +184,9 @@ class RackIDs(): self._rack_tree = STRtree(self._rack_lines) def join_racks_str(self): + ''' Verbindet Racks miteinander. + Die Racks werden als Linien in den STR-Baum eingefügt. + ''' if self._rack_tree is None: self._build_rack_strtree() @@ -192,7 +219,10 @@ class RackIDs(): connrackname = f"c-{rnames[l2]}-{rnames[l1]}" self.add_rack(pt, snap_point, connrackname) - def rack_is_horizontal(self, name): + def rack_is_horizontal(self, name): + ''' Gibt True zurück, wenn der Rack horizontal ist. + False, wenn der Rack vertikal ist. + ''' [pa, pe] = self._rack2begend[name] if pa.y == pe.y: return True