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:
2026-10-27 14:32:10 +01:00
parent 6c8c235287
commit 1ac17b95e2
13 changed files with 1100 additions and 48 deletions
+13 -1
View File
@@ -212,7 +212,9 @@ byte — rewrite them (`SKEL_UPDATE_GOLDEN=1`) only for a reviewed, intended cha
types, rows from `*TRO-SLOTS*`, pick-in-drawing from the XRECORD `SPS_SKEL_PARTS`) edits
them, and `--read-tros` writes the differences as `edit`/`edit_add` sections into
`cfg/tro_overrides.ini` — the only kinds of that file `tro_flow` applies
(`tro_flow.apply_edits`, keyed on the stable ID-file IDs).
(`tro_flow.apply_edits`, keyed on the stable ID-file IDs); since 2026-10-27 also the
connection blocks (`edit_connections`, `tro_flow.apply_connection_edits`). With
`--anlage` the markers/connections are drawn from the plant JSON itself.
4. **`lib/tro_extract.py`** — **parked**: reads the annotated DXF back into the old
`sps_skel-tro-extract-v1` JSON, which `scl_skeleton.py` no longer accepts. Not deleted, not
extended; if drawing edits (`TRO_INSERT`/`TRO_EDIT`) are ever needed again, it should
@@ -248,6 +250,16 @@ byte — rewrite them (`SKEL_UPDATE_GOLDEN=1`) only for a reviewed, intended cha
open/contradicting bindings stay `TODO(E-Planung)`;
inserted names are checked against `<projekt>_hw.json` (`--strict` aborts). Templates are
unchanged. See `doc/Python_Scripts.md` §5b.
9. **`lib/validate_anlage.py`** (implemented 2026-10-27) — the gate before SCL for both paths
(no changes / after BricsCAD edits): structure, bindings, freshness (plant JSON older than
TRO-JSON/hw.json/hw_overrides → rerun merge), corrections that match nothing. Exit 5 = not
ready; `scl_skeleton` calls it (warns, `--strict` aborts). The ordered command list for
both paths is in `doc/Python_Scripts.md` §1 "The workflow, step by step".
Since 2026-10-27 every TRO carries a stable `key` (ID-file ID) next to its display `id`;
all corrections (`hw_overrides.ini`, `<csv>_jam_names.ini`, `tro_overrides.ini`) resolve by
ID **or** key, so a rename in `TRO_EDIT` keeps them. The plant JSON is never hand-patched —
it is regenerated from inputs + these overlays.
What is **not** built out yet, relative to the original two-tool design: