diff --git a/cfg/BMK.cfg b/cfg/BMK.cfg index ff038fc..102acaa 100644 --- a/cfg/BMK.cfg +++ b/cfg/BMK.cfg @@ -10,6 +10,7 @@ QM BG BP BX +PO # Kürzel die im Routing Prozess ignoriert werden sollen, zum Beispiel bauteile innerhalb der Schaltschränke @@ -32,6 +33,7 @@ BG = WD_I BG-829422026 = WD_I-829422026 BG-720002003 = WD_I-720002003 BX = WF_B, WD_I +PO = WD_PO # Anpassung von berechneter kabellänge um Betrag x aufgrund von z.b. an Sensor existierenden Kabelschwänzen diff --git a/cfg/allgemein.cfg b/cfg/allgemein.cfg index 33b4859..9dd5524 100644 --- a/cfg/allgemein.cfg +++ b/cfg/allgemein.cfg @@ -53,6 +53,19 @@ REALE_POSITION_IO 0-0-Omniflo_MOTOR 0-0_A-GRUPPE MOTOR +0-0_ILS_POT Pritsche +0-0_ILS_POT-CT +0-0_ILS_POT-DP +0-0_ILS_POT-MA +0-0_ILS_POT-RA +0-0_Omniflo_POT Pritsche +0-0_Omniflo_POT-CT +0-0_Omniflo_POT-DP +0-0_Omniflo_POT-MA +0-0_Omniflo_POT-RA +0-0_Omniflo_AM_POT_FS +0-0_Omniflo_AM_POT_Pritsche + # Maße des zur genauen Bestimmung der Mitte diff --git a/cfg/kabel.cfg b/cfg/kabel.cfg index 6b219f2..e1418cc 100644 --- a/cfg/kabel.cfg +++ b/cfg/kabel.cfg @@ -91,6 +91,20 @@ 85.0=726001060 95.0=726001061 +[WD_PO] +0.25=726001062 +0.5=726001040 +1.0=726001041 +5.0=726001045 +10.0=726001046 +15.0=726001047 +20.0=726001048 +25.0=726001049 +30.0=726001050 +35.0=726001051 +40.0=726001052 +45.0=726001053 +100.0=726001049 # Bezeichner jeder Verbindungsleitung (gekürzt) # Name of every cable (shortened) diff --git a/lib/drawdxf.py b/lib/drawdxf.py index 7a9aa77..a9b181d 100644 --- a/lib/drawdxf.py +++ b/lib/drawdxf.py @@ -609,7 +609,7 @@ def map_sensor_to_cable_cfg(plines): mapping = config_BMK["Cable-Mapping"] for pl in plines.kabel: - sensor_name = pl.id.split('-')[-1] + sensor_name = '-'.join(pl.id.split('-')[1:]) cable_length = round(pl.length/1000, 1) sensor_artinr = pl.s_artinr name_prefix = sensor_name[:2] diff --git a/lib/getpositions.py b/lib/getpositions.py index ad2a22c..e6e984a 100644 --- a/lib/getpositions.py +++ b/lib/getpositions.py @@ -1,16 +1,13 @@ import argparse import configparser -import ezdxf.document -from ezdxf import readfile +import ezdxf import os import sys import json import re -from shapely import Point -from itertools import combinations from ezdxf.addons import iterdxf import re -import time +from pathlib import Path """ @@ -97,6 +94,11 @@ def get_attributes_of_insert(insert): #print(f"Attribut Name: {attrib.dxf.tag}, Wert: {attrib.dxf.text}") ld[attr_tag] = attr_text + if attr_tag == "NAME": # die neueren Bläcke heissen nicht IO, sondern haben einen Namen + typ = get_type_of_name_cfg(attr_text) + id = attr_text + # pos = attrib.dxf.insert #Position aufzeichnen und bei Bedarf später mit REAL_POS überschreiben + # ld["pos"] = (round(pos.x, 1), round(pos.y, 1)) if attr_tag == "IO": typ = get_type_of_name_cfg(attr_text) id = attr_text @@ -389,11 +391,12 @@ def get_dxf_file(filepath): sys.exit(2) return doc -def check_file_in_work(work_dir, filename): +def check_file_in_work(work_dir:Path, filename:Path): fexists = True - if not os.path.exists(filename): - mypath = os.path.join(work_dir, filename) - if not os.path.exists(mypath): + if not filename.exists(): # dann schau im Work Ordner nach + mypath = work_dir.joinpath(filename) + ex = mypath.exists() + if not mypath.exists(): fexists = False else: mypath = filename @@ -455,6 +458,14 @@ def validate_configs(): else: print ("No inconsistencies found") +def check_environment_var(env_str:str) -> Path: + out_path = os.environ.get(env_str) + if out_path: + return Path(out_path) + else: + print(f"Umgebungsvariable {env_str} ist nicht gesetzt oder leer.") + exit() + if __name__ == '__main__': parser = argparse.ArgumentParser(description='fetches the x/y positions from a dxf file', prog='getpositions') @@ -467,13 +478,21 @@ if __name__ == '__main__': args = parser.parse_args() - out_dir = os.environ.get('PROJECT_DATA') - work_dir = os.environ.get('PROJECT_WORK') - config_dir = os.environ.get("PROJECT_CFG") - - filename = args.filename - (dxf_path, dexists) = check_file_in_work(work_dir, filename) + out_dir = check_environment_var('PROJECT_DATA') + work_dir = check_environment_var('PROJECT_WORK') + config_dir = check_environment_var("PROJECT_CFG") + filename = Path(args.filename) + if not filename.suffix == ".dxf": + print("only available for .dxf files") + exit() + + (dxf_path, dexists) = check_file_in_work(work_dir, filename) + if dexists == False: + print("no such file ") + parser.print_help() + exit() + if dxf_is_binary(dxf_path): # Wenn dxf eine binary ist, dann komplett parsen und modelspace anlegen print("Given .dxf-file is binary dxf. Proceeding to read file. Watch RAM-usage.") doc = get_dxf_file(dxf_path)