diff --git a/lib/drawdxf.py b/lib/drawdxf.py index a94a7bb..d08c117 100644 --- a/lib/drawdxf.py +++ b/lib/drawdxf.py @@ -43,14 +43,8 @@ def add_polyline(msp, points:Polyline, dxf_attribs): def new_dxf(json_file, out_path, dxf_file=False): """ creates a new dxf file with a polyline inside which is created by the given json file """ - with open(json_file, encoding='utf-8') as fh: - data = json.load(fh) - - anlage = from_dict( - data_class=Polylines, - data=data - ) - #print(anlage) + print("creating dxf ..") + anlage = model_from_json(json_file) if dxf_file: # bestehende DXF-Datei laden @@ -73,22 +67,26 @@ def new_dxf(json_file, out_path, dxf_file=False): add_polyline(msp, pl, dxfattribs) doc.saveas(out_path) + print("done") +def model_from_json(json_file): + with open(json_file, encoding='utf-8') as fh: + data = json.load(fh) + + anlage = from_dict( + data_class=Polylines, + data=data + ) + return anlage + +def export_excel(json_file, out_path): # Hier für Excel Export - excel_path = out_path.replace(".dxf", "_kabellaengen.xlsx") - write_excel_from_json(anlage, excel_path) + print("creating excel file ..") + anlage = model_from_json(json_file) + write_excel_from_json(anlage, out_path) + print("done") -def check_file_in_work(work_dir, filename): - fexists = True - if not os.path.exists(filename): - mypath = os.path.join(work_dir, filename) - if not os.path.exists(mypath): - fexists = False - else: - mypath = filename - return (mypath, fexists) - def write_excel_from_json(anlage:Polylines, outpath:str): wb = Workbook() length_summary = defaultdict(int) @@ -114,12 +112,23 @@ def write_excel_from_json(anlage:Polylines, outpath:str): wb.save(outpath) +def check_file_in_work(work_dir, filename): + fexists = True + if not os.path.exists(filename): + mypath = os.path.join(work_dir, filename) + if not os.path.exists(mypath): + fexists = False + else: + mypath = filename + return (mypath, fexists) + if __name__ == '__main__': parser = argparse.ArgumentParser(description='draws a dxf file with the given cable coordinates', prog='drawdxf') parser.add_argument('-f', '--filename', action='store', required=True, help='this json file contains all cables and its coordinates which should be drawn. Saved with an unique timestamp', metavar='myfile.json') parser.add_argument('-d', '--dxf', action='store', help='this dxf drawing will be copied and the new layer with the cables will be added', metavar='myfile.dxf') - parser.add_argument('-n', '--new', action='store', help='create a new dxf file with cables in it. Name is basename and a timtestamp') + parser.add_argument('-n', '--new', action='store', help='create a new dxf file with cables in it. Name is basename and a timestamp') + parser.add_argument('-x', '--excel', action='store', help='create a xlsx file with cables data', metavar='allCables.xls') args = parser.parse_args() @@ -147,6 +156,9 @@ if __name__ == '__main__': #timestamp = datetime.now().strftime(basename+"_%Y%m%d-%H%M%S.dxf") #timestamp = datetime.now().strftime("%Y%m%d-%H%M%S.dxf") out_path = os.path.join(work_dir, args.new) - res_pos = new_dxf(json_path, out_path) - \ No newline at end of file + + if args.excel: + excel_path = os.path.join(work_dir, args.excel) + export_excel(json_path, excel_path) +