tro_flow: --use-overrides, --from-connect und --geometry entfernt
TROs, Typen und Verbindungen kommen nur noch aus dem Layout. Fehler der Ableitung werden im Code behoben, nicht in einer Korrekturdatei. - tro_flow: Optionen --use-overrides/--no-overrides, --from-connect, --geometry, --geo-tol-mm entfernt; analyse_tros/derive_tros ohne overrides/resolve_host/count_exits-Parameter, Analysis.overrides entfernt, Override-Schritte 4b/4c/5b, Doku-Abschnitt "6. Manuelle Korrekturen" und die Override-Zeilen im Bericht entfernt; connect.ini ist reine Ausgabe - lib/tro_geometry.py geloescht (nur von --geometry genutzt), shapely aus requirements.txt - tro_overrides: apply_splits/_merges/_connections/_overrides und load_connect_ini entfernt - nur noch load_overrides fuer material_flow.py --connect - doc/Python_Scripts.md nachgezogen Gegenprobe: DOT (beide Layouts) und connect.ini fuer HundM05 und Mubea unveraendert (28 bzw. 26 Verbindungen), Doku nur ohne den leeren Abschnitt 6. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
a5fab7e2dc
commit
e0defad011
+22
-52
@@ -55,12 +55,8 @@ Supporting libraries (no CLI of their own, imported by the tools above):
|
||||
(rotation + offset) transform between the CSV export's coordinate system and
|
||||
the DXF drawing's.
|
||||
- **`lib/tro_overrides.py`** — reads the hand-maintained
|
||||
`%SKEL_CFG%\tro_overrides.ini` (type corrections, open points, TRO merges)
|
||||
that survive re-runs of `tro_flow.py`. See §6a.
|
||||
- **`lib/tro_geometry.py`** — resolves a separator's host and a switch's exit
|
||||
count for `tro_flow.py` **directly from the part world-coordinates** (shapely
|
||||
`STRtree`) instead of from the CSV `Zuordnung`/`Nachbarn` columns, for exports
|
||||
where those columns have gaps. Only used with `tro_flow.py --geometry`. See §6b.
|
||||
`%SKEL_CFG%\tro_overrides.ini`; only `material_flow.py --connect` still uses
|
||||
it. See §6a.
|
||||
|
||||
Separate, documentation-only tool (not part of the generator pipeline):
|
||||
|
||||
@@ -99,8 +95,7 @@ Conventions shared by the CLI tools:
|
||||
output file paths); non-fatal findings are printed as `?`/`!` lines and also
|
||||
do not stop the run.
|
||||
- Requires the packages pinned in `requirements.txt` (`pydantic>=2.0.0`;
|
||||
`ezdxf>=1.4.0` for `tro_annotate.py` only; `shapely>=2.1` for
|
||||
`tro_flow.py --geometry` only) — run `bin\install_py.bat` once.
|
||||
`ezdxf>=1.4.0` for `tro_annotate.py` only) — run `bin\install_py.bat` once.
|
||||
- `--tosvg` needs Graphviz's `dot` (or `neato`, for `tro_flow.py
|
||||
--use-cords`) on `PATH`, or the `GRAPHVIZ_DOT` environment variable pointing
|
||||
at the `dot` executable. `bin/material_flow.bat`/`.sh` and `bin/tro_flow.bat`/`.sh`
|
||||
@@ -284,8 +279,12 @@ colors all come from `lib/tro_catalog.py` — nothing is hard-coded here.
|
||||
| `--tosvg` | — | off | Also render the TRO flow diagram to `.svg`. |
|
||||
| `--use-cords` (alias `--use-coords`) | — | off | Place every TRO at the centroid of the components it was built from and render with `neato -n` (fixed positions) instead of `dot`'s computed layout, so the diagram matches the plant layout. Only has an effect together with `--tosvg`; fails if any TRO has no coordinate. |
|
||||
| `--doc` | — | off | Also write a Markdown report (`<name>_tro_doc.md`) with the TRO list, connections, findings and the full type catalog. |
|
||||
| `--geometry` | — | off | Determine each separator's host and each switch's exit count (fanout) **from the part world-coordinates** via a shapely `STRtree` (`lib/tro_geometry.py`, see §6b) instead of from the CSV `Zuordnung`/`Nachbarn` columns. Use this for exports where those columns are incomplete (the columns are then bypassed entirely for these two inputs). Requires `shapely>=2.1`. |
|
||||
| `--geo-tol-mm` | `MM` (float) | catalog default | Only with `--geometry`: the tolerance in mm within which two connection points count as the same transfer point. |
|
||||
| `--connect` | — | off | Also write the TRO topology as `<name>_tro_connect.ini` (nodes, connections, system boundaries, predecessors/successors per TRO). Pure output, never read back. |
|
||||
| `--true-scale` | — | off | Only with `--use-cords`: draw to scale. By default empty stretches longer than 1500 mm between nodes are shortened (order and neighbourhood are kept). |
|
||||
|
||||
TROs, types and connections always come from the layout alone;
|
||||
`cfg/tro_overrides.ini` is not read. Errors in the derivation are fixed in
|
||||
`lib/tro_flow.py`, not in a correction file.
|
||||
|
||||
**Output** (in `%SKEL_RESULTS%`): `<name>_tro_flow.dot` (always, with `pos`
|
||||
attributes when `--use-cords` was used), `<name>_tro_flow.svg` (with
|
||||
@@ -342,9 +341,8 @@ overridden.
|
||||
| `--check` | — | off | Dry run: only analyze and report, write no output file. |
|
||||
| `--emit-lisp` | — | off | Regenerate `cad/tro_types.lsp` (the type list for the `TRO_INSERT`/`TRO_EDIT` dialogs) from `tro_catalog.py` and exit — no `--dxf` needed. Written under `%DXFM_LISP%` if set (next to the `dxfmakros` SSG_LIB modules that provide the dialogs), otherwise under `<SPS_SKEL>/cad`. |
|
||||
|
||||
Layers always carry the prefix `TRO_`. `cfg/tro_overrides.ini` is never read,
|
||||
so the markers always match `tro_flow.py` (which reads it only with
|
||||
`--use-overrides`).
|
||||
Layers always carry the prefix `TRO_`. Like `tro_flow.py`, it never reads
|
||||
`cfg/tro_overrides.ini`, so the markers always match the flow diagram.
|
||||
|
||||
**Output** (in `%SKEL_RESULTS%`, unless `--check`): `<name>_annotated.dxf`,
|
||||
`<name>_registration.json` (the coordinate transform used, with its proof).
|
||||
@@ -467,6 +465,12 @@ free. Consumed by `tro_flow.py` and `tro_annotate.py`; not run directly.
|
||||
|
||||
## 6a. `tro_overrides.py` — manual corrections to the derived TROs (library, no CLI)
|
||||
|
||||
> **Since 2026-10-05 only `material_flow.py --connect` reads this file.**
|
||||
> `tro_flow.py` and `tro_annotate.py` no longer apply corrections: the sections
|
||||
> were keyed on running TRO numbers and went stale with every new export.
|
||||
> Errors in the TRO derivation are fixed in `lib/tro_flow.py` instead. The
|
||||
> format below is kept for `material_flow.py`.
|
||||
|
||||
`tro_flow.py` derives TRO types from the mechanical layout alone. Some things
|
||||
are simply not in the CSV export: a switch that the export does not carry, a
|
||||
scanner that lifts the type to `1Sep_SSCC`, or a spot that a walkthrough
|
||||
@@ -536,46 +540,12 @@ Three kinds of entry, deliberately different in weight:
|
||||
flow node is primary, the rest stay attached so the linking still sees both
|
||||
sides of a transition. Like splits, this renumbers.
|
||||
- **`openpoint`** — a spot reported in a review that is **not** turned into a
|
||||
TRO. The structure stays untouched; the point is only marked in the doc
|
||||
(section 6). This keeps "derived" and "asserted" distinguishable until the
|
||||
spot has been checked in BricsCAD.
|
||||
TRO. The structure stays untouched.
|
||||
|
||||
Consumers: `tro_flow.py` (only with `--use-overrides`: type corrections + doc
|
||||
section 6), `material_flow.py` (writes the
|
||||
`[<plant>.manual]` section into `connect.ini`). Unknown TRO IDs and types are
|
||||
not applied silently — they are reported as warnings in the console output and
|
||||
in doc section 6.3, which catches the common trap: **TRO IDs are running
|
||||
numbers of one run and are only valid for the CSV named in the section.** Swap
|
||||
the data basis and the numbers shift.
|
||||
|
||||
## 6b. `tro_geometry.py` — geometric separator-host and switch-fanout (library, no CLI)
|
||||
|
||||
`tro_flow.py` normally derives two of its inputs from the CSV columns
|
||||
(`material_flow.py::build_graph`):
|
||||
|
||||
```
|
||||
Zuordnung (host of the separator) -> which conveyor/Kreisel a separator sits on
|
||||
Nachbarn / graph edges (fanout) -> how many exits a switch has (1Sep / 1Sep1Swi / 1Sep2Swi)
|
||||
```
|
||||
|
||||
For some exports those columns are incomplete — e.g. `hundmM05_1.csv` reports
|
||||
"nur ein Partner" for several `Strecke` rows, and the older `hundm_export.csv`
|
||||
failed outright (5 TROs, all `Vario`, 0 connections, all isolated) because
|
||||
`Zuordnung`/`Nachbarn` could not be resolved. This module derives the same two
|
||||
values **directly from the part world-coordinates** instead, so the TRO
|
||||
derivation no longer depends on the quality of those two columns:
|
||||
|
||||
- a shapely `STRtree` over the AS/ES chain ends (K1/K2) of every
|
||||
Strecke/Gefällestrecke plus the two Kreisel lane-ends;
|
||||
- `resolve_host_geometric` — `.nearest()` to find the closest host to a
|
||||
separator;
|
||||
- `count_geometric_exits` — `.query(..., predicate="dwithin")` to find every
|
||||
other chain that actually meets at a given point (within a tolerance, mm).
|
||||
|
||||
It is activated by `tro_flow.py --geometry` (via `make_geometric_resolvers`);
|
||||
`--geo-tol-mm` sets the meeting tolerance. This module knows nothing about
|
||||
`tro_flow.py` — only `material_flow.py::Element` lists. Requires `shapely>=2.1`
|
||||
(pinned in `requirements.txt`, needed only for this path).
|
||||
Consumer: `material_flow.py --connect` (writes the `[<plant>.manual]` section
|
||||
into `connect.ini`). Keep in mind: **TRO IDs are running numbers of one run and
|
||||
are only valid for the CSV named in the section.** Swap the data basis and the
|
||||
numbers shift.
|
||||
|
||||
## 7. `dxf_registration.py` — CSV↔DXF coordinate registration (library, no CLI)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user