fix: Etage-Solver bilanziert Ein-/Auslauf auf der Hauptachse statt im Blocksystem

Die gebaute Etage-Kette endete 987.63 mm zu weit (X) und 3.46 mm zu hoch (Z).
Der Fehlbetrag lag vollstaendig im Ein-/Auslauf: der Solver reservierte dort
1177.87 mm, real verbraucht die Kette 2165.09 mm.

Zwei Ursachen:

(a) vf-element-masse liefert KS_EIN->KS_AUS im BLOCK-Koordinatensystem. AS
    und ES werden aber um (hz - ein-ang) gedreht eingebaut - beim
    AS_Element_30 ist ein-ang = 90 Grad, dadurch landet die Block-Y-
    Komponente auf der Hauptachse. Bilanziert wurde die Block-X-Komponente:
    AS 209.7 statt real 486.10, ES -242.6 statt real 525.29.

(b) Die Auslauf-Staustrecke wurde fix mit 400 mm budgetiert, ist seit dem
    Umbau "Auslauf RUECKWAERTS vom ES gerechnet" aber variabel (im Testfall
    334 mm). Daraus die 3.46 mm Resthoehe.

Fix: neue Funktion etage-rand-budget (seite) rechnet Einlauf (Schritte 1-4)
und Auslauf (12-15) exakt so, wie etage-foerderanlage-einfuegen sie baut,
inklusive analytisch vorab bestimmtem L-exit. Kern sind die reinen,
hz-unabhaengigen Projektionen etage-laengs/etage-quer. Die alte Naeherung
bleibt als Fallback, falls ein Block fehlt.

Damit faellt auch die bisherige Annahme, Laengentreue und seitliche
Fluchtung des ES-KS_AUS seien nicht gleichzeitig loesbar: die Bauschritte
5-11 laufen auf der Hauptachse und tragen nichts zur Quer-Bilanz bei,
L-exit ist deshalb von L_GF/L_VF unabhaengig und vor dem Solve bestimmbar.

Weiter: Konstante *vfk-etage-stau-ein* (400 mm) ersetzt die nackte Zahl an
beiden Stellen; zwei neue lang-Keys (de+en, Paritaet 1095/1095); neuer
Regressionsblock tu-tests-etage in tests/test_unit.lsp mit dem AS/ES-Fall
(Suite 520/520 gruen).

In BricsCAD verifiziert: Soll-Endpunkt (11804.31, 3039.64, 4256.5) exakt
getroffen, Abweichung 0.00 mm in allen drei Achsen.

Offen: bei korrekter Bilanz bleiben im Testfall bei 33 Grad nur 16.13 mm
fuer beide GF-Strecken. Eine Mindest-GF-Laenge als Gueltigkeitskriterium
der Winkelwahl ist noch nicht eingebaut.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-10-09 18:01:22 +02:00
parent b7b1df25b9
commit 3116e639eb
5 changed files with 270 additions and 33 deletions
+8
View File
@@ -193,6 +193,14 @@
;; etage-foerderanlage-einfuegen (vf_etage.lsp).
(if (null *vfk-etage-auslauf-min-clamp*) (setq *vfk-etage-auslauf-min-clamp* 50.0))
;; Feste Einlauf-Staustrecke (mm) des Etage-Typs: Schritt 2 in
;; etage-foerderanlage-einfuegen, direkt hinter dem AS-Element. Das
;; Gegenstueck am Auslauf (Schritt 13) ist NICHT fest, sondern wird aus der
;; Quer-Bilanz bestimmt (etage-rand-budget), damit das ES-KS_AUS
;; querversatzfrei auf der Hauptachse landet. Dient zugleich als Rueckfallwert
;; fuer diese Auslaufstrecke, wenn der Auslauf nicht schwenkt (Quer-Rate 0).
(if (null *vfk-etage-stau-ein*) (setq *vfk-etage-stau-ein* 400.0))
;; Mindest-2D-Laenge (mm) eines Pfad-Segments (LINE-Laenge bzw. ARC-Sehne),
;; das der Linienzug-Modus 2/3 aus einer Objektauswahl akzeptiert. Kuerzere
;; Objekte sind Geister-/Artefakt-Elemente (z.B. ein von einer Rechteck-Auswahl