TRO_EDIT/TRO_INSERT: ein Dialog mit Slot-Liste fuer alle TRO-Typen

- tro_edit.dcl: Kennung, Typ, Liste der Slots des Typs (aus *TRO-SLOTS*
  in tro_types.lsp) mit TeileId je Slot, Edit-Zeile, "Im Plan waehlen <"
  (naechstes Bauteil passender Art aus dem XRECORD SPS_SKEL_PARTS),
  +/- fuer Lagerlinien, Warnzeile (leer/doppelt/in anderem Marker)
- Typwechsel behaelt gleichnamige Slots; gespeichert im Attribut SLOTS
- TRO_INSERT nutzt denselben Dialog (Enter = Mitte der Bauteile),
  tro_insert.dcl entfaellt
- tro_types.lsp neu erzeugt (sps_skel tro_annotate --emit-lisp)
- Rueckweg nach sps_skel: tro_annotate --read-tros

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-26 14:35:19 +01:00
parent a318ddebf5
commit 56c926cc07
9 changed files with 627 additions and 154 deletions
+26 -5
View File
@@ -826,12 +826,33 @@ TRO-Marker (Block `TRO_SYM_<Typ>`) fuer `sps_skel`/`lib/tro_annotate.py`.
| Befehl | Beschreibung |
| --- | --- |
| `c:TRO_INSERT` | Bestehende Blockdefinition an gewaehltem Punkt einfuegen, setzt ID/TYPE; bricht ab, wenn der Typ noch keine Blockdefinition in der Zeichnung hat (entsteht nur ueber `tro_annotate.py`) |
| `c:TRO_EDIT` | ID/TYPE eines bestehenden Markers per Dialog aendern |
| `c:TRO_INSERT` | Neuen Marker anlegen: Dialog wie TRO_EDIT, dann Einfuegepunkt (Enter = Mitte der gewaehlten Bauteile); bricht ab, wenn der Typ noch keine Blockdefinition in der Zeichnung hat (entsteht nur ueber `tro_annotate.py`) |
| `c:TRO_EDIT` | Kennung, Typ und Bauteile je Slot eines bestehenden Markers per Dialog aendern |
Typliste kommt aus [`tro_types.lsp`](../Lisp/tro_types.lsp) (von
`tro_annotate.py --emit-lisp` nach `DXFM_LISP` geschrieben). `SSG_BLOCKEDIT`
leitet Blocknamen `TRO_*` zu `TRO_EDIT`.
Ein Dialog (`dcl/tro_edit.dcl`) fuer alle TRO-Typen: statt einer Maske je
Typ zeigt eine Liste die Slots des Typs (`separator1`, `switch1`,
`scanner1`, `drive`, Lagerlinien `line1..N`) mit ihrem Bauteil (TeileId).
Die Zeile darunter bearbeitet den gewaehlten Slot:
- **Im Plan waehlen <** schliesst den Dialog, nimmt einen Punkt und setzt
das naechste Bauteil der passenden Art aus der Bauteiltabelle (XRECORD
`SPS_SKEL_PARTS`, von `tro_annotate.py` in die Zeichnung gelegt) - eine
Weiche laesst sich nicht in einen Separator-Slot waehlen.
- **+ / - Lagerlinie** nur bei Typen mit Lagerlinien (PinStore_Auto,
EmptyCarrBuffer); die Katalogzahl ist nur die Vorgabe.
- Beim Typwechsel behalten gleichnamige Slots ihr Bauteil.
- Leere Separatoren, doppelte Bauteile und Bauteile anderer Marker stehen
als Warnung im Dialog; speichern geht trotzdem.
Gespeichert wird im Attribut `SLOTS` (`separator1=0010;switch1=0061;lines=0066,0069`);
`KEY` ist der Schluessel fuer sps_skel und bleibt bei TRO_INSERT leer.
Zurueck nach sps_skel: Zeichnung als DXF speichern,
`tro_annotate --file <csv> --read-tros` (schreibt `cfg/tro_overrides.ini`).
Typliste, Slots je Typ (`*TRO-SLOTS*`) und Bauteilarten je Slot
(`*TRO-SLOT-KINDS*`) kommen aus [`tro_types.lsp`](../Lisp/tro_types.lsp)
(von `tro_annotate.py --emit-lisp` nach `DXFM_LISP` geschrieben).
`SSG_BLOCKEDIT` leitet Blocknamen `TRO_*` zu `TRO_EDIT`.
---