mappings wird auch als Ergebnis exportiert
This commit is contained in:
+37
-4
@@ -1,7 +1,7 @@
|
|||||||
import argparse
|
import argparse
|
||||||
import configparser
|
import configparser
|
||||||
import ezdxf.document
|
import ezdxf.document
|
||||||
from ezdxf.math import Matrix44
|
from ezdxf import readfile
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
import math
|
import math
|
||||||
@@ -82,6 +82,26 @@ def get_input_positions(msp: ezdxf.document.Drawing.modelspace):
|
|||||||
allIds[id] = ld
|
allIds[id] = ld
|
||||||
return allIds
|
return allIds
|
||||||
|
|
||||||
|
def create_mappings(positions:dict, distributors:dict) -> dict:
|
||||||
|
unterverteiler_pfad = ""
|
||||||
|
dnamen = dict()
|
||||||
|
# sammle die Sensoren mit ihren zugehörigen Unterverteilern
|
||||||
|
sensor2unterverteiler = dict()
|
||||||
|
for sensorname,v in positions.items():
|
||||||
|
unterverteiler_pfad = v["KENNZEICHNUNG"]
|
||||||
|
[anlage, verteiler_karte] = unterverteiler_pfad.split('+')
|
||||||
|
[verteiler, karte] = verteiler_karte.split('-')
|
||||||
|
if not verteiler in dnamen:
|
||||||
|
dnamen[verteiler] = True
|
||||||
|
sensor2unterverteiler[sensorname] = verteiler
|
||||||
|
|
||||||
|
# jetzt zu jedem Unterverteiler die zugehörigen Sensoren merken
|
||||||
|
uv2sensor = dict()
|
||||||
|
for sensorname,verteiler in sensor2unterverteiler.items():
|
||||||
|
if verteiler not in uv2sensor:
|
||||||
|
uv2sensor[verteiler] = list()
|
||||||
|
uv2sensor[verteiler].append(sensorname)
|
||||||
|
return uv2sensor
|
||||||
|
|
||||||
def get_subdistributor_positions(msp):
|
def get_subdistributor_positions(msp):
|
||||||
"""hole alle Positionen der Unterverteiler !!UV-Positionen bereits "Mitte-Mitte"!!
|
"""hole alle Positionen der Unterverteiler !!UV-Positionen bereits "Mitte-Mitte"!!
|
||||||
@@ -153,7 +173,9 @@ def get_dxf_file(filepath):
|
|||||||
"""hole das dxf file
|
"""hole das dxf file
|
||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
|
print("reading file ..", end='')
|
||||||
doc = ezdxf.readfile(filepath)
|
doc = ezdxf.readfile(filepath)
|
||||||
|
print("done")
|
||||||
except IOError:
|
except IOError:
|
||||||
print(f"Not a DXF file or a generic I/O error.")
|
print(f"Not a DXF file or a generic I/O error.")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
@@ -171,6 +193,7 @@ if __name__ == '__main__':
|
|||||||
parser.add_argument('-w', '--write', action='store_true', help='write results into a json file')
|
parser.add_argument('-w', '--write', action='store_true', help='write results into a json file')
|
||||||
parser.add_argument('-c', '--console', action='store_true', help='print results to output')
|
parser.add_argument('-c', '--console', action='store_true', help='print results to output')
|
||||||
|
|
||||||
|
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
out_dir = os.environ.get('PROJECT_DATA')
|
out_dir = os.environ.get('PROJECT_DATA')
|
||||||
@@ -178,13 +201,20 @@ if __name__ == '__main__':
|
|||||||
config_dir = os.environ.get("PROJECT_CFG")
|
config_dir = os.environ.get("PROJECT_CFG")
|
||||||
filename = args.filename
|
filename = args.filename
|
||||||
|
|
||||||
dxf_path = os.path.join(work_dir, filename)
|
if not os.path.exists(filename):
|
||||||
|
dxf_path = os.path.join(work_dir, filename)
|
||||||
|
if not os.path.exists(dxf_path):
|
||||||
|
print(f'no such file {dxf_path}')
|
||||||
|
raise FileExistsError
|
||||||
|
else:
|
||||||
|
dxf_path = filename
|
||||||
doc = get_dxf_file(dxf_path) # type: ignore
|
doc = get_dxf_file(dxf_path) # type: ignore
|
||||||
msp = doc.modelspace()
|
msp = doc.modelspace()
|
||||||
|
|
||||||
res_pos = dict()
|
res_pos = dict()
|
||||||
res_dist = dict()
|
res_dist = dict()
|
||||||
res_rac = dict()
|
res_rac = dict()
|
||||||
|
res_mappings = dict()
|
||||||
if args.sensors or args.dists or args.rack:
|
if args.sensors or args.dists or args.rack:
|
||||||
|
|
||||||
config = configparser.ConfigParser(allow_no_value=True)
|
config = configparser.ConfigParser(allow_no_value=True)
|
||||||
@@ -201,13 +231,16 @@ if __name__ == '__main__':
|
|||||||
output_results['distributors'] = res_dist
|
output_results['distributors'] = res_dist
|
||||||
if args.console:
|
if args.console:
|
||||||
print(to_json(res_dist))
|
print(to_json(res_dist))
|
||||||
write_results(to_json(res_dist), work_dir, "subdistributors.json")
|
if args.dists and args.sensors:
|
||||||
|
res_mappings = create_mappings(res_pos, res_dist)
|
||||||
|
output_results['mappings'] = res_mappings
|
||||||
|
if args.console:
|
||||||
|
print(to_json(res_mappings))
|
||||||
if args.rack:
|
if args.rack:
|
||||||
res_rac = get_rack_positions(msp)
|
res_rac = get_rack_positions(msp)
|
||||||
output_results['racks'] = res_rac
|
output_results['racks'] = res_rac
|
||||||
if args.console:
|
if args.console:
|
||||||
print(to_json(res_rac))
|
print(to_json(res_rac))
|
||||||
write_results(to_json(res_rac), work_dir, "racks.json")
|
|
||||||
if args.write:
|
if args.write:
|
||||||
basename = os.path.splitext(args.filename)[0]
|
basename = os.path.splitext(args.filename)[0]
|
||||||
write_results(to_json(output_results), work_dir, basename+"_positions.json")
|
write_results(to_json(output_results), work_dir, basename+"_positions.json")
|
||||||
|
|||||||
+32
-2
@@ -1,4 +1,34 @@
|
|||||||
matplotlib=3.10.0
|
build==1.2.2.post1
|
||||||
networkx==3.4.2
|
click==8.1.8
|
||||||
|
colorama==0.4.6
|
||||||
|
contourpy==1.3.1
|
||||||
|
cycler==0.12.1
|
||||||
dacite==1.9.2
|
dacite==1.9.2
|
||||||
|
dataclasses==0.6
|
||||||
|
et-xmlfile==1.1.0
|
||||||
ezdxf==1.4.1
|
ezdxf==1.4.1
|
||||||
|
fonttools==4.57.0
|
||||||
|
kiwisolver==1.4.8
|
||||||
|
matplotlib==3.10.0
|
||||||
|
networkx==3.4.2
|
||||||
|
numpy==1.26.1
|
||||||
|
openpyxl==3.1.2
|
||||||
|
packaging==24.2
|
||||||
|
pandas==2.1.1
|
||||||
|
pillow==11.1.0
|
||||||
|
pip-tools==7.4.1
|
||||||
|
PyMuPDF==1.25.5
|
||||||
|
pyparsing==3.2.3
|
||||||
|
pyproject_hooks==1.2.0
|
||||||
|
PySide6==6.9.0
|
||||||
|
PySide6_Addons==6.9.0
|
||||||
|
PySide6_Essentials==6.9.0
|
||||||
|
python-dateutil==2.8.2
|
||||||
|
pytz==2023.3.post1
|
||||||
|
setuptools==80.0.0
|
||||||
|
shapely==2.1.0
|
||||||
|
shiboken6==6.9.0
|
||||||
|
six==1.16.0
|
||||||
|
typing_extensions==4.13.1
|
||||||
|
tzdata==2023.3
|
||||||
|
wheel==0.45.1
|
||||||
|
|||||||
Reference in New Issue
Block a user