From 376a3da86a227c62c77391fc752eb59c22ed168c Mon Sep 17 00:00:00 2001 From: mistangl Date: Mon, 28 Apr 2025 10:37:30 +0200 Subject: [PATCH] erste Config dazu. Erste Version von getpositions mit Argumentparser erstellt --- cfg/layer.cfg | 9 ++++++ lib/getpositions.py | 76 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 85 insertions(+) create mode 100644 cfg/layer.cfg create mode 100644 lib/getpositions.py diff --git a/cfg/layer.cfg b/cfg/layer.cfg new file mode 100644 index 0000000..d2202b1 --- /dev/null +++ b/cfg/layer.cfg @@ -0,0 +1,9 @@ +[Eingänge] +0-0_ILS_EINGANG + +[Ausgänge] +AUSGANG +MOTOR + +[Pritsche] +PRITSCHE_100-60-SCHRAFF \ No newline at end of file diff --git a/lib/getpositions.py b/lib/getpositions.py new file mode 100644 index 0000000..bb1e089 --- /dev/null +++ b/lib/getpositions.py @@ -0,0 +1,76 @@ +import argparse +import configparser +import ezdxf +import os + +""" +Dieses Programm: +- liest die dxf Datei und holt sich von den Layern der dxf Datei die Positionen ++ der Motoren, Sensoren und Aktoren ++ der Unterverteiler ++ der Polylinien der Kabelpritschen +- erzeugt daraus eine .json Datei im Work Ordner + +""" +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 get_input_positions(doc): + """hole alle Positionen der Eingänge + """ + pass + +def get_output_positions(doc): + """hole alle Positionen der Ausgänge + """ + pass + +def get_rack_positions(doc): + """hole alle Positionen aller Kabelpritschen + """ + pass + +def get_dxf_file(filepath): + """hole das dxf file + """ + try: + doc = ezdxf.readfile(filepath) + except IOError: + print(f"Not a DXF file or a generic I/O error.") + sys.exit(1) + except ezdxf.DXFStructureError: + print(f"Invalid or corrupted DXF file.") + sys.exit(2) + return doc + +if __name__ == '__main__': + parser = argparse.ArgumentParser(description='fetches positions from a dxf file', prog='get_positions') + parser.add_argument('-f', '--filename', action='store', required=True, default="ST_6300_Steuerungstestlayout1_neueBloecke.dwg", help='which file should be fetched', metavar='file') + parser.add_argument('-i', '--input', action='store_true', help='fetch all position of inputs', metavar='input') + parser.add_argument('-o', '--output', action='store_true', help='fetch all positions of outputs', metavar='output') + parser.add_argument('-r', '--rack', action='store_true', help='fetch all positions of all cable racks', metavar='output') + + args = parser.parse_args() + + out_dir = os.environ.get('PROJECT_DATA') + work_dir = os.environ.get('PROJECT_WORK') + filename = args.filename + + doc = get_dxf_file(os.path.join(out_dir, filename)) + + res = dict() + if args.input: + res = get_input_positions(doc) + if args.output: + get_input_positions(doc) + if args.rack: + get_input_positions(doc) + + else: + parser.print_help()