validate_anlage, stabiler TRO-Schluessel, Verbindungen aus BricsCAD, Zeichnung aus der Anlagen-JSON
- validate_anlage.py (+ bin-Wrapper): Pruefung vor der SCL fuer beide Wege (Struktur, Zuordnungen, Aktualitaet der JSON, Korrekturen ohne Ziel); scl_skeleton ruft sie auf (Warnung, --strict bricht ab) - DerivedTro.key: stabiler Schluessel (ID der ID-Datei); hw_overrides.ini, <csv>_jam_names.ini und tro_overrides.ini greifen ueber ID oder Schluessel, eine Umbenennung in TRO_EDIT laesst sie bestehen; JAM_AREA traegt KEY - --read-tros liest die CONNECTION_ARROW-Bloecke mit -> [<csv>.edit_connections]; tro_flow.apply_connection_edits wendet sie nach link_tros an - tro_annotate --anlage zeichnet Marker/Verbindungen aus der Anlagen-JSON - INI-Korrekturen auch mit BOM lesbar (utf-8-sig) - Ablauf CSV/DXF+TIA -> Anlagen-JSON -> (BricsCAD) -> SCL in doc/Python_Scripts.md Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -59,6 +59,7 @@ from pydantic import BaseModel, ValidationError
|
||||
|
||||
from e_planning import EPLAN_SCHEMA, EplanDocument
|
||||
from hw_import import HardwareDocument
|
||||
from validate_anlage import validate
|
||||
from material_flow import env_dir
|
||||
from model import ANLAGE_SCHEMA, SCHEMA, AnlageDocument, TroDocument
|
||||
from scl_context import (
|
||||
@@ -441,6 +442,20 @@ def main(argv: list[str] | None = None) -> int:
|
||||
print(f"FEHLER: {json_file} enthaelt keine TROs.", file=sys.stderr)
|
||||
return 1
|
||||
|
||||
# Pruefung vor der SCL (validate_anlage): Fehler brechen nur mit --strict
|
||||
# ab, sonst stehen sie als Warnung im Bericht.
|
||||
pruefung = validate(json_file, hw_file=_in_results(args.hw, results) if args.hw else None,
|
||||
results=json_file.parent)
|
||||
for befund in pruefung.befunde:
|
||||
if befund.stufe == "FEHLER" or args.strict:
|
||||
print(f"{'FEHLER' if args.strict else 'WARNUNG'}: {befund.bereich}: {befund.text}",
|
||||
file=sys.stderr)
|
||||
if args.strict and not pruefung.bereit():
|
||||
print(f" (--strict) {pruefung.anzahl_fehler} Fehler in der Pruefung - keine "
|
||||
f"SCL geschrieben (Details: bin/validate_anlage --json {json_file.name}).",
|
||||
file=sys.stderr)
|
||||
return 1
|
||||
|
||||
templates = None
|
||||
if args.templates is not None:
|
||||
ordner = Path(args.templates)
|
||||
@@ -550,6 +565,8 @@ def main(argv: list[str] | None = None) -> int:
|
||||
print(f"Gegenpruefung = {len(unbekannt)} unbekannte Namen ({hw_file.name})")
|
||||
if jam_overrides:
|
||||
print(f"Staubereiche = {len(jam_overrides)} Korrekturen aus {jam_file}")
|
||||
print(f"Pruefung = {pruefung.anzahl_fehler} Fehler, {pruefung.anzahl_warnungen} "
|
||||
f"Warnungen (validate_anlage)")
|
||||
print(f"Offene Stellen = {offen} (Marker '{TODO}')")
|
||||
print(f"SCL = {out_file}")
|
||||
print("================================================================")
|
||||
|
||||
Reference in New Issue
Block a user