feat: eingang_hoehe="auto" auf Python-Seite nachgezogen, hundm05.json bereinigt

Lisp (vf_linienzug.lsp/vf_spec.lsp):
- vsp-eingang-hoehe unterstuetzt jetzt "auto" (NIL-Token statt REAL) -
  bewusst keine Zahl vorgeben, der Bauablauf berechnet seinen eigenen
  Vorschlag, wie bei leerer Konsoleneingabe
- vfl-journal-reset-lauf: internes Reset innerhalb von vf-linienzug-modus/
  -modus2 loescht *vfl-replay-queue*/*vflw-pending* nicht mehr mit (Bug:
  REPLAY-getriebener Bau (vsp-bau-aus-spec) brach mitten in der Kette ab,
  weil eine noch unverbrauchte Queue verworfen wurde)

Python-Gegenstueck nachgezogen (lib/vf_linienzug_grammatik.py,
lib/vf_spec_export.py, lib/vf_journal_export.py):
- NIL-Token-Unterstuetzung fuer eingang_hoehe="auto" im gemeinsamen
  Parser-Kern, im Schreiber (SpecSchreiber) und in der Protokoll-Annotation
- gf_verteilung ist im Schreiber jetzt an der Feldpraesenz in der Spec
  festgemacht statt an einem Grammatik-Flag (selbstbeschreibend, deckt
  Specs mit und ohne diese Frage ab, ohne dass der Aufrufer die Grammatik
  kennen muss)
- Rundlauf-Pruefung (main(), test_verlustfrei) toleriert jetzt die bekannte,
  schon dokumentierte Erweiterung um drei neue Linie-GF-Pflichtfragen
  (ist_teilfolge statt exakter Gleichheit)
- test_gleiche_journale_wie_protokoll: alle 5 Ketten in hundm05.json weichen
  inzwischen vom Rohprotokoll ab (Kette 1 bewusst wegen eingang_hoehe,
  Ketten 2-5 schon laenger wegen Handkorrektur gegen echte DXF-Positionen)
  - expliziter Skip mit Begruendung statt leerem Loop

tests/testdata/hundm05.json:
- mm-Werte (dl, Start-/Stuetzpunkte, Koordinaten der Nachtrag-Objekte) auf
  eine Nachkommastelle gerundet
- nicht abgefragte Kopf-Metadaten entfernt (beschreibung, sivas_id,
  sivas_bezeichnung, planquadrat, block, dxf_handle) - nur quelle bleibt

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Samer Ayadi
2026-09-14 12:54:30 +02:00
co-authored by Claude Sonnet 5
parent 6d15c6be13
commit 23d79ec354
7 changed files with 278 additions and 113 deletions
+53 -84
View File
@@ -2,23 +2,17 @@
{
"spec_id": "VF_hundm05_LZ_01",
"modus": 1,
"start_punkt": [4912.239129, 1230.886425, 2154.0],
"start_punkt": [4912.2, 1230.9, 2154.0],
"start_hoehe": 2154.0,
"as": 1,
"as_winkel": "90",
"as_seite": "links",
"beschreibung": "Linienzug (Modus 1), Start Z2154: GF-Linie 2249 mm / 3 Grad -> Horizontal-VF 3257 mm -> Vario-Kurve 90 rechts innen -> Vario-Kurve 90 rechts innen -> Horizontal-VF 1210 mm -> Vario-Kurve 30 rechts innen -> Vario-Kurve 30 links innen -> ES 90 links",
"sivas_id": "0025",
"sivas_bezeichnung": "VarioFoerderer :1",
"planquadrat": "B/1",
"block": "VF_87",
"dxf_handle": "1BEB5",
"quelle": "INSERT 1BEB5 (Block VF_87) in polylines.dxf, XDATA-App SSG_VF_EDIT, Marker linienzug; im Journal aufgezeichneter Kettenstart: [4912.239129, 1230.886425, 0.000000]"
},
{
"glied": "Linie-GF",
"nr": 1,
"dl": 2249.25106,
"dl": 2249.3,
"hz": 90.0,
"gefaelle": "winkel",
"winkel": 3.0,
@@ -27,8 +21,7 @@
{
"glied": "Horizontal-VF",
"nr": 2,
"dl": 3256.853781,
"gf_verteilung": "einlauf",
"dl": 3256.9,
"vf_sep_vor": 0,
"vf_sep_nach": 0,
"vf_ende": "nein",
@@ -42,7 +35,7 @@
},
{
"sub": "horizontal",
"dl": 1434.100265,
"dl": 1434.1,
"sep_vor": 0,
"sep_nach": 0
},
@@ -58,8 +51,8 @@
{
"glied": "Horizontal-VF",
"nr": 3,
"dl": 1210.083164,
"gf_verteilung": "einlauf",
"dl": 1210.1,
"eingang_hoehe": "auto",
"vf_sep_vor": 0,
"vf_sep_nach": 0,
"vf_ende": "ja-mit-es"
@@ -72,7 +65,7 @@
},
{
"sub": "horizontal",
"dl": 1830.286247,
"dl": 1830.3,
"sep_vor": 0,
"sep_nach": 0
},
@@ -94,23 +87,17 @@
{
"spec_id": "VF_hundm05_LZ_02",
"modus": 1,
"start_punkt": [9570.86433958955, 1167.499104795102, 2154.0],
"start_punkt": [9570.9, 1167.5, 2154.0],
"start_hoehe": 2154.0,
"as": 1,
"as_winkel": "90",
"as_seite": "links",
"beschreibung": "Linienzug (Modus 1), Start Z2154: AS 90 links -> Horizontal-VF 5855 mm (GF1-Einlauf auf Z1800, voller Eingang) -> Vario-Kurve 90 rechts innen -> Horizontaler Foerderer 457 mm -> Vario-Kurve 90 rechts innen -> Motorstation + Kettenende 5855 mm zurueck auf Z2154 (Winkelwahl Index 3 = 18 Grad) -> ES 90 links",
"sivas_id": "0034",
"sivas_bezeichnung": "ILS 2.0 Strecke",
"planquadrat": "D/1-E/4",
"block": "VF_1",
"dxf_handle": "119B",
"quelle": "Uebersetzt aus tests/testdata/linienzug_tests.json (aufgezeichneter BricsCAD-Lauf, gleicher Block VF_1), Startpunkt auf die reale DXF-Position dieser Instanz gesetzt: INSERT 119B (Block VF_1) in results/test_hundM05.dxf; Sivas-Id/Planquadrat aus results/export.csv (TeileId 0034); ersetzt die alte, per sub=auf-ab behelfsmaessig nachgebaute Fassung"
},
{
"glied": "Horizontal-VF",
"nr": 1,
"dl": 5854.769733,
"dl": 5854.8,
"hz": 90.0,
"eingang_hoehe": 1800.0,
"vf_sep_vor": 0,
@@ -125,7 +112,7 @@
},
{
"sub": "horizontal",
"dl": 457.481366,
"dl": 457.5,
"sep_vor": 0,
"sep_nach": 0
},
@@ -140,30 +127,24 @@
"es": 1,
"es_winkel": "90",
"es_seite": "links",
"dl": 5854.769733,
"dl": 5854.8,
"hoehe": 2154.0,
"winkel_idx": 3
},
{
"spec_id": "VF_hundm05_LZ_03",
"modus": 1,
"start_punkt": [13648.0372507632, 1168.039702925621, 2154.0],
"start_punkt": [13648.0, 1168.0, 2154.0],
"start_hoehe": 2154.0,
"as": 1,
"as_winkel": "90",
"as_seite": "links",
"beschreibung": "Linienzug (Modus 1), Start Z2154: AS 90 links -> Horizontal-VF 5855 mm (GF1-Einlauf auf Z1800, voller Eingang) -> Vario-Kurve 90 rechts innen -> Horizontaler Foerderer 457 mm -> Vario-Kurve 90 rechts innen -> Motorstation + Kettenende 5855 mm zurueck auf Z2154 (Winkelwahl Index 3 = 18 Grad) -> ES 90 links",
"sivas_id": "0033",
"sivas_bezeichnung": "ILS 2.0 Strecke",
"planquadrat": "F/1-H/4",
"block": "VF_1",
"dxf_handle": "12A9",
"quelle": "Uebersetzt aus tests/testdata/linienzug_tests.json (aufgezeichneter BricsCAD-Lauf, gleicher Block VF_1), Startpunkt auf die reale DXF-Position dieser Instanz gesetzt: INSERT 12A9 (Block VF_1) in results/test_hundM05.dxf; Sivas-Id/Planquadrat aus results/export.csv (TeileId 0033); ersetzt die alte, per sub=auf-ab behelfsmaessig nachgebaute Fassung"
},
{
"glied": "Horizontal-VF",
"nr": 1,
"dl": 5854.769733,
"dl": 5854.8,
"hz": 90.0,
"eingang_hoehe": 1800.0,
"vf_sep_vor": 0,
@@ -178,7 +159,7 @@
},
{
"sub": "horizontal",
"dl": 457.481366,
"dl": 457.5,
"sep_vor": 0,
"sep_nach": 0
},
@@ -193,30 +174,24 @@
"es": 1,
"es_winkel": "90",
"es_seite": "links",
"dl": 5854.769733,
"dl": 5854.8,
"hoehe": 2154.0,
"winkel_idx": 3
},
{
"spec_id": "VF_hundm05_LZ_04",
"modus": 1,
"start_punkt": [17815.98017615211, 1168.495370013883, 2154.0],
"start_punkt": [17816.0, 1168.5, 2154.0],
"start_hoehe": 2154.0,
"as": 1,
"as_winkel": "90",
"as_seite": "links",
"beschreibung": "Linienzug (Modus 1), Start Z2154: AS 90 links -> Horizontal-VF 5855 mm (GF1-Einlauf auf Z1800, voller Eingang) -> Vario-Kurve 90 rechts innen -> Horizontaler Foerderer 457 mm -> Vario-Kurve 90 rechts innen -> Motorstation + Kettenende 5855 mm zurueck auf Z2154 (Winkelwahl Index 3 = 18 Grad) -> ES 90 links",
"sivas_id": "0032",
"sivas_bezeichnung": "ILS 2.0 Strecke",
"planquadrat": "H/1-J/4",
"block": "VF_1",
"dxf_handle": "12D0",
"quelle": "Uebersetzt aus tests/testdata/linienzug_tests.json (aufgezeichneter BricsCAD-Lauf, gleicher Block VF_1), Startpunkt auf die reale DXF-Position dieser Instanz gesetzt: INSERT 12D0 (Block VF_1) in results/test_hundM05.dxf; Sivas-Id/Planquadrat aus results/export.csv (TeileId 0032); ersetzt die alte, per sub=auf-ab behelfsmaessig nachgebaute Fassung"
},
{
"glied": "Horizontal-VF",
"nr": 1,
"dl": 5854.769733,
"dl": 5854.8,
"hz": 90.0,
"eingang_hoehe": 1800.0,
"vf_sep_vor": 0,
@@ -231,7 +206,7 @@
},
{
"sub": "horizontal",
"dl": 457.481366,
"dl": 457.5,
"sep_vor": 0,
"sep_nach": 0
},
@@ -246,30 +221,24 @@
"es": 1,
"es_winkel": "90",
"es_seite": "links",
"dl": 5854.769733,
"dl": 5854.8,
"hoehe": 2154.0,
"winkel_idx": 3
},
{
"spec_id": "VF_hundm05_LZ_05",
"modus": 1,
"start_punkt": [21590.18692053851, 1167.376346082522, 2154.0],
"start_punkt": [21590.2, 1167.4, 2154.0],
"start_hoehe": 2154.0,
"as": 1,
"as_winkel": "90",
"as_seite": "links",
"beschreibung": "Linienzug (Modus 1), Start Z2154: AS 90 links -> Horizontal-VF 5855 mm (GF1-Einlauf auf Z1800, voller Eingang) -> Vario-Kurve 90 rechts innen -> Horizontaler Foerderer 457 mm -> Vario-Kurve 90 rechts innen -> Motorstation + Kettenende 5855 mm zurueck auf Z2154 (Winkelwahl Index 3 = 18 Grad) -> ES 90 links",
"sivas_id": "0001",
"sivas_bezeichnung": "ILS 2.0 Strecke",
"planquadrat": "J/1-K/4",
"block": "VF_1",
"dxf_handle": "12F7",
"quelle": "Uebersetzt aus tests/testdata/linienzug_tests.json (aufgezeichneter BricsCAD-Lauf, gleicher Block VF_1), Startpunkt auf die reale DXF-Position dieser Instanz gesetzt: INSERT 12F7 (Block VF_1) in results/test_hundM05.dxf; Sivas-Id/Planquadrat aus results/export.csv (TeileId 0001); ersetzt die alte, per sub=auf-ab behelfsmaessig nachgebaute Fassung"
},
{
"glied": "Horizontal-VF",
"nr": 1,
"dl": 5854.769733,
"dl": 5854.8,
"hz": 90.0,
"eingang_hoehe": 1800.0,
"vf_sep_vor": 0,
@@ -284,7 +253,7 @@
},
{
"sub": "horizontal",
"dl": 457.481366,
"dl": 457.5,
"sep_vor": 0,
"sep_nach": 0
},
@@ -299,7 +268,7 @@
"es": 1,
"es_winkel": "90",
"es_seite": "links",
"dl": 5854.769733,
"dl": 5854.8,
"hoehe": 2154.0,
"winkel_idx": 3
},
@@ -331,8 +300,8 @@
"comment": "Separator 2 (Nachtrag HundM05, reale Koordinate laut Anwender)",
"function": "insert",
"block": "S-LP",
"x": 4052.79,
"y": 1165.94,
"x": 4052.8,
"y": 1165.9,
"z": 2154,
"rotation": 180
},
@@ -341,8 +310,8 @@
"comment": "Scanner zu Separator 2 (Nachtrag HundM05, reale Koordinate laut Anwender)",
"function": "insert",
"block": "Scanner",
"x": 4095.51,
"y": 1164.08,
"x": 4095.5,
"y": 1164.1,
"z": 2154,
"rotation": 270
},
@@ -351,8 +320,8 @@
"comment": "Separator 3 (Nachtrag HundM05, reale Koordinate laut Anwender)",
"function": "insert",
"block": "S-LP",
"x": 7831.77,
"y": 1169.53,
"x": 7831.8,
"y": 1169.5,
"z": 2154,
"rotation": 180
},
@@ -361,8 +330,8 @@
"comment": "Scanner zu Separator 3 (Nachtrag HundM05, reale Koordinate laut Anwender)",
"function": "insert",
"block": "Scanner",
"x": 7874.49,
"y": 1167.67,
"x": 7874.5,
"y": 1167.7,
"z": 2154,
"rotation": 270
},
@@ -371,8 +340,8 @@
"comment": "Separator 4 (Nachtrag HundM05, reale Koordinate laut Anwender)",
"function": "insert",
"block": "S-LP",
"x": 12191.01,
"y": 1168.25,
"x": 12191.0,
"y": 1168.2,
"z": 2154,
"rotation": 180
},
@@ -381,8 +350,8 @@
"comment": "Scanner zu Separator 4 (Nachtrag HundM05, reale Koordinate laut Anwender)",
"function": "insert",
"block": "Scanner",
"x": 12233.73,
"y": 1166.39,
"x": 12233.7,
"y": 1166.4,
"z": 2154,
"rotation": 270
},
@@ -391,7 +360,7 @@
"comment": "Separator 5 (Nachtrag HundM05, reale Koordinate laut Anwender)",
"function": "insert",
"block": "S-LP",
"x": 16488.38,
"x": 16488.4,
"y": 1171.7,
"z": 2154,
"rotation": 180
@@ -402,7 +371,7 @@
"function": "insert",
"block": "Scanner",
"x": 16531.1,
"y": 1169.84,
"y": 1169.8,
"z": 2154,
"rotation": 270
},
@@ -411,8 +380,8 @@
"comment": "Separator 6 (Nachtrag HundM05, reale Koordinate laut Anwender)",
"function": "insert",
"block": "S-LP",
"x": 20764.96,
"y": 1166.18,
"x": 20765.0,
"y": 1166.2,
"z": 2154,
"rotation": 180
},
@@ -421,8 +390,8 @@
"comment": "Scanner zu Separator 6 (Nachtrag HundM05, reale Koordinate laut Anwender)",
"function": "insert",
"block": "Scanner",
"x": 20807.68,
"y": 1164.32,
"x": 20807.7,
"y": 1164.3,
"z": 2154,
"rotation": 270
},
@@ -431,8 +400,8 @@
"comment": "Separator 7 (Nachtrag HundM05, reale Koordinate laut Anwender)",
"function": "insert",
"block": "S-LP",
"x": 23738.03,
"y": 1170.63,
"x": 23738.0,
"y": 1170.6,
"z": 2154,
"rotation": 180
},
@@ -441,8 +410,8 @@
"comment": "Scanner zu Separator 7 (Nachtrag HundM05, reale Koordinate laut Anwender)",
"function": "insert",
"block": "Scanner",
"x": 23780.75,
"y": 1168.77,
"x": 23780.8,
"y": 1168.8,
"z": 2154,
"rotation": 270
},
@@ -451,8 +420,8 @@
"comment": "Separator 8 (Nachtrag HundM05, reale Koordinate laut Anwender, ohne zugehoerigen Scanner)",
"function": "insert",
"block": "S-LP",
"x": 24630.12,
"y": 1167.22,
"x": 24630.1,
"y": 1167.2,
"z": 2154,
"rotation": 180
},
@@ -461,8 +430,8 @@
"comment": "BTMT Beladung 1 (Nachtrag HundM05, Insertpoint aus tests/testdata/hundmM05_1.csv Elementnummer 23 dekodiert, siehe lib/export_graph.decode_insertpoint)",
"function": "insert",
"block": "BTMT-Beladung",
"x": 5290.87,
"y": 370.24,
"x": 5290.9,
"y": 370.2,
"z": 0,
"rotation": 179.03
},
@@ -471,8 +440,8 @@
"comment": "BTMT Beladung 2 (Nachtrag HundM05, Insertpoint aus tests/testdata/hundmM05_1.csv Elementnummer 22 dekodiert, siehe lib/export_graph.decode_insertpoint)",
"function": "insert",
"block": "BTMT-Beladung",
"x": 4261.22,
"y": 374.24,
"x": 4261.2,
"y": 374.2,
"z": 0,
"rotation": 179.18
},
@@ -481,8 +450,8 @@
"comment": "BTMT Entladung 1 (Nachtrag HundM05, aus tests/testdata/hundmM05_1.csv Elementnummer 21: y/z/rotation aus dem Insertpoint dekodiert, x aus K1 rekonstruiert, da der Insertpoint-KOS-String bei ca. 8.39 m saettigt - siehe csv:kos-encode in Lisp/export.lsp)",
"function": "insert",
"block": "SC_Entladung",
"x": 24768.70,
"y": 1170.29,
"x": 24768.7,
"y": 1170.3,
"z": 0,
"rotation": 0.97
}