fix: Horizontal-VF-Kettenanfang (eingang_hoehe) in vsp-journal nachgezogen, hundm05.json erneuert

vf-linienzug-modus fragt bei einem mit "Horizontal-VF" eroeffneten
Kettenanfang eine Ziel-Hoehe fuer den GF1-Einlauf ab (vfl-prompt-hoehe-
eingang-gf1) und laesst dort die GF-Verteilungsfrage weg (fest "alles am
Einlauf") - vsp-journal/vsp-vf-einheit kannten das noch nicht. Ausserdem
werden ES-Winkel/-Seite beim kettenende-sub jetzt an der richtigen
Journal-Position (inkl. eigenem STEP-Marker) emittiert.

tests/testdata/hundm05.json: VF_hundm05_LZ_02..05 (die vier baugleichen
Schleifen, Block VF_1) aus tests/testdata/linienzug_tests.json neu
abgeleitet, mit den realen Startkoordinaten aus results/test_hundM05.dxf
statt der alten "sub":"auf-ab"-Behelfsloesung. VF_hundm05_LZ_01 und alle
Kreisel-/Separator-/Scanner-/BTMT-Objekte unveraendert.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Samer Ayadi
2026-09-14 11:59:07 +02:00
co-authored by Claude Sonnet 5
parent 41419763c0
commit 1bdecf0678
2 changed files with 113 additions and 194 deletions
+33 -2
View File
@@ -234,6 +234,21 @@
(setq v (ssg-val quelle "winkel_idx"))
(if v (vsp-ganz v "winkel_idx")))
;; Ziel-Hoehe fuer den GF1-Einlauf einer mit "Horizontal-VF" eroeffneten
;; VF-Einheit (vfl-prompt-hoehe-eingang-gf1). Optional, weil die Frage NUR
;; kommt, wenn der Eingang komplett neu gebaut wird - das ist der Fall, den
;; vfl-eingang-modus-bestimmen mit nil beantwortet: echter Kettenanfang MIT
;; AS-Element bzw. Anschluss an eine fertige VF-Einheit ("letzter-typ"="VF"),
;; und am Kettenanfang OHNE AS auch dann, wenn der KS_AUS-Scan die GF-Familie
;; erkennt oder der Nutzer die 3-Optionen-Rueckfrage mit "2" beantwortet.
;; Folgt die Sektion dagegen auf GF/Separator/Vario-Kurve, gibt es kein neues
;; GF1 und damit keine Frage - dann fehlt das Feld. Ob der Fall ansteht, haengt
;; am Zustand der Zeichnung und kann hier nicht berechnet werden; die Spec sagt
;; es, geraten wird nichts.
(defun vsp-eingang-hoehe (quelle / v)
(setq v (ssg-val quelle "eingang_hoehe"))
(if v (vsp-zahl "REAL" v "eingang_hoehe")))
(defun vsp-praeambel (kopf / punkt)
(setq *vsp-wo* "start")
(setq punkt (ssg-val kopf "start_punkt"))
@@ -360,6 +375,7 @@
((= label "Horizontal-VF")
(vsp-linie sek)
(vsp-eingang-hoehe sek)
(vsp-vf-einheit sek subs T))
((= label "Linie")
@@ -394,8 +410,14 @@
;; der flachen Queue liegt sie aber IMMER an derselben Position: direkt nach
;; den Werten des Vorgaenger-Knotens. Darum genau EIN Code je sub.
(defun vsp-vf-einheit (sek subs erst-hor / n i wahl letzter ende)
(vsp-code-raus *vsp-tab-verteilung* (ssg-val sek "gf_verteilung")
"gf_verteilung")
;; GF-Verteilung: beim horizontalen Erstkoerper wird sie NICHT gefragt - die
;; Aufrufstelle in vf-linienzug-modus gibt "2" (alles am Einlauf) fest vor
;; (vfl-vf-einheit-abschluss, Argument gf-verteilung-fest), weil L_GF dort nur
;; der strukturelle Mindest-Eingang ist. Ein "gf_verteilung"-Feld an einer
;; Horizontal-VF-Sektion bleibt darum wirkungslos (alte Specs tragen es noch).
(if (not erst-hor)
(vsp-code-raus *vsp-tab-verteilung* (ssg-val sek "gf_verteilung")
"gf_verteilung"))
(if erst-hor
(progn
(vsp-raus "STR" (vsp-ja-code (ssg-val sek "vf_sep_vor")))
@@ -425,6 +447,15 @@
" aber noch weitere subs")))
(vsp-code-raus *vsp-tab-endpunkt* "kettenende" "sub")
(vsp-raus "STR" (vsp-ja-code (ssg-val sub "es")))
;; Mit ES: Winkel+Seite werden SCHON HIER erfragt (vfl-frage-es-seite,
;; inkl. eigenem STEP-Marker) und nicht erst im Abschluss - sie
;; bestimmen den ES-Fussabdruck, der in die Streckenzerlegung eingeht.
;; Darum stehen sie am sub und nicht in einer eigenen ES-Sektion.
(if (vsp-ja-p (ssg-val sub "es"))
(progn
(vsp-raus "STEP" "ES")
(vsp-wert-str (ssg-val sub "es_winkel") "es_winkel")
(vsp-code-raus *vsp-tab-seite* (ssg-val sub "es_seite") "es_seite")))
(vsp-linie sub)
(vsp-zahl "REAL" (ssg-val sub "hoehe") "hoehe")
(vsp-winkel-idx sub))
+80 -192
View File
@@ -94,37 +94,28 @@
{
"spec_id": "VF_hundm05_LZ_02",
"modus": 1,
"start_punkt": [8572.181, 1226.825, 2154.0],
"start_punkt": [9570.86433958955, 1167.499104795102, 2154.0],
"start_hoehe": 2154.0,
"as": 1,
"as_winkel": "90",
"as_seite": "links",
"beschreibung": "Linienzug (Modus 1), Start Z2154: GF-Linie 3149 mm / 3 Grad -> Horizontal-VF 1575 mm -> Vario-Kurve 90 rechts innen -> Vario-Kurve 90 rechts innen -> Linie bis Kettenende 1153 mm auf Z2154 -> ES 90 links",
"sivas_id": "0019",
"sivas_bezeichnung": "VarioFoerderer :5",
"planquadrat": "D/1",
"block": "VF_46",
"dxf_handle": "EFD4",
"quelle": "INSERT EFD4 (Block VF_46) in polylines.dxf, XDATA-App SSG_VF_EDIT, Marker linienzug; im Journal aufgezeichneter Kettenstart: [17201.778323, 1205.360995, 2100.000000]; korrigiert per HundM05.dxf (sps_skel) - Startpunkt war faelschlich auf [8571.95068, 1276.061424, 2494.930831] aufgezeichnet (Anschluss an Kreisel hatte Luecke)"
},
{
"glied": "Linie-GF",
"nr": 1,
"dl": 3149.399248,
"hz": 90.0,
"gefaelle": "winkel",
"winkel": 3.0,
"ende": "nein"
"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": 2,
"dl": 1574.912802,
"gf_verteilung": "einlauf",
"nr": 1,
"dl": 5854.769733,
"hz": 90.0,
"eingang_hoehe": 1800.0,
"vf_sep_vor": 0,
"vf_sep_nach": 0,
"vf_ende": "nein",
"vf_separator": 0
"vf_ende": "automatisch"
},
{
"sub": "vario-kurve",
@@ -134,7 +125,7 @@
},
{
"sub": "horizontal",
"dl": 338.966171,
"dl": 457.481366,
"sep_vor": 0,
"sep_nach": 0
},
@@ -145,67 +136,39 @@
"variante": "innen"
},
{
"sub": "auf-ab",
"dl": 4528.583638,
"hoehe": 2335.0,
"winkel_idx": 4
},
{
"sub": "horizontal",
"dl": 1443.864872,
"sep_vor": 0,
"sep_nach": 0
},
{
"sub": "motorstation"
},
{
"glied": "Linie",
"nr": 3,
"dl": 1153.407829,
"sub": "kettenende",
"es": 1,
"es_winkel": "90",
"es_seite": "links",
"dl": 5854.769733,
"hoehe": 2154.0,
"segment_typ": "GF"
},
{
"glied": "ES",
"nr": 4,
"winkel": "90",
"seite": "links"
"winkel_idx": 3
},
{
"spec_id": "VF_hundm05_LZ_03",
"modus": 1,
"start_punkt": [12916.988, 1237.971, 2154.0],
"start_punkt": [13648.0372507632, 1168.039702925621, 2154.0],
"start_hoehe": 2154.0,
"as": 1,
"as_winkel": "90",
"as_seite": "links",
"beschreibung": "Linienzug (Modus 1), Start Z2154: GF-Linie 3149 mm / 3 Grad -> Horizontal-VF 1575 mm -> Vario-Kurve 90 rechts innen -> Vario-Kurve 90 rechts innen -> Linie bis Kettenende 1153 mm auf Z2154 -> ES 90 links",
"sivas_id": "0018",
"sivas_bezeichnung": "VarioFoerderer :4",
"planquadrat": "F/1",
"block": "VF_46",
"dxf_handle": "FA5A",
"quelle": "INSERT FA5A (Block VF_46) in polylines.dxf, XDATA-App SSG_VF_EDIT, Marker linienzug; im Journal aufgezeichneter Kettenstart: [17201.778323, 1205.360995, 2100.000000]; korrigiert per HundM05.dxf (sps_skel) - Startpunkt war faelschlich auf [12916.465798, 1276.061424, 2494.930831] aufgezeichnet (Anschluss an Kreisel hatte Luecke)"
},
{
"glied": "Linie-GF",
"nr": 1,
"dl": 3149.399248,
"hz": 90.0,
"gefaelle": "winkel",
"winkel": 3.0,
"ende": "nein"
"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": 2,
"dl": 1574.912802,
"gf_verteilung": "einlauf",
"nr": 1,
"dl": 5854.769733,
"hz": 90.0,
"eingang_hoehe": 1800.0,
"vf_sep_vor": 0,
"vf_sep_nach": 0,
"vf_ende": "nein",
"vf_separator": 0
"vf_ende": "automatisch"
},
{
"sub": "vario-kurve",
@@ -215,7 +178,7 @@
},
{
"sub": "horizontal",
"dl": 338.966171,
"dl": 457.481366,
"sep_vor": 0,
"sep_nach": 0
},
@@ -226,67 +189,39 @@
"variante": "innen"
},
{
"sub": "auf-ab",
"dl": 4528.583638,
"hoehe": 2335.0,
"winkel_idx": 4
},
{
"sub": "horizontal",
"dl": 1443.864872,
"sep_vor": 0,
"sep_nach": 0
},
{
"sub": "motorstation"
},
{
"glied": "Linie",
"nr": 3,
"dl": 1153.407829,
"sub": "kettenende",
"es": 1,
"es_winkel": "90",
"es_seite": "links",
"dl": 5854.769733,
"hoehe": 2154.0,
"segment_typ": "GF"
},
{
"glied": "ES",
"nr": 4,
"winkel": "90",
"seite": "links"
"winkel_idx": 3
},
{
"spec_id": "VF_hundm05_LZ_04",
"modus": 1,
"start_punkt": [17201.778323, 1205.360995, 2154.0],
"start_punkt": [17815.98017615211, 1168.495370013883, 2154.0],
"start_hoehe": 2154.0,
"as": 1,
"as_winkel": "90",
"as_seite": "links",
"beschreibung": "Linienzug (Modus 1), Start Z2154: GF-Linie 3149 mm / 3 Grad -> Horizontal-VF 1575 mm -> Vario-Kurve 90 rechts innen -> Vario-Kurve 90 rechts innen -> Linie bis Kettenende 1153 mm auf Z2154 -> ES 90 links",
"sivas_id": "0020",
"sivas_bezeichnung": "VarioFoerderer :6",
"planquadrat": "H/1",
"block": "VF_46",
"dxf_handle": "E498",
"quelle": "INSERT E498 (Block VF_46) in polylines.dxf, XDATA-App SSG_VF_EDIT, Marker linienzug; im Journal aufgezeichneter Kettenstart: [17201.778323, 1205.360995, 2100.000000]"
},
{
"glied": "Linie-GF",
"nr": 1,
"dl": 3149.399248,
"hz": 90.0,
"gefaelle": "winkel",
"winkel": 3.0,
"ende": "nein"
"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": 2,
"dl": 1574.912802,
"gf_verteilung": "einlauf",
"nr": 1,
"dl": 5854.769733,
"hz": 90.0,
"eingang_hoehe": 1800.0,
"vf_sep_vor": 0,
"vf_sep_nach": 0,
"vf_ende": "nein",
"vf_separator": 0
"vf_ende": "automatisch"
},
{
"sub": "vario-kurve",
@@ -296,7 +231,7 @@
},
{
"sub": "horizontal",
"dl": 338.966171,
"dl": 457.481366,
"sep_vor": 0,
"sep_nach": 0
},
@@ -307,67 +242,39 @@
"variante": "innen"
},
{
"sub": "auf-ab",
"dl": 4528.583638,
"hoehe": 2335.0,
"winkel_idx": 4
},
{
"sub": "horizontal",
"dl": 1443.864872,
"sep_vor": 0,
"sep_nach": 0
},
{
"sub": "motorstation"
},
{
"glied": "Linie",
"nr": 3,
"dl": 1153.407829,
"sub": "kettenende",
"es": 1,
"es_winkel": "90",
"es_seite": "links",
"dl": 5854.769733,
"hoehe": 2154.0,
"segment_typ": "GF"
},
{
"glied": "ES",
"nr": 4,
"winkel": "90",
"seite": "links"
"winkel_idx": 3
},
{
"spec_id": "VF_hundm05_LZ_05",
"modus": 1,
"start_punkt": [21491.319, 1213.582, 2154.0],
"start_punkt": [21590.18692053851, 1167.376346082522, 2154.0],
"start_hoehe": 2154.0,
"as": 1,
"as_winkel": "90",
"as_seite": "links",
"beschreibung": "Linienzug (Modus 1), Start Z2154: GF-Linie 3149 mm / 3 Grad -> Horizontal-VF 1575 mm -> Vario-Kurve 90 rechts innen -> Vario-Kurve 90 rechts innen -> Linie bis Kettenende 1153 mm auf Z2154 -> ES 90 links",
"sivas_id": "0008",
"sivas_bezeichnung": "VarioFoerderer :3",
"planquadrat": "J/1",
"block": "VF_46",
"dxf_handle": "104E0",
"quelle": "INSERT 104E0 (Block VF_46) in polylines.dxf, XDATA-App SSG_VF_EDIT, Marker linienzug; im Journal aufgezeichneter Kettenstart: [17201.778323, 1205.360995, 2100.000000]; korrigiert per HundM05.dxf (sps_skel) - Startpunkt war faelschlich auf [21490.273781, 1195.739767, 2494.930831] aufgezeichnet"
},
{
"glied": "Linie-GF",
"nr": 1,
"dl": 3149.399248,
"hz": 90.0,
"gefaelle": "winkel",
"winkel": 3.0,
"ende": "nein"
"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": 2,
"dl": 1574.912802,
"gf_verteilung": "einlauf",
"nr": 1,
"dl": 5854.769733,
"hz": 90.0,
"eingang_hoehe": 1800.0,
"vf_sep_vor": 0,
"vf_sep_nach": 0,
"vf_ende": "nein",
"vf_separator": 0
"vf_ende": "automatisch"
},
{
"sub": "vario-kurve",
@@ -377,7 +284,7 @@
},
{
"sub": "horizontal",
"dl": 338.966171,
"dl": 457.481366,
"sep_vor": 0,
"sep_nach": 0
},
@@ -388,32 +295,13 @@
"variante": "innen"
},
{
"sub": "auf-ab",
"dl": 4528.583638,
"hoehe": 2335.0,
"winkel_idx": 4
},
{
"sub": "horizontal",
"dl": 1443.864872,
"sep_vor": 0,
"sep_nach": 0
},
{
"sub": "motorstation"
},
{
"glied": "Linie",
"nr": 3,
"dl": 1153.407829,
"sub": "kettenende",
"es": 1,
"es_winkel": "90",
"es_seite": "links",
"dl": 5854.769733,
"hoehe": 2154.0,
"segment_typ": "GF"
},
{
"glied": "ES",
"nr": 4,
"winkel": "90",
"seite": "links"
"winkel_idx": 3
},
{
"id": "KR_Kreuz_Q2_90Grad",