# Dokumentation der Funktionsweise einzelner Funktionen und Ausgaben aus `plant.py` bzw. `routing.py` ## Aufbau des Graphen in unterschiedlichen Ausbaustufen Die nachfolgenden Bilder zeigen den schrittweisen Aufbau des Graphen aus dem System: 1. **Nur Racks** ![Graph nur mit Racks](img\plant.py\racks.png) 2. **Racks + Sensoren** ![Graph mit Racks und Sensoren](img\plant.py\racks_sensors.png) 3. **Racks + Sensoren + Unterverteiler** ![Kompletter Graph mit Racks, Sensoren und Unterverteilern](img\plant.py\racks_sensors_dists.png) --- ## Funktionsweise ausgewählter Funktionen ### Beispiel 1: `join_racks` Problematik: Racks sind in dxf-Dateien teileweise nicht formschlüssig aneinander angefügt. -> Echte Schnittpunkte sowie "beinahe" Schnittpunkte im Toleranzbereich müssen identifiziert werden und die Kabeltrassen dort verbunden werden. Hierfür wird "Toleranz-Kreis" festgelegt, welcher das Rack entlangläuft: ![Step 1](img\join_racks\join_racks_1.png) ![Step 2](img\join_racks\join_racks_2.png) Bei einem Schnittpunkt des Kreises mit einem anderen Rack, wird der Aufpunkt des gefunden Racks mit dem entlangzulaufenden Rack verbunden und ein Knoten an dieser Stelle erstellt: ![Step 3](img\join_racks\join_racks_3.png) ![Step 4](img\join_racks\join_racks_4.png) ### Beispiel 2: `connect_sensors_to_racks` Problematik: Sensoren liegen nicht direkt auf Racks und haben keine Information, auf welchem Rack sie am besten angebunden werden. -> Algorithmus sucht ausgeend von realem Sensor Punkt das nächstgelegene Rack und stelle die kürzeste Vebindung mittels einem "virtuellen Rack" her. Situation: Horizontales (R1) und vetikales (R2) Rack. Sensor (S) nahe dem Kreuzungspunkt. ![Step 0](img\connect_sensors_to_racks\connect_sensors_to_racks_1.png) Schritt 1: Zeichnen eines Kreises um den Sensor. Schnittpunkt mit Rack? ![Step 1](img\connect_sensors_to_racks\connect_sensors_to_racks_2.png) Schritt 2: Wenn kein Schnittpunkt -> vergrößern des Kreises ![Step 2](img\connect_sensors_to_racks\connect_sensors_to_racks_3.png) Schritt 3: Erzeugung des Aufpunktes auf geschnittenem Rack und verbinden des Aufpunktes mit dem Sensorpunkt via "virtuellem Rack" (vR1) ![Step 3](img\connect_sensors_to_racks\connect_sensors_to_racks_4.png)