mappings wird auch als Ergebnis exportiert
This commit is contained in:
+37
-4
@@ -1,7 +1,7 @@
|
||||
import argparse
|
||||
import configparser
|
||||
import ezdxf.document
|
||||
from ezdxf.math import Matrix44
|
||||
from ezdxf import readfile
|
||||
import os
|
||||
import sys
|
||||
import math
|
||||
@@ -82,6 +82,26 @@ def get_input_positions(msp: ezdxf.document.Drawing.modelspace):
|
||||
allIds[id] = ld
|
||||
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):
|
||||
"""hole alle Positionen der Unterverteiler !!UV-Positionen bereits "Mitte-Mitte"!!
|
||||
@@ -153,7 +173,9 @@ def get_dxf_file(filepath):
|
||||
"""hole das dxf file
|
||||
"""
|
||||
try:
|
||||
print("reading file ..", end='')
|
||||
doc = ezdxf.readfile(filepath)
|
||||
print("done")
|
||||
except IOError:
|
||||
print(f"Not a DXF file or a generic I/O error.")
|
||||
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('-c', '--console', action='store_true', help='print results to output')
|
||||
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
out_dir = os.environ.get('PROJECT_DATA')
|
||||
@@ -178,13 +201,20 @@ if __name__ == '__main__':
|
||||
config_dir = os.environ.get("PROJECT_CFG")
|
||||
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
|
||||
msp = doc.modelspace()
|
||||
|
||||
res_pos = dict()
|
||||
res_dist = dict()
|
||||
res_rac = dict()
|
||||
res_mappings = dict()
|
||||
if args.sensors or args.dists or args.rack:
|
||||
|
||||
config = configparser.ConfigParser(allow_no_value=True)
|
||||
@@ -201,13 +231,16 @@ if __name__ == '__main__':
|
||||
output_results['distributors'] = res_dist
|
||||
if args.console:
|
||||
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:
|
||||
res_rac = get_rack_positions(msp)
|
||||
output_results['racks'] = res_rac
|
||||
if args.console:
|
||||
print(to_json(res_rac))
|
||||
write_results(to_json(res_rac), work_dir, "racks.json")
|
||||
if args.write:
|
||||
basename = os.path.splitext(args.filename)[0]
|
||||
write_results(to_json(output_results), work_dir, basename+"_positions.json")
|
||||
|
||||
+32
-2
@@ -1,4 +1,34 @@
|
||||
matplotlib=3.10.0
|
||||
networkx==3.4.2
|
||||
build==1.2.2.post1
|
||||
click==8.1.8
|
||||
colorama==0.4.6
|
||||
contourpy==1.3.1
|
||||
cycler==0.12.1
|
||||
dacite==1.9.2
|
||||
dataclasses==0.6
|
||||
et-xmlfile==1.1.0
|
||||
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