[FIX] VF-Linienzug: Abbruch beim Editieren brach den VF-Block auf

Die interaktiven Editier-Pfade riefen den Neuaufbau ueber
vl-catch-all-apply auf. Der alte Block ist dort per entdel schon
entfernt, und der Catch faengt einen Abbruch (ESC -> (exit)) VOR
*error* ab - der Abbruch-Wickler vfl-modus-abbruch-sichern kam damit
nie zum Zug. Ergebnis: die komplette Kette blieb als lose Einzelteile
ohne VF_n-Block liegen und war nicht mehr per Doppelklick editierbar.

- vfl-edit-ent (Sektions-Zweig) und vfl-edit-ent2 rufen
  vf-linienzug-modus/-modus2 jetzt DIREKT auf. Nur der
  nicht-interaktive Batch-Konverter vfl-konvertiere-ent behaelt den
  Catch (die Batch-Schleife muss weiterlaufen) und meldet den
  betroffenen Block statt still zu scheitern.
- Beide Abbruch-Handler setzen *ssg-ils-dim* zurueck. Das tat bisher
  nur der Aufrufer, der nach einem Abbruch nicht mehr erreicht wird -
  der Dim-Override blieb fuer die restliche Sitzung stehen.

Wiederherstellung aus der Zeichnung (Sektions-XDATA):

- vfl-segment-xdata-sichern schrieb nur die Slice des LETZTEN Glieds
  einer Schleifen-Iteration. Eine VF-Einheit mit eingebetteten
  Vario-Kurven verlor dadurch ihre eigenen Eingaben. Jetzt wird der
  komplette Journal-Abschnitt der Iteration geschrieben, indiziert mit
  dem ersten Glied-Index darin (neu: vfl-journal-ab-glied,
  vfl-steps-zaehlen). Ein Glied ohne Geometrie verbraucht seinen
  Abschnitt nicht mehr - er wandert in den naechsten Record, der
  Entities bekommt.
- Neue XDATA-App SSG_VF_EDIT_PRE haelt die Praeambel (Startpunkt,
  Starthoehe, AS ja/nein + Winkel/Seite) auf den Entities der ersten
  Iteration. Ohne sie fehlte der Kopf des Journals in jeder Sektion.
- Neuer Befehl VF_SEKTION_RESTORE: Auswahl der losen Geometrie ->
  Sektionen lueckenlos ab Glied 1 zusammensetzen -> stummer Replay ->
  interaktiv weiterbauen. Die alte Geometrie wird erst NACH
  erfolgreichem Neuaufbau geloescht, ein Abbruch laesst sie samt XDATA
  stehen (Versuch wiederholbar). Altbestand ohne Praeambel-XDATA wird
  danach gefragt.

Die .dbg-Dateien bleiben reine Ausgabe und werden von keinem Befehl
gelesen - Wiederherstellungs-Daten gehoeren in die XDATA der Zeichnung.

tests/testdata/vfl_journal_hm05_abbruch.json: Journal der Session vom
2026-08-31 (9 Glieder), gegen das die Slice-/Join-Logik geprueft wurde.
Reine Daten, wird von keinem Befehl gelesen.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-09-01 15:15:16 +02:00
parent 5e944dd8c2
commit 04a12e5981
6 changed files with 360 additions and 17 deletions
+38
View File
@@ -377,6 +377,44 @@ interaktive Linienzug-Ablauf weiter (Abschnitt 5).
Einzige Eingabe — Rest laeuft automatisch (Attribute aggregiert, Luecken
werden gemeldet).
**VF_SEKTION_RESTORE — lose Kette aus der Zeichnung wiederherstellen**
| Feld | Steuerelement | Werte |
|---|---|---|
| Lose Linienzug-Geometrie | Objektauswahl (`ssget`) | die Einzelteile der Kette (Bloecke, Linien, Boegen) |
| Startpunkt / Starthoehe / AS | nur bei Altbestand ohne Praeambel-XDATA | `getpoint` / `getreal` / Ja-Nein + Winkel + Seite |
Wofuer: bleibt eine Kette als **lose Geometrie ohne `VF_n`-Block** liegen (der
Block war beim Editieren schon per `entdel` weg, der Neuaufbau brach ab und
konnte nicht gewickelt werden), ist sie nicht mehr per Doppelklick editierbar.
Die Eingaben stecken aber weiterhin in der Zeichnung:
| XDATA-App | Traeger | Inhalt |
|---|---|---|
| `SSG_VF_EDIT` | `VF_n`-Block | volles Ketten-Journal (Marker `linienzug`/`linienzug2`) |
| `SSG_VF_EDIT_SEG` | jedes Entity | Journal-Abschnitt **der Iteration**, in der es entstand, indiziert mit dem **ersten** Glied-Index darin |
| `SSG_VF_EDIT_PRE` | Entities des ersten Gliedes | Praeambel (Startpunkt, Starthoehe, AS ja/nein + Winkel/Seite) |
`VF_SEKTION_RESTORE` liest die Sektionen der Auswahl, haengt sie
lueckenlos ab Glied 1 aneinander (ein Sektions-Record kann **mehrere** Glieder
enthalten — eine VF-Einheit mit eingebetteten Vario-Kurven legt pro Kurve ein
eigenes STEP ab, der naechste erwartete Index ist daher
`erster Index + Anzahl Glieder im Record`), spielt das Journal stumm ab und
baut danach normal weiter. Die alte Geometrie wird **erst nach erfolgreichem**
Neuaufbau geloescht — bricht der Bau ab, bleibt sie samt XDATA stehen und der
Versuch ist wiederholbar.
Grenzen: nur Modus 1 (Modus 2 schreibt keine Sektions-XDATA); bei einer Luecke
wird nur der lueckenlose Anfang wiederhergestellt und die fehlende Sektion
gemeldet. Ketten, die vor der Umstellung auf Iterations-Abschnitte gebaut
wurden, haben unvollstaendige Sektions-XDATA (eine VF-Einheit hinterliess nur
die Slice ihrer letzten Vario-Kurve) und sind daher nur bis zur ersten Luecke
wiederherstellbar.
Die `.dbg`-Dateien sind **reine Ausgabe** und werden von keinem Befehl
gelesen — sie werden bei jedem Lauf neu angelegt (`dbgopen` oeffnet mit `"w"`).
Wiederherstellungs-Daten gehoeren ausschliesslich in die XDATA der Zeichnung.
---
## 8. Legacy-Konsolen-Pfad