Files
dxfmakros/tests/testdata/hundm05.json
T
Samer AyadiandClaude Sonnet 5 4a057862a8 fix: VF-Linienzug Journal-Reset, Spec-Grammatik (auf-ab/Linie-GF) und hz-Bug in HundM05
- vfl-journal-reset-lauf ans Funktionsanfang verschoben (Modus 1/2/3,
  Lisp/vf_linienzug.lsp): stand bisher nach der Startpunkt/Hoehe/AS-
  Praeambel und loeschte diese beim Reset selbst wieder - Journal begann
  mit dem ersten STEP-Marker statt PT, betraf jede Kette.
- Spec-Grammatik erweitert (Lisp/vf_spec.lsp, lib/vf_linienzug_grammatik.py,
  lib/vf_spec_export.py): "auf-ab" bei bereits flach ankommender Kette
  (Richtungswahl statt Zielhoehe) und neue Linie-GF-Fragereihenfolge
  (Kettenende direkt nach laenge_modus, inkl. vorgezogenem ES). Tests in
  tests/test_vf_spec.lsp/.py angepasst.
- lib/vf_linienzug_grammatik.py: _linie("kettenende_ziel") erwartete
  faelschlich ein hz-REAL nach der Distanz - der reale Bauablauf
  (vfl-body-abschluss) leitet die Richtung dort aus dem Frame ab und
  fragt sie nie. Fuehrte zu einem Token-Desync beim Dekodieren echter
  Kettenende-Journale.
- tests/testdata/hundm05.json (VF_hundm05_LZ_01): 5 ueberfluessige
  hz-Felder entfernt. vsp-linie injiziert bei JEDEM vorhandenen hz-Feld
  einen Richtungs-Token, unabhaengig vom tatsaechlichen Bauablauf - die
  Felder desyncten den Replay und liessen die Kette stumm mit der
  falschen (verkuerzten) Geometrie fertig bauen.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-15 15:13:07 +02:00

462 lines
11 KiB
JSON

[
{
"spec_id": "VF_hundm05_LZ_01",
"modus": 1,
"start_punkt": [5070.1, 1199.2, 2154.0],
"start_hoehe": 2154.0,
"as": 1,
"as_winkel": "90",
"as_seite": "links",
"quelle": "INSERT 76B (Block VF_2) in results/test_hundm05.dxf, XDATA-App SSG_VF_EDIT, Marker linienzug - vom Anwender korrigierte Referenzkette, ersetzt die alte VF_87-Aufzeichnung aus polylines.dxf (falsche Geometrie: fallende statt steigende GF-Linie, fehlende Ruecksteigung auf AS-Hoehe)"
},
{
"glied": "Horizontal-VF",
"nr": 1,
"dl": 5854.8,
"hz": 90.0,
"eingang_hoehe": 1980.0,
"vf_sep_vor": 0,
"vf_sep_nach": 0,
"vf_ende": "nein",
"vf_separator": 0
},
{
"sub": "vario-kurve",
"winkel": 90,
"seite": "rechts",
"variante": "innen"
},
{
"sub": "horizontal",
"dl": 1340.0,
"sep_vor": 0,
"sep_nach": 0
},
{
"sub": "vario-kurve",
"winkel": 90,
"seite": "rechts",
"variante": "innen"
},
{
"sub": "motorstation"
},
{
"glied": "Linie-GF",
"nr": 2,
"laenge_modus": "endpunkt",
"dl": 800.0,
"sep_vor": 1,
"sep_nach": 1,
"gefaelle": "winkel",
"winkel": 3.0,
"ende": "nein"
},
{
"glied": "Horizontal-VF",
"nr": 3,
"dl": 838.8,
"vf_sep_vor": 0,
"vf_sep_nach": 0,
"vf_ende": "automatisch"
},
{
"sub": "vario-kurve",
"winkel": 30,
"seite": "rechts",
"variante": "innen"
},
{
"sub": "auf-ab",
"dl": 1621.3,
"richtung": "auf",
"winkel_idx": 8
},
{
"sub": "vario-kurve",
"winkel": 30,
"seite": "links",
"variante": "aussen"
},
{
"sub": "kettenende",
"es": 1,
"es_winkel": "90",
"es_seite": "links",
"dl": 1797.3,
"hoehe": 2154.0,
"gf2_exakt_bauen": 1
},
{
"spec_id": "VF_hundm05_LZ_02",
"modus": 1,
"start_punkt": [9570.9, 1167.5, 2154.0],
"start_hoehe": 2154.0,
"as": 1,
"as_winkel": "90",
"as_seite": "links",
"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.8,
"hz": 90.0,
"eingang_hoehe": 1800.0,
"vf_sep_vor": 0,
"vf_sep_nach": 0,
"vf_ende": "automatisch"
},
{
"sub": "vario-kurve",
"winkel": 90,
"seite": "rechts",
"variante": "innen"
},
{
"sub": "horizontal",
"dl": 457.5,
"sep_vor": 0,
"sep_nach": 0
},
{
"sub": "vario-kurve",
"winkel": 90,
"seite": "rechts",
"variante": "innen"
},
{
"sub": "kettenende",
"es": 1,
"es_winkel": "90",
"es_seite": "links",
"dl": 5854.8,
"hoehe": 2154.0,
"winkel_idx": 3
},
{
"spec_id": "VF_hundm05_LZ_03",
"modus": 1,
"start_punkt": [13648.0, 1168.0, 2154.0],
"start_hoehe": 2154.0,
"as": 1,
"as_winkel": "90",
"as_seite": "links",
"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.8,
"hz": 90.0,
"eingang_hoehe": 1800.0,
"vf_sep_vor": 0,
"vf_sep_nach": 0,
"vf_ende": "automatisch"
},
{
"sub": "vario-kurve",
"winkel": 90,
"seite": "rechts",
"variante": "innen"
},
{
"sub": "horizontal",
"dl": 457.5,
"sep_vor": 0,
"sep_nach": 0
},
{
"sub": "vario-kurve",
"winkel": 90,
"seite": "rechts",
"variante": "innen"
},
{
"sub": "kettenende",
"es": 1,
"es_winkel": "90",
"es_seite": "links",
"dl": 5854.8,
"hoehe": 2154.0,
"winkel_idx": 3
},
{
"spec_id": "VF_hundm05_LZ_04",
"modus": 1,
"start_punkt": [17816.0, 1168.5, 2154.0],
"start_hoehe": 2154.0,
"as": 1,
"as_winkel": "90",
"as_seite": "links",
"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.8,
"hz": 90.0,
"eingang_hoehe": 1800.0,
"vf_sep_vor": 0,
"vf_sep_nach": 0,
"vf_ende": "automatisch"
},
{
"sub": "vario-kurve",
"winkel": 90,
"seite": "rechts",
"variante": "innen"
},
{
"sub": "horizontal",
"dl": 457.5,
"sep_vor": 0,
"sep_nach": 0
},
{
"sub": "vario-kurve",
"winkel": 90,
"seite": "rechts",
"variante": "innen"
},
{
"sub": "kettenende",
"es": 1,
"es_winkel": "90",
"es_seite": "links",
"dl": 5854.8,
"hoehe": 2154.0,
"winkel_idx": 3
},
{
"spec_id": "VF_hundm05_LZ_05",
"modus": 1,
"start_punkt": [21590.2, 1167.4, 2154.0],
"start_hoehe": 2154.0,
"as": 1,
"as_winkel": "90",
"as_seite": "links",
"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.8,
"hz": 90.0,
"eingang_hoehe": 1800.0,
"vf_sep_vor": 0,
"vf_sep_nach": 0,
"vf_ende": "automatisch"
},
{
"sub": "vario-kurve",
"winkel": 90,
"seite": "rechts",
"variante": "innen"
},
{
"sub": "horizontal",
"dl": 457.5,
"sep_vor": 0,
"sep_nach": 0
},
{
"sub": "vario-kurve",
"winkel": 90,
"seite": "rechts",
"variante": "innen"
},
{
"sub": "kettenende",
"es": 1,
"es_winkel": "90",
"es_seite": "links",
"dl": 5854.8,
"hoehe": 2154.0,
"winkel_idx": 3
},
{
"id": "KR_Kreuz_Q2_90Grad",
"function": "insert",
"x": 1544,
"y": 767,
"z": 2154,
"abstand": 23300,
"rotation": 0,
"typ": "STANDARD",
"expect_block_prefix": "KREISEL_",
"expect_hoehe": "2154",
"expect_kreiselart": "STANDARD"
},
{
"id": "HundM05_SEP_01",
"comment": "Separator 1 (Nachtrag HundM05, reale Koordinate laut Anwender)",
"function": "insert",
"block": "S-LP",
"x": 2355,
"y": 365,
"z": 2154,
"rotation": 0
},
{
"id": "HundM05_SEP_02",
"comment": "Separator 2 (Nachtrag HundM05, reale Koordinate laut Anwender)",
"function": "insert",
"block": "S-LP",
"x": 4052.8,
"y": 1165.9,
"z": 2154,
"rotation": 180
},
{
"id": "HundM05_SCANNER_02",
"comment": "Scanner zu Separator 2 (Nachtrag HundM05, reale Koordinate laut Anwender)",
"function": "insert",
"block": "Scanner",
"x": 4095.5,
"y": 1164.1,
"z": 2154,
"rotation": 270
},
{
"id": "HundM05_SEP_03",
"comment": "Separator 3 (Nachtrag HundM05, reale Koordinate laut Anwender)",
"function": "insert",
"block": "S-LP",
"x": 7831.8,
"y": 1169.5,
"z": 2154,
"rotation": 180
},
{
"id": "HundM05_SCANNER_03",
"comment": "Scanner zu Separator 3 (Nachtrag HundM05, reale Koordinate laut Anwender)",
"function": "insert",
"block": "Scanner",
"x": 7874.5,
"y": 1167.7,
"z": 2154,
"rotation": 270
},
{
"id": "HundM05_SEP_04",
"comment": "Separator 4 (Nachtrag HundM05, reale Koordinate laut Anwender)",
"function": "insert",
"block": "S-LP",
"x": 12191.0,
"y": 1168.2,
"z": 2154,
"rotation": 180
},
{
"id": "HundM05_SCANNER_04",
"comment": "Scanner zu Separator 4 (Nachtrag HundM05, reale Koordinate laut Anwender)",
"function": "insert",
"block": "Scanner",
"x": 12233.7,
"y": 1166.4,
"z": 2154,
"rotation": 270
},
{
"id": "HundM05_SEP_05",
"comment": "Separator 5 (Nachtrag HundM05, reale Koordinate laut Anwender)",
"function": "insert",
"block": "S-LP",
"x": 16488.4,
"y": 1171.7,
"z": 2154,
"rotation": 180
},
{
"id": "HundM05_SCANNER_05",
"comment": "Scanner zu Separator 5 (Nachtrag HundM05, reale Koordinate laut Anwender)",
"function": "insert",
"block": "Scanner",
"x": 16531.1,
"y": 1169.8,
"z": 2154,
"rotation": 270
},
{
"id": "HundM05_SEP_06",
"comment": "Separator 6 (Nachtrag HundM05, reale Koordinate laut Anwender)",
"function": "insert",
"block": "S-LP",
"x": 20765.0,
"y": 1166.2,
"z": 2154,
"rotation": 180
},
{
"id": "HundM05_SCANNER_06",
"comment": "Scanner zu Separator 6 (Nachtrag HundM05, reale Koordinate laut Anwender)",
"function": "insert",
"block": "Scanner",
"x": 20807.7,
"y": 1164.3,
"z": 2154,
"rotation": 270
},
{
"id": "HundM05_SEP_07",
"comment": "Separator 7 (Nachtrag HundM05, reale Koordinate laut Anwender)",
"function": "insert",
"block": "S-LP",
"x": 23738.0,
"y": 1170.6,
"z": 2154,
"rotation": 180
},
{
"id": "HundM05_SCANNER_07",
"comment": "Scanner zu Separator 7 (Nachtrag HundM05, reale Koordinate laut Anwender)",
"function": "insert",
"block": "Scanner",
"x": 23780.8,
"y": 1168.8,
"z": 2154,
"rotation": 270
},
{
"id": "HundM05_SEP_08",
"comment": "Separator 8 (Nachtrag HundM05, reale Koordinate laut Anwender, ohne zugehoerigen Scanner)",
"function": "insert",
"block": "S-LP",
"x": 24630.1,
"y": 1167.2,
"z": 2154,
"rotation": 180
},
{
"id": "HundM05_BTMT_BEL_01",
"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.9,
"y": 370.2,
"z": 0,
"rotation": 179.03
},
{
"id": "HundM05_BTMT_BEL_02",
"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.2,
"y": 374.2,
"z": 0,
"rotation": 179.18
},
{
"id": "HundM05_BTMT_ENT_01",
"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.7,
"y": 1170.3,
"z": 0,
"rotation": 0.97
}
]