Schalter von -o auf -w geändert. Nimmt Parameter json File. Prints in getpositions entfernt.

This commit is contained in:
2025-05-20 11:33:20 +02:00
parent eb175ea768
commit a48c39018c
6 changed files with 237 additions and 71 deletions
+28 -9
View File
@@ -13,6 +13,18 @@ from plant import Anlage
def load_json(jsonfilename):
with open(jsonfilename, encoding='utf-8') as fh:
return json.load(fh)
def write_results(jsnResults, outdir, filename):
""" write results to a json file
"""
print("writing results to a json file ...")
outfile = os.path.join(outdir, filename)
with open(outfile, 'w', encoding='utf-8') as fh:
fh.write(jsnResults)
print("done")
def to_json(d, pretty: bool = True) -> str:
return json.dumps(d, indent=2 if pretty else None, ensure_ascii=False, default=str) #ensure_ascii false für darstellung von "ue"
def create_plant(racks:dict, sensors:dict, distributors:dict, mapping:dict):
@@ -66,6 +78,8 @@ def create_plant(racks:dict, sensors:dict, distributors:dict, mapping:dict):
if args.graph:
draw_graph(G,an)
return paths
def draw_graph(G:nx.Graph, an:Anlage):
pos = an.get_node_positions()
@@ -75,10 +89,10 @@ def draw_graph(G:nx.Graph, an:Anlage):
plt.show()
def prepare_data(rawdata:dict):
sensors = data["sensors"]
subdists = data["distributors"]
racks = data["racks"]
mapping = data["mapping"]
sensors = rawdata["sensors"]
subdists = rawdata["distributors"]
racks = rawdata["racks"]
mapping = rawdata["mapping"]
dracks = dict()
for rname,lp in racks:
if rname not in dracks:
@@ -93,6 +107,7 @@ if __name__ == "__main__":
parser.add_argument('-f', '--filename', action='store', required=True, default="easy_position.json", help='file with all informations about positions gathered from getpositions', metavar='my_positions.json')
parser.add_argument('-c', '--console', action='store_true', help='Ausgabe auf Konsole')
parser.add_argument('-g', '--graph', action='store_true', help='Zeichnet den Graphen der Anlage')
parser.add_argument('-w', '--write', action='store', help='erstellt Ausgabe-file für das Zeichnen von Kabeln in drawdxf')
args = parser.parse_args()
@@ -104,16 +119,20 @@ if __name__ == "__main__":
jsonfilename = args.filename
sensors_path = os.path.join(work_dir, jsonfilename)
# Einlesen
# Einlesen und Vorbereiten der Daten
rawdata = load_json(sensors_path)
(racks, sensors, subdists, mapping) = prepare_data(rawdata)
# virtuelle Anlage erstellen
plant = create_plant(racks, sensors, subdists, mapping)
# Erstelle Anlage
cable_paths = plant
# Ausgabe schreiben
if args.write:
basename = os.path.splitext(args.write)[0]
write_results(to_json(cable_paths), work_dir, f"{basename}.json")