diff --git a/Lisp/vf_core.lsp b/Lisp/vf_core.lsp index cefec02..ffb5cb7 100644 --- a/Lisp/vf_core.lsp +++ b/Lisp/vf_core.lsp @@ -786,8 +786,8 @@ (setq shz-l (sin (* (float hz) (/ pi 180.0)))) (setq halb (/ (float deltaL) 2.0)) (setq label-pt (list - (+ (car startpunkt) (* halb chz-l) (* 200.0 shz-l)) - (+ (cadr startpunkt) (* halb shz-l) (* -200.0 chz-l)) + (+ (car startpunkt) (* halb chz-l) (* *vfk-label-versatz* shz-l)) + (+ (cadr startpunkt) (* halb shz-l) (* (- *vfk-label-versatz*) chz-l)) (caddr startpunkt))) ;; Textwinkel auf 0/90 Grad einrasten (nie kopfueber, unabhaengig von hz) (setq basis-winkel (float hz)) @@ -800,7 +800,7 @@ (cons 8 "VF_Beschriftung") '(67 . 0) (cons 10 label-pt) - (cons 40 100.0) + (cons 40 *vfk-label-texthoehe*) (cons 1 label-txt) (cons 50 (* basis-winkel (/ pi 180.0))) '(72 . 1) @@ -852,13 +852,13 @@ '(8 . "0") '(67 . 0) (cons 10 (list (car startpunkt) attdef-ypos (caddr startpunkt))) - '(40 . 50.0) + (cons 40 *vfk-attdef-texthoehe*) (cons 1 (cadr def)) (cons 3 (car def)) (cons 2 (car def)) '(70 . 1) )) - (setq attdef-ypos (- attdef-ypos 100.0)) + (setq attdef-ypos (- attdef-ypos *vfk-attdef-zeilenabstand*)) ) ;; Alle neuen Entities seit lastEnt sammeln diff --git a/Lisp/vf_etage.lsp b/Lisp/vf_etage.lsp index af0b55b..c986de2 100644 --- a/Lisp/vf_etage.lsp +++ b/Lisp/vf_etage.lsp @@ -75,7 +75,7 @@ ) (progn (princ (ssg-text (if (tblsearch "BLOCK" as30-blk) "vfe-warn-ks-fehlt-standard" "vfe-warn-block-as30-fehlt"))) - (setq etage-aus-dx 525.8 etage-aus-dz -72.9) + (setq etage-aus-dx *vfk-etage-as-fallback-dx* etage-aus-dz *vfk-etage-as-fallback-dz*) ) ) @@ -91,7 +91,7 @@ ) (progn (princ (ssg-text (if (tblsearch "BLOCK" es30-blk) "vfe-warn-ks-fehlt-standard" "vfe-warn-block-es30-fehlt"))) - (setq etage-ein-dx 576.2 etage-ein-dz -54.6) + (setq etage-ein-dx *vfk-etage-es-fallback-dx* etage-ein-dz *vfk-etage-es-fallback-dz*) ) ) @@ -104,7 +104,7 @@ (setq etage-gef-dx-links (car m) etage-gef-dz-links (caddr m)) (progn (princ (ssg-text (if (tblsearch "BLOCK" gefaelle-blockname) "vfe-warn-kein-ks-links" "vfe-warn-block-fehlt-links"))) - (setq etage-gef-dx-links 0.0 etage-gef-dz-links -10.0) + (setq etage-gef-dx-links 0.0 etage-gef-dz-links *vfk-etage-gefaellebogen-fallback-dz*) ) ) (princ (ssg-textf "vfe-gefaellebogen-links-mass" (list (rtos etage-gef-dx-links 2 2) (rtos etage-gef-dz-links 2 2)))) @@ -118,7 +118,7 @@ (setq etage-gef-dx-rechts (car m) etage-gef-dz-rechts (caddr m)) (progn (princ (ssg-text (if (tblsearch "BLOCK" gefaelle-blockname) "vfe-warn-kein-ks-rechts" "vfe-warn-block-fehlt-rechts"))) - (setq etage-gef-dx-rechts 0.0 etage-gef-dz-rechts -10.0) + (setq etage-gef-dx-rechts 0.0 etage-gef-dz-rechts *vfk-etage-gefaellebogen-fallback-dz*) ) ) (princ (ssg-textf "vfe-gefaellebogen-rechts-mass" (list (rtos etage-gef-dx-rechts 2 2) (rtos etage-gef-dz-rechts 2 2)))) @@ -352,10 +352,10 @@ abs-dz-EIN (abs etage-ein-dz) abs-dz-GEF (abs etage-gef-dz)) - (setq winkel-list '(3 6 9 12 15 18 21 27 33 39 45 51)) + (setq winkel-list *vfk-bogen-winkel*) (setq ergebnis-liste '()) - (setq cos3 (cos (* 3.0 (/ pi 180.0))) - sin3 (sin (* 3.0 (/ pi 180.0)))) + (setq cos3 (cos (* *vfk-gefaelle-winkel* (/ pi 180.0))) + sin3 (sin (* *vfk-gefaelle-winkel* (/ pi 180.0)))) (setq feste-gesamt-cos (* FESTE_ETAGE_MITTE cos3)) (setq feste-gesamt-sin (* FESTE_ETAGE_MITTE sin3)) @@ -384,8 +384,8 @@ (setq ergebnis-liste (cons (list winkel nil nil nil) ergebnis-liste)) ) (progn - (setq rad5 (* 3.0 (/ pi 180.0))) - (setq rad7 (* (float (if (= richtung "Auf") (- 3 winkel) (+ winkel 3))) + (setq rad5 (* *vfk-gefaelle-winkel* (/ pi 180.0))) + (setq rad7 (* (float (if (= richtung "Auf") (- *vfk-gefaelle-winkel* winkel) (+ winkel *vfk-gefaelle-winkel*))) (/ pi 180.0))) (setq bogen-x1 (+ (* (car mass1) (cos rad5)) (* (caddr mass1) (sin rad5)))) (setq bogen-z1 (+ (* (- (car mass1)) (sin rad5)) (* (caddr mass1) (cos rad5)))) @@ -544,13 +544,13 @@ (princ (ssg-textf "vfe-step2" (list (rtos as-hz 2 1)))) (setq aktueller-punkt (insert-hz-scaled-block-by-ks "Staustrecke_SP_1000_mm" aktueller-punkt - 400 as-hz 3)) + 400 as-hz *vfk-gefaelle-winkel*)) ;; 3. Separator (folgt der AS-Richtung as-hz, 3 Grad vert) (princ (ssg-textf "vfe-step3" (list (rtos as-hz 2 1)))) (setq aktueller-punkt (insert-hz-rotated-block-with-ks "Staustrecke_Separator_SP_300_mm" aktueller-punkt - as-hz 3 300 0)) + as-hz *vfk-gefaelle-winkel* *vfk-separator-laenge* 0)) ;; Ab hier laufende Richtung cur-hz mitfuehren (frame-verkettet). Start = ;; KS_AUS-Richtung des AS (as-hz). Jeder Gefaellebogen dreht cur-hz um seinen @@ -570,7 +570,7 @@ (progn (princ (ssg-textf "vfe-step5-strecke" (list (rtos L_GF1 2 2)))) (setq aktueller-punkt - (insert-inclined-scaled-block "Staustrecke_SP_1000_mm" aktueller-punkt L_GF1 3 cur-hz)) + (insert-inclined-scaled-block "Staustrecke_SP_1000_mm" aktueller-punkt L_GF1 *vfk-gefaelle-winkel* cur-hz)) ) (princ (ssg-text "vfe-step5-skip")) ) @@ -578,7 +578,7 @@ ;; 6. Umlenkstation (3 Grad geneigt) (princ (ssg-text "vfe-step6")) (setq aktueller-punkt - (insert-rotated-block-with-ks (strcat "Vario_Umlenkstation_500mm_" (vf-motorseite-aktuell)) aktueller-punkt 3 500 0 cur-hz)) + (insert-rotated-block-with-ks (strcat "Vario_Umlenkstation_500mm_" (vf-motorseite-aktuell)) aktueller-punkt *vfk-gefaelle-winkel* *vfk-stations-laenge* 0 cur-hz)) ;; 7. 1. Vertikalbogen (3 Grad geneigt) (if (= richtung "Auf") @@ -594,7 +594,7 @@ (setq bogen-dx (car bogen-mass) bogen-dz (caddr bogen-mass)) (princ (ssg-textf "vfe-step7" (list bogen-name))) (setq aktueller-punkt - (insert-rotated-block-with-ks bogen-name aktueller-punkt 3 bogen-dx bogen-dz cur-hz)) + (insert-rotated-block-with-ks bogen-name aktueller-punkt *vfk-gefaelle-winkel* bogen-dx bogen-dz cur-hz)) ;; 8. Variable Strecke L_VF (if (> L_VF 0.1) @@ -647,14 +647,14 @@ ;; 10. Motorstation (3 Grad geneigt) (princ (ssg-text "vfe-step10")) (setq aktueller-punkt - (insert-rotated-block-with-ks (strcat "Vario_Motorstation_500mm_" (vf-motorseite-aktuell)) aktueller-punkt 3 500 0 cur-hz)) + (insert-rotated-block-with-ks (strcat "Vario_Motorstation_500mm_" (vf-motorseite-aktuell)) aktueller-punkt *vfk-gefaelle-winkel* *vfk-stations-laenge* 0 cur-hz)) ;; 11. L_GF2 (3 Grad geneigt) (if (> L_GF2 0.1) (progn (princ (ssg-textf "vfe-step11-gf2" (list (rtos L_GF2 2 2)))) (setq aktueller-punkt - (insert-inclined-scaled-block "Staustrecke_SP_1000_mm" aktueller-punkt L_GF2 3 cur-hz)) + (insert-inclined-scaled-block "Staustrecke_SP_1000_mm" aktueller-punkt L_GF2 *vfk-gefaelle-winkel* cur-hz)) ) (princ (ssg-text "vfe-step11-skip")) ) @@ -683,26 +683,26 @@ (setq es-wy (+ (* (caddr es-info) (sin es-place-rad)) (* (cadddr es-info) (cos es-place-rad)))) (setq es-perp (+ (* es-wx (- perp-sin)) (* es-wy perp-cos))) ;; perp-Auslenkung pro Laengeneinheit bei cur-hz (Neigung 3 Grad) - (setq perp-rate (* (cos (* 3.0 (/ pi 180.0))) + (setq perp-rate (* (cos (* *vfk-gefaelle-winkel* (/ pi 180.0))) (sin (* (- cur-hz hz) (/ pi 180.0))))) ;; Loesen: p2b-perp + (L_exit + 300)*perp-rate + es-perp = 0 (setq L-exit (if (> (abs perp-rate) 1e-6) - (- (/ (- (+ p2b-perp es-perp)) perp-rate) 300.0) + (- (/ (- (+ p2b-perp es-perp)) perp-rate) *vfk-separator-laenge*) 400.0)) - (if (< L-exit 50.0) (setq L-exit 50.0)) ; Schutz gegen negative/zu kurze GF + (if (< L-exit *vfk-etage-auslauf-min-clamp*) (setq L-exit *vfk-etage-auslauf-min-clamp*)) ; Schutz gegen negative/zu kurze GF ;; 13. Auslauf-Staustrecke (variabel, folgt cur-hz, 3 Grad vert, KS_EIN) (princ (ssg-textf "vfe-step13" (list (rtos L-exit 2 1) (rtos cur-hz 2 1)))) (setq aktueller-punkt (insert-hz-scaled-block-by-ks "Staustrecke_SP_1000_mm" aktueller-punkt - L-exit cur-hz 3)) + L-exit cur-hz *vfk-gefaelle-winkel*)) ;; 14. Separator (verkettet, folgt cur-hz, 3 Grad vert) (princ (ssg-textf "vfe-step14" (list (rtos cur-hz 2 1)))) (setq aktueller-punkt (insert-hz-rotated-block-with-ks "Staustrecke_Separator_SP_300_mm" aktueller-punkt - cur-hz 3 300 0)) + cur-hz *vfk-gefaelle-winkel* *vfk-separator-laenge* 0)) ;; 15. ES_30 (verkettet: KS_EIN auf cur-hz; KS_AUS auf der Hauptlinie) (princ (ssg-textf "vfe-step15" (list es-block (rtos cur-hz 2 1)))) diff --git a/Lisp/vf_konstanten.lsp b/Lisp/vf_konstanten.lsp index caa3a47..dba406c 100644 --- a/Lisp/vf_konstanten.lsp +++ b/Lisp/vf_konstanten.lsp @@ -3,23 +3,29 @@ ;; Magic-Numbers aus vf_core.lsp, vf_standard.lsp, vf_etage.lsp, ;; vf_linienzug.lsp ;; ============================================================ -;; ZWECK dieser Datei: Nachschlagewerk + Grundlage fuer eine schrittweise -;; Migration - NICHT (noch) die aktive Quelle der Werte. Die vier vf_*.lsp- -;; Module verwenden ihre Werte weiterhin direkt (eigene *vfl-*/*vfs-*/ -;; FESTE_*-Variablen bzw. rohe Literale, teils ueber ssg-cfg-or). Aendert -;; sich ein Wert hier, hat das AKTUELL KEINE Wirkung auf den Bauablauf - -;; die entsprechende Stelle im jeweiligen Modul muss weiterhin dort separat -;; angepasst werden. Diese Datei macht nur sichtbar, WELCHE Werte es gibt, -;; wo sie herkommen und wo sie (noch) dupliziert sind. +;; ZWECK dieser Datei: zentrale, aktive Quelle der Magic-Numbers aus dem +;; VarioFoerderer-Cluster. Die weit ueberwiegende Mehrheit der frueher +;; rohen Literale in vf_core/vf_standard/vf_etage/vf_linienzug wurde auf +;; die *vfk-*-Konstanten hier umgestellt (Migration abgeschlossen, siehe +;; Git-Historie). Aendert sich ein Wert hier, wirkt sich das direkt auf +;; alle referenzierenden Aufrufstellen aus. ;; -;; Migrationsidee (spaeter, schrittweise, EIN Modul nach dem anderen): -;; einzelne Aufrufstellen von rohem Literal auf *vfk-*-Konstante umstellen, -;; mit Test in BricsCAD nach jedem Modul. Bei den bereits ueber ssg-cfg-or -;; konfigurierbaren Werten (gefaelle_winkel, bogen_winkel, feste_horizontal, -;; staustrecke_basis, separator_block_dx/dz, station_block_dx/dz, -;; skalierung_basis) bleibt die Config-Anbindung die fuehrende Quelle - -;; *vfk-*-Konstanten hier sind dafuer nur Fallback/Dokumentation, siehe -;; jeweiliger Kommentar. +;; Ausnahmen (bewusst NICHT umgestellt): +;; - Werte, die bereits ueber (ssg-cfg-or "vario" "" ) laufen +;; (gefaelle_winkel, bogen_winkel, feste_horizontal, staustrecke_basis, +;; separator_block_dx/dz, station_block_dx/dz, skalierung_basis): dort +;; bleibt die Config-Anbindung die fuehrende Quelle, *vfk-* dient nur als +;; Fallback/Dokumentation (siehe jeweiliger Kommentar). +;; - Stellen, an denen der Literal-Wert in einem itoa-/Integer-Kontext +;; verwendet wird (z.B. vf_etage.lsp: "best-winkel +/- 3" vor itoa) und +;; *vfk-gefaelle-winkel* als Float (3.0) statt Integer (3) einen Typfehler +;; ausloesen wuerde. Bewusst als rohes Literal belassen (siehe Kommentare +;; im jeweiligen Modul). +;; - Blocknamen-Strings, die eine Zahl eingebettet tragen (z.B. +;; "Vario_Umlenkstation_500mm_...", "Staustrecke_Separator_SP_300_mm"): +;; das sind DWG-Blockreferenzen, keine Zahlenwerte. +;; - Die mm/m-Umrechnung 2000.0 (= 2 * *vfk-mm-je-m*) ist keine 1:1- +;; Ersetzung und bleibt als eigenstaendiges Literal bestehen. ;; ;; Geladen von vf_core.lsp VOR vf_standard/vf_etage/vf_linienzug (siehe ;; dortige Ladereihenfolge, dieselbe Guard-Systematik wie in den anderen @@ -49,12 +55,11 @@ ;; ============================================================ ;; Basis-Neigungswinkel jeder Gefaellestrecke (GF) - AKTIVE Quelle bleibt -;; (ssg-cfg-or "vario" "gefaelle_winkel" 3), an >15 Stellen korrekt darueber -;; bezogen. ABER an mindestens 12 weiteren Stellen als rohes 3.0/3-Literal -;; dupliziert, OHNE Bezug zur Config (vf_standard.lsp Z.309/412; -;; vf_etage.lsp Z.449-450/479/654ff/793; vf_linienzug.lsp Z.1071/1554/2873/ -;; 3394/4159/4273/4278) - eine Aenderung des Winkels ueber Config wuerde -;; diese Stellen NICHT mitziehen. +;; (ssg-cfg-or "vario" "gefaelle_winkel" 3) ueberall dort, wo bereits ueber +;; Config bezogen wird. Alle frueher rohen 3.0/3-Literale OHNE Config-Bezug +;; in vf_standard.lsp/vf_etage.lsp/vf_linienzug.lsp wurden auf +;; *vfk-gefaelle-winkel* umgestellt (Ausnahme: einzelne itoa-/Integer- +;; Kontexte in vf_etage.lsp, siehe Datei-Kopfkommentar). (if (null *vfk-gefaelle-winkel*) (setq *vfk-gefaelle-winkel* 3.0)) ;; Toleranzband (Grad) um *vfk-gefaelle-winkel*: liegt der natuerliche @@ -65,9 +70,10 @@ ;; Diskrete Bogenwinkel-Tabelle fuer VF-Boegen (auf/ab). AKTIVE Quelle in ;; vf_standard.lsp/vf_linienzug.lsp: (ssg-cfg-or "vario" "bogen_winkel" ...) -;; mit demselben Fallback. INKONSISTENZ: in vf_etage.lsp (Zeile ~447) fest -;; verdrahtet OHNE Config-Anbindung - eine Config-Aenderung wuerde dort -;; nicht greifen. +;; mit demselben Fallback. Die frueher fest verdrahtete Inkonsistenz in +;; vf_etage.lsp (winkel-list ohne Config-Anbindung) wurde behoben: bezieht +;; jetzt *vfk-bogen-winkel* direkt (weiterhin ohne Config-Anbindung wie +;; zuvor, aber konsistent mit dem Fallback-Wert der anderen Module). (if (null *vfk-bogen-winkel*) (setq *vfk-bogen-winkel* '(3 6 9 12 15 18 21 27 33 39 45 51))) ;; GF-Bogen-Winkel (horizontale Kurve): 30/60/90 Grad. AKTIVE, EINMALIGE Quelle @@ -95,12 +101,12 @@ (if (null *vfk-etage-hz-winkel*) (setq *vfk-etage-hz-winkel* 30.0)) ;; Eckwinkel-Toleranz bei der automatischen Pfad-Klassifizierung (Modus 3, -;; vf-linienzug-modus3 -> vfl2-pruefe-eckwinkel). Rohes Literal in -;; vf_linienzug.lsp Zeile ~3386, keine Konstante bisher. +;; vf-linienzug-modus3 -> vfl2-pruefe-eckwinkel). Aktiv referenziert in +;; vf_linienzug.lsp (beide Aufrufstellen von vfl2-pruefe-eckwinkel). (if (null *vfk-eckwinkel-toleranz*) (setq *vfk-eckwinkel-toleranz* 5.0)) ;; Schwellwert (Grad), ab dem ein Frame noch als "flach" (~0 Grad) gilt. -;; Rohes Literal in vfl-frame-flach-p (vf_linienzug.lsp), keine Konstante. +;; Aktiv referenziert in vfl-frame-flach-p (vf_linienzug.lsp). (if (null *vfk-frame-flach-toleranz*) (setq *vfk-frame-flach-toleranz* 1.5)) ;; ============================================================ @@ -128,58 +134,55 @@ ;; Umlenk-/Motorstation-Fussabdruck (mm), je EINE Station. AKTIVE Quelle in ;; vf_standard.lsp: (ssg-cfg-or "vario" "station_block_dx" 500). In -;; vf_etage.lsp/vf_linienzug.lsp ueberwiegend als rohes 500/500.0-Literal -;; direkt in Formeln/Blockaufrufen dupliziert (>10 Fundstellen), OHNE -;; Config-Bezug. +;; vf_etage.lsp/vf_linienzug.lsp jetzt aktiv referenziert (vormals rohes +;; 500/500.0-Literal, OHNE Config-Bezug). (if (null *vfk-stations-laenge*) (setq *vfk-stations-laenge* 500.0)) ;; Separator-Laenge (mm). AKTIVE Quelle in vf_standard.lsp: (ssg-cfg-or ;; "vario" "separator_block_dx" 300). In vf_etage.lsp/vf_linienzug.lsp -;; ueberwiegend als rohes 300/300.0-Literal dupliziert (Blockname -;; "Staustrecke_Separator_SP_300_mm" traegt den Wert zusaetzlich im String). +;; jetzt aktiv referenziert (Blockname "Staustrecke_Separator_SP_300_mm" +;; traegt den Wert weiterhin zusaetzlich im String - dort unangetastet). (if (null *vfk-separator-laenge*) (setq *vfk-separator-laenge* 300.0)) ;; Mindestlaenge (mm) fuer eine VF-Einheit (Umlenk+Motor = 2x -;; *vfk-stations-laenge*). Rohes 1000.0-Literal an 7 Stellen in -;; vf_linienzug.lsp dupliziert (vfl-vf-entscheidung, vfl-vf-machbar-p, -;; vfl-segment-entscheidung, vf-linienzug-modus mehrfach). +;; *vfk-stations-laenge*). Aktiv referenziert in vf_linienzug.lsp +;; (vfl-vf-entscheidung, vfl-vf-machbar-p, vfl-segment-entscheidung, +;; vf-linienzug-modus). (if (null *vfk-vf-mindestlaenge*) (setq *vfk-vf-mindestlaenge* 1000.0)) ;; Mindestlaenge (mm) am Linienzug-Kettenende-Abschluss (nur Motor+ ;; Separator, kein Umlenk-Anteil - siehe *vfk-feste-horizontal-kettenende*). -;; Rohes 800.0-Literal, identisch zum Budget-Wert selbst. +;; Aktiv referenziert in vf_linienzug.lsp. (if (null *vfk-kettenende-mindestlaenge*) (setq *vfk-kettenende-mindestlaenge* 800.0)) ;; Mindestlaenge (mm) fuer die 3-Grad-GF-Anschlussstrecke (GF1 am Einlauf ;; einer VF-Einheit). Bereits als *vfl-gf-min-laenge* in vf_linienzug.lsp -;; benannt (Wert 400.0) - hier nur gespiegelt. In vf_linienzug.lsp Zeile -;; ~4143 zusaetzlich als rohes 400.0-Literal dupliziert (br-gf1), ohne -;; Bezug auf *vfl-gf-min-laenge*. +;; benannt (Wert 400.0) - hier nur gespiegelt. Das fruehere rohe 400.0- +;; Duplikat (br-gf1 in vfl3-*) referenziert jetzt *vfl-gf-min-laenge*. (if (null *vfk-gf-anschluss-mindestlaenge*) (setq *vfk-gf-anschluss-mindestlaenge* 400.0)) ;; ============================================================ ;; TEIL 3: STRECKENLAENGEN-GRENZWERTE (mm) ;; ============================================================ -;; Foerderer-Maximallaenge (Linienzug-Einzelsegment beim Picken). Rohes -;; 25000.0-Literal in vfl-neue-linie-messen (vf_linienzug.lsp), keine -;; Konstante bisher. +;; Foerderer-Maximallaenge (Linienzug-Einzelsegment beim Picken). Aktiv +;; referenziert in vfl-neue-linie-messen (vf_linienzug.lsp). (if (null *vfk-segment-maximallaenge*) (setq *vfk-segment-maximallaenge* 25000.0)) ;; 20-Meter-Regel (Warnschwelle Gesamtlaenge seit letzter Umlenkstation, -;; siehe Prinzipien-Dok Abschnitt 7). Rohes 20000.0-Literal in -;; vfl-20m-check (vf_linienzug.lsp), keine Konstante bisher. +;; siehe Prinzipien-Dok Abschnitt 7). Aktiv referenziert in vfl-20m-check +;; (vf_linienzug.lsp). (if (null *vfk-motorabstand-warnung*) (setq *vfk-motorabstand-warnung* 20000.0)) ;; Unterer Clamp-Wert (mm) fuer diverse Restlaengen-Berechnungen -;; ("max 100.0 ..."), verhindert negative/entartete Kurzstrecken. Rohes -;; 100.0-Literal an >10 Stellen in vf_linienzug.lsp dupliziert -;; (vfl-baue-horizontal-koerper, vf-linienzug-modus3-Umfeld, ...). +;; ("max ... ..."), verhindert negative/entartete Kurzstrecken. Aktiv +;; referenziert an allen frueher rohen "(max 100.0 ...)"-Stellen in +;; vf_linienzug.lsp. (if (null *vfk-restlaenge-min-clamp*) (setq *vfk-restlaenge-min-clamp* 100.0)) ;; Unterer Clamp-Wert (mm) fuer die variable Auslauf-Staustrecke im -;; Etage-Typ ("Schutz gegen negative/zu kurze GF"). Rohes 50.0-Literal in -;; etage-foerderanlage-einfuegen (vf_etage.lsp Zeile ~800). +;; Etage-Typ ("Schutz gegen negative/zu kurze GF"). Aktiv referenziert in +;; etage-foerderanlage-einfuegen (vf_etage.lsp). (if (null *vfk-etage-auslauf-min-clamp*) (setq *vfk-etage-auslauf-min-clamp* 50.0)) ;; ============================================================ @@ -191,21 +194,21 @@ ;; neu vermessen werden - keine "sauberen" Rundwerte. ;; AS-/ES-Element-Fallback-Versatz (dx, mm), Standard-Typ (90 Grad) und -;; Linienzug. Rohes 576.0-Literal an mehreren Stellen in vf_linienzug.lsp -;; dupliziert (Zeile ~3393/4030/4031: "(if aus-dx aus-dx 576.0)" bzw. -;; ein-dx-Aequivalent). +;; Linienzug. Aktiv referenziert an allen frueher rohen 576.0-Stellen in +;; vf_linienzug.lsp ("(if aus-dx aus-dx ...)" bzw. ein-dx-Aequivalent). (if (null *vfk-as-es-fallback-dx*) (setq *vfk-as-es-fallback-dx* 576.0)) -;; Etage-Typ (30 Grad): eigene Fallback-Masse fuer AS_Element_30 (dx/dz, -;; vf_etage.lsp Zeile ~90/96) und ES_Element_30 (Zeile ~124/130) - NICHT -;; identisch zu *vfk-as-es-fallback-dx* (anderer Blocktyp/Winkel). +;; Etage-Typ (30 Grad): eigene Fallback-Masse fuer AS_Element_30 und +;; ES_Element_30 (vf_etage.lsp, init-bibliothek-etage) - NICHT identisch +;; zu *vfk-as-es-fallback-dx* (anderer Blocktyp/Winkel). Aktiv referenziert. (if (null *vfk-etage-as-fallback-dx*) (setq *vfk-etage-as-fallback-dx* 525.8)) (if (null *vfk-etage-as-fallback-dz*) (setq *vfk-etage-as-fallback-dz* -72.9)) (if (null *vfk-etage-es-fallback-dx*) (setq *vfk-etage-es-fallback-dx* 576.2)) (if (null *vfk-etage-es-fallback-dz*) (setq *vfk-etage-es-fallback-dz* -54.6)) ;; Etage-Typ: Fallback-Versatz (dz, mm) fuer Gefaellebogen links/rechts, -;; falls Block/KS nicht extrahierbar (vf_etage.lsp Zeile ~156-195). +;; falls Block/KS nicht extrahierbar (vf_etage.lsp, init-bibliothek-etage). +;; Aktiv referenziert. (if (null *vfk-etage-gefaellebogen-fallback-dz*) (setq *vfk-etage-gefaellebogen-fallback-dz* -10.0)) ;; ============================================================ @@ -213,19 +216,19 @@ ;; ============================================================ ;; Texthoehe (mm) des sichtbaren ATTDEF/TEXT-Labels (vf-make-label, -;; vf_core.lsp Zeile ~1073). Rohes Literal, keine Konstante bisher. +;; vf_core.lsp). Aktiv referenziert. (if (null *vfk-label-texthoehe*) (setq *vfk-label-texthoehe* 100.0)) ;; Texthoehe (mm) der unsichtbaren ATTDEFs (vf-block-erstellen, -;; vf_core.lsp Zeile ~1125). Rohes Literal, keine Konstante bisher. +;; vf_core.lsp). Aktiv referenziert. (if (null *vfk-attdef-texthoehe*) (setq *vfk-attdef-texthoehe* 50.0)) ;; Y-Versatz (mm) zwischen aufeinanderfolgenden ATTDEF-Zeilen -;; (vf_core.lsp Zeile ~1131). Rohes Literal, keine Konstante bisher. +;; (vf_core.lsp). Aktiv referenziert. (if (null *vfk-attdef-zeilenabstand*) (setq *vfk-attdef-zeilenabstand* 100.0)) ;; Beschriftungsversatz (mm) senkrecht zur Fahrtrichtung (vf-make-label, -;; vf_core.lsp Zeile ~1059-1060). Rohes 200.0-Literal. +;; vf_core.lsp). Aktiv referenziert. (if (null *vfk-label-versatz*) (setq *vfk-label-versatz* 200.0)) ;; ============================================================ @@ -234,9 +237,10 @@ ;; mm -> m Umrechnungsfaktor fuer die Montagehoehe-Mittelwertbildung ;; ("(/ (+ hoehe-von hoehe-bis) 2000.0)" = Mittelwert zweier mm-Werte, -;; direkt in m). Kommt identisch in vf_core.lsp Zeile ~1154 UND -;; vf_linienzug.lsp Zeile ~2258/4742 vor - inhaltlich einfach 1000.0*2, -;; aber nirgends so ausgedrueckt. +;; direkt in m). Kommt identisch in vf_core.lsp und vf_linienzug.lsp vor - +;; inhaltlich einfach 1000.0*2, aber nirgends so ausgedrueckt. BEWUSST NICHT +;; auf *vfk-mm-je-m* umgestellt (keine 1:1-Ersetzung, siehe Datei- +;; Kopfkommentar) - bleibt als eigenstaendiges 2000.0-Literal bestehen. (if (null *vfk-mm-je-m*) (setq *vfk-mm-je-m* 1000.0)) ;; Skalierungsbasis (mm) fuer insert-inclined-scaled-block. AKTIVE Quelle: @@ -252,19 +256,19 @@ ;; Diagnose-Schwellwert (mm): ab wann ein Anschlussabstand beim ;; Ketten-Verfolgen als "spuerbar, aber noch sauber" gilt (vfl-kette- -;; verfolgen, vf_linienzug.lsp Zeile ~4617). Rohes 0.5-Literal. +;; verfolgen, vf_linienzug.lsp). Aktiv referenziert. (if (null *vfk-kette-anschluss-warnung*) (setq *vfk-kette-anschluss-warnung* 0.5)) ;; Warnschwelle (Grad): Vario-Winkel oberhalb des Maximums der -;; Bogenwinkel-Tabelle (Modus 3, vf-linienzug-modus3 Zeile ~4018). Rohes -;; 51.0-Literal, dupliziert das Maximum von *vfk-bogen-winkel*. +;; Bogenwinkel-Tabelle (Modus 3, vf-linienzug-modus3). Dupliziert das +;; Maximum von *vfk-bogen-winkel*. Aktiv referenziert. (if (null *vfk-vario-winkel-max*) (setq *vfk-vario-winkel-max* 51.0)) ;; Empirischer Korrekturfaktor (mm) fuer die Bruecken-Hoehenberechnung in -;; Modus 3 (vf-linienzug-modus3, "dH-adj", vf_linienzug.lsp Zeile ~4162). -;; UNKOMMENTIERTE Herleitung im Original - nur "Motor + auf_3/ab_3"-Notiz. -;; Bei Gelegenheit pruefen/nachvollziehen, ob sich der Wert geometrisch -;; herleiten laesst statt empirisch fixiert zu bleiben. +;; Modus 3 (vf-linienzug-modus3, "dH-adj", vf_linienzug.lsp). Aktiv +;; referenziert. UNKOMMENTIERTE Herleitung im Original - nur "Motor + +;; auf_3/ab_3"-Notiz. Bei Gelegenheit pruefen/nachvollziehen, ob sich der +;; Wert geometrisch herleiten laesst statt empirisch fixiert zu bleiben. (if (null *vfk-bruecke-korrektur*) (setq *vfk-bruecke-korrektur* 10.48)) (setq *vfk-konstanten-geladen* t) diff --git a/Lisp/vf_linienzug.lsp b/Lisp/vf_linienzug.lsp index f173a6c..58bee24 100644 --- a/Lisp/vf_linienzug.lsp +++ b/Lisp/vf_linienzug.lsp @@ -1438,7 +1438,7 @@ (cond ;; Zu kurz fuer eine VF-Einheit: Umlenkstation (500 mm) + Motorstation ;; (500 mm) belegen zusammen 1000 mm deltaL. - ((< deltaL 1000.0) (list nil nil nil nil)) + ((< deltaL *vfk-vf-mindestlaenge*) (list nil nil nil nil)) ;; Segment ohne messbare Hoehenaenderung: kein sinnvolles VF ((< deltaH 1.0) (list nil nil nil nil)) @@ -1455,7 +1455,7 @@ ;; sonst -> VF (Horizontale Mitte oder diskreter Winkel) (t (setq winkel-natuerlich (* (atan (/ deltaH deltaL)) (/ 180.0 pi))) - (if (> winkel-natuerlich 3.0) + (if (> winkel-natuerlich *vfk-gefaelle-winkel*) (progn (setq wahl (vfl-vf-winkel deltaL deltaH "Ab")) (if wahl @@ -1504,8 +1504,8 @@ mass2 (get-bogen-mass bogen-auf winkel))) (if (and mass1 mass2) (progn - (setq rad5 (* 3.0 (/ pi 180.0))) - (setq rad7 (* (float (if (= richtung "Auf") (- 3 winkel) (+ winkel 3))) + (setq rad5 (* *vfk-gefaelle-winkel* (/ pi 180.0))) + (setq rad7 (* (float (if (= richtung "Auf") (- *vfk-gefaelle-winkel* winkel) (+ winkel *vfk-gefaelle-winkel*))) (/ pi 180.0))) (setq bogen-x1 (+ (* (car mass1) (cos rad5)) (* (caddr mass1) (sin rad5)))) (setq bogen-z1 (+ (* (- (car mass1)) (sin rad5)) (* (caddr mass1) (cos rad5)))) @@ -1514,7 +1514,7 @@ (setq cosa (cos (* winkel (/ pi 180.0))) sina (sin (* winkel (/ pi 180.0)))) (setq A (- deltaL aus-dx ein-dx bogen-x1 bogen-x2 (* feste-hz cos3))) - (setq winkel-eff (if (= richtung "Auf") (- winkel 3) (+ winkel 3))) + (setq winkel-eff (if (= richtung "Auf") (- winkel *vfk-gefaelle-winkel*) (+ winkel *vfk-gefaelle-winkel*))) (setq cosEff (cos (* winkel-eff (/ pi 180.0))) sinEff (sin (* winkel-eff (/ pi 180.0)))) (if (= richtung "Auf") @@ -1551,7 +1551,7 @@ (defun vfl-vf-machbar-p (deltaL deltaH richtung / horizontal-info save-ausdx save-ausdz ergebnis) (if (or (not *lib-initialized*) (null bogen-auf)) (init-bibliothek)) (cond - ((< deltaL 1000.0) nil) + ((< deltaL *vfk-vf-mindestlaenge*) nil) ((< deltaH 1.0) nil) ((= richtung "Auf") (setq save-ausdx aus-dx save-ausdz aus-dz) @@ -1579,7 +1579,7 @@ ;; Rueckgabe: deltaH (mm) oder nil, wenn in diesem Bereich nichts baubar ist. (defun vfl-vf-min-deltah (deltaL richtung / schritt grenze h gefunden) (setq schritt 10.0) - (setq grenze (/ deltaL 3.0)) + (setq grenze (/ deltaL *vfk-gefaelle-winkel*)) (setq h schritt gefunden nil) (while (and (not gefunden) (<= h grenze)) (if (vfl-vf-machbar-p deltaL h richtung) @@ -1648,17 +1648,17 @@ (setq aus-dx 0.0 aus-dz 0.0) (setq ergebnis (cond - ((< deltaL 800.0) nil) + ((< deltaL *vfk-kettenende-mindestlaenge*) nil) ((< deltaH 1.0) (setq horizontal-info (berechne-horizontale-mitte deltaL deltaH "Ab")) (and horizontal-info (caddr horizontal-info) t)) ((= richtung "Auf") - (vfl-winkel-machbar-p deltaL deltaH "Auf" 800.0)) + (vfl-winkel-machbar-p deltaL deltaH "Auf" *vfk-feste-horizontal-kettenende*)) (t (setq horizontal-info (berechne-horizontale-mitte deltaL deltaH "Ab")) (if (and horizontal-info (caddr horizontal-info)) t - (vfl-winkel-machbar-p deltaL deltaH "Ab" 800.0))) + (vfl-winkel-machbar-p deltaL deltaH "Ab" *vfk-feste-horizontal-kettenende*))) ) ) (setq aus-dx save-ausdx aus-dz save-ausdz) @@ -1669,7 +1669,7 @@ ;; vfl-body-zerlegung statt vfl-vf-entscheidung). (defun vfl-body-min-deltah (deltaL richtung / schritt grenze h gefunden) (setq schritt 10.0) - (setq grenze (/ deltaL 3.0)) + (setq grenze (/ deltaL *vfk-gefaelle-winkel*)) (setq h schritt gefunden nil) (while (and (not gefunden) (<= h grenze)) (if (vfl-body-machbar-p deltaL h richtung) @@ -1704,10 +1704,10 @@ ;; (500 mm) belegen zusammen 1000 mm deltaL - darunter ist kein VF baubar. ;; Also nur GF moeglich, und GF ist mindestens 3 Grad geneigt -> fest 3 Grad. ;; Steigend geht mit einer Gefaellestrecke nicht -> nicht baubar. - ((< deltaL 1000.0) + ((< deltaL *vfk-vf-mindestlaenge*) (if (= richtung "Auf") (list nil nil nil nil) - (list "GF" 3.0 nil nil))) + (list "GF" *vfk-gefaelle-winkel* nil nil))) ;; Segment ohne messbare Hoehenaenderung: weder Gefaelle noch sinnvolles VF ((< deltaH 1.0) (list nil nil nil nil)) @@ -1721,8 +1721,8 @@ ;; sonst -> VF (vfl-vf-entscheidung) (t (setq winkel-natuerlich (* (atan (/ deltaH deltaL)) (/ 180.0 pi))) - (if (<= (abs (- winkel-natuerlich 3.0)) *vfl-gf-winkel-toleranz*) - (list "GF" 3.0 nil nil) + (if (<= (abs (- winkel-natuerlich *vfk-gefaelle-winkel*)) *vfl-gf-winkel-toleranz*) + (list "GF" *vfk-gefaelle-winkel* nil nil) (vfl-vf-entscheidung deltaL deltaH richtung)) ) ) @@ -1890,7 +1890,7 @@ (setq ergebnis nil fertig t) (progn (setq deltaL (car erg) hz-aktuell (cdr erg)) - (if (> deltaL 25000.0) + (if (> deltaL *vfk-segment-maximallaenge*) (princ (ssg-textf "vfl-fehler-laenge-max" (list (rtos (/ deltaL 1000.0) 2 2)))) (progn (setq ergebnis (list deltaL hz-aktuell)) @@ -1926,7 +1926,7 @@ ;; automatisches Einfuegen einer Zwischen-Motorstation. (defun vfl-20m-check (p-umlenk p-akt / laenge) (setq laenge (vfl-planar-dist p-umlenk p-akt)) - (if (> laenge 20000.0) + (if (> laenge *vfk-motorabstand-warnung*) (princ (ssg-textf "vfl-20m-hinweis" (list (rtos (/ laenge 1000.0) 2 2)))) ) ) @@ -1944,14 +1944,14 @@ ;; nil => auf 3-Grad-Basis. Damit wird der Uebergang auf_3/ab_3 nur dann gesetzt, ;; wenn wirklich ein Neigungswechsel noetig ist. (defun vfl-frame-flach-p (frame) - (< (abs (cadr (frame->hz-winkel frame))) 1.5)) + (< (abs (cadr (frame->hz-winkel frame))) *vfk-frame-flach-toleranz*)) ;; Separator (300 mm) HORIZONTAL (0 Grad) an einen Punkt anfuegen - fuer das ;; horizontale Stueck, wo der Separator in der 0-Grad-Ebene liegt (NICHT auf der ;; 3-Grad-Basis wie vfl-insert-separator). Rueckgabe: Endpunkt. (defun vfl-sep-hz (pt hz / ep) (princ (ssg-text "vfl-sep-horizontal-info")) - (setq ep (gf-insert-hz-with-ks "Staustrecke_Separator_SP_300_mm" pt hz 0 300 0)) + (setq ep (gf-insert-hz-with-ks "Staustrecke_Separator_SP_300_mm" pt hz 0 *vfk-separator-laenge* 0)) (setq *vfl-acc-separator* (1+ *vfl-acc-separator*)) ep) @@ -2005,7 +2005,7 @@ (princ (ssg-text "vfl-nein")) (setq sep-vor (= (vfl-menu (ssg-text "vfl-prompt-wahl-1-2-def2") (list (ssg-text "vfl-ja") (ssg-text "vfl-nein")) 2 "vfl-sep-vor-frage") "1")) - (if (and ziel-modus sep-vor) (setq dL (max 100.0 (- dL 300.0)))) + (if (and ziel-modus sep-vor) (setq dL (max *vfk-restlaenge-min-clamp* (- dL *vfk-separator-laenge*)))) ;; auf_3-Eintritt nur, wenn noch NICHT flach (sonst flache Zone fortsetzen). ;; dL ist die gewuenschte Reststrecke AB HIER (pt) - der reale Bogen- ;; Fussabdruck (gemessen, nicht aus der Tabellen-Masse geschaetzt - die @@ -2018,7 +2018,7 @@ (princ (ssg-text "vfl-bogen-auf3-uebergang")) (setq pt (insert-rotated-block-with-ks "Vario_Bogen_auf_3_TEF_rechts" pt (ssg-cfg-or "vario" "gefaelle_winkel" 3) (car m1) (caddr m1) hz)) - (setq dL (max 100.0 (- dL (vfl-projiziere-distanz pt-vor-bogen pt hz)))))) + (setq dL (max *vfk-restlaenge-min-clamp* (- dL (vfl-projiziere-distanz pt-vor-bogen pt hz)))))) ;; Separator NACH abfragen (noch nicht bauen) - im Ziel-Modus VOR der ;; Laengenberechnung, damit der Fussabdruck feststeht. (princ (ssg-text "vfl-sep-nach-frage")) @@ -2026,7 +2026,7 @@ (princ (ssg-text "vfl-nein")) (setq sep-nach (= (vfl-menu (ssg-text "vfl-prompt-wahl-1-2-def2") (list (ssg-text "vfl-ja") (ssg-text "vfl-nein")) 2 "vfl-sep-nach-frage") "1")) - (if (and ziel-modus sep-nach) (setq dL (max 100.0 (- dL 300.0)))) + (if (and ziel-modus sep-nach) (setq dL (max *vfk-restlaenge-min-clamp* (- dL *vfk-separator-laenge*)))) ;; Im Ziel-Modus: "Ist der Endpunkt der Foerderer?" JETZT abfragen (statt ;; erst danach in der Aufruferschleife) - der Ausgangs-Fussabdruck ;; (Vario_Bogen_ab_3 + Motorstation) wird nur reserviert, wenn tatsaechlich @@ -2044,11 +2044,11 @@ "vfl-ist-endpunkt-frage")) (cond ((= ist-ende-antwort "1") - (setq dL (max 100.0 (- dL (car (get-bogen-mass bogen-ab 3)) 500.0 + (setq dL (max *vfk-restlaenge-min-clamp* (- dL (car (get-bogen-mass bogen-ab (fix *vfk-gefaelle-winkel*))) *vfk-stations-laenge* (* (if gf2-laenge gf2-laenge 0.0) - (cos (* 3.0 (/ pi 180.0)))))))) + (cos (* *vfk-gefaelle-winkel* (/ pi 180.0)))))))) ((= ist-ende-antwort "3") - (setq dL (max 100.0 (- dL (car (get-bogen-mass bogen-ab 3)) 500.0)))) + (setq dL (max *vfk-restlaenge-min-clamp* (- dL (car (get-bogen-mass bogen-ab (fix *vfk-gefaelle-winkel*))) *vfk-stations-laenge*)))) ) ) ) @@ -2088,11 +2088,11 @@ (if (or (not *lib-initialized*) (null bogen-auf)) (init-bibliothek)) ;; Budget-Globals temporaer auf den Mid-Body-Fall umbiegen (mit Restore). (setq save-ausdx aus-dx save-ausdz aus-dz save-feste FESTE_HORIZONTAL) - (setq aus-dx 0.0 aus-dz 0.0 FESTE_HORIZONTAL 800.0) + (setq aus-dx 0.0 aus-dz 0.0 FESTE_HORIZONTAL *vfk-feste-horizontal-kettenende*) (setq res (cond ;; kuerzer als Motor(500)+Separator(300): kein Abschluss baubar - ((< deltaL 800.0) (list nil nil nil nil)) + ((< deltaL *vfk-kettenende-mindestlaenge*) (list nil nil nil nil)) ;; praktisch flach: horizontales VF + GF2 ((< deltaH 1.0) (setq horizontal-info (berechne-horizontale-mitte deltaL deltaH "Ab")) @@ -2101,18 +2101,18 @@ (list nil nil nil nil))) ;; steigend: nur gewinkeltes VF + GF2 moeglich ((= richtung "Auf") - (setq wahl (vfl-waehle-winkel (nth 3 (berechne-alle-winkel deltaL deltaH "Auf" 800.0)))) + (setq wahl (vfl-waehle-winkel (nth 3 (berechne-alle-winkel deltaL deltaH "Auf" *vfk-feste-horizontal-kettenende*)))) (if wahl (list "VF" (nth 0 wahl) (nth 1 wahl) (nth 2 wahl)) (list nil nil nil nil))) ;; fallend: natuerlichen Neigungswinkel gegen die 3-Grad-Eigenneigung pruefen (t (setq winkel-natuerlich (* (atan (/ deltaH deltaL)) (/ 180.0 pi))) (cond ;; ~3 Grad -> reine GF2 (kein Koerper, GF2 traegt Laenge + 3-Grad-Absenkung) - ((<= (abs (- winkel-natuerlich 3.0)) *vfl-gf-winkel-toleranz*) - (list "GF" 3.0 nil nil)) + ((<= (abs (- winkel-natuerlich *vfk-gefaelle-winkel*)) *vfl-gf-winkel-toleranz*) + (list "GF" *vfk-gefaelle-winkel* nil nil)) ;; steiler als 3 Grad -> Stufe 1: gewinkeltes VF + GF2 (GF2 variiert mit Winkel) - ((> winkel-natuerlich 3.0) - (setq wahl (vfl-waehle-winkel (nth 3 (berechne-alle-winkel deltaL deltaH "Ab" 800.0)))) + ((> winkel-natuerlich *vfk-gefaelle-winkel*) + (setq wahl (vfl-waehle-winkel (nth 3 (berechne-alle-winkel deltaL deltaH "Ab" *vfk-feste-horizontal-kettenende*)))) (if wahl (list "VF" (nth 0 wahl) (nth 1 wahl) (nth 2 wahl)) (list nil nil nil nil))) ;; flacher als 3 Grad -> Stufe 2: horizontales VF + GF2 (t @@ -2120,7 +2120,7 @@ (if (and horizontal-info (caddr horizontal-info)) (list "VF" 0 (car horizontal-info) (cadr horizontal-info)) (progn - (setq wahl (vfl-waehle-winkel (nth 3 (berechne-alle-winkel deltaL deltaH "Ab" 800.0)))) + (setq wahl (vfl-waehle-winkel (nth 3 (berechne-alle-winkel deltaL deltaH "Ab" *vfk-feste-horizontal-kettenende*)))) (if wahl (list "VF" (nth 0 wahl) (nth 1 wahl) (nth 2 wahl)) (list nil nil nil nil))))))))) ;; Budget-Globals zuruecksetzen (setq aus-dx save-ausdx aus-dz save-ausdz FESTE_HORIZONTAL save-feste) @@ -2205,7 +2205,7 @@ (setq gf2 (cond ((and lgf (> lgf 0.0)) lgf) ((= typ "GF") - (max 0.0 (- (/ (- dL (abs (if ein-dx ein-dx 576.0))) (cos rad3)) 800.0))) + (max 0.0 (- (/ (- dL (abs (if ein-dx ein-dx *vfk-as-es-fallback-dx*))) (cos rad3)) *vfk-feste-horizontal-kettenende*))) (t 0.0))) (if (and (> gf2 0.0) (< gf2 *vfl-gf-min-laenge*)) (progn @@ -2265,7 +2265,7 @@ ;; berechnung gestellt (siehe dortiger Kommentar) - die Antwort kommt ;; hier zurueck, damit die Schleife unten sie nicht nochmal erfragt. (setq res-h (vfl-baue-horizontal-koerper frame hz1 - (max 100.0 (- L_VF1 (vfl-projiziere-distanz entry-start p-umlenk hz1))) + (max *vfk-restlaenge-min-clamp* (- L_VF1 (vfl-projiziere-distanz entry-start p-umlenk hz1))) t L_GF2-bau)) (setq frame (car res-h) vor-antwort (cadr res-h)) ) @@ -2709,7 +2709,7 @@ (setq hz (car (frame->hz-winkel frame))) (setq w (ssg-cfg-or "vario" "gefaelle_winkel" 3)) (setq sep-endpunkt - (gf-insert-hz-with-ks "Staustrecke_Separator_SP_300_mm" (car frame) hz w 300 0)) + (gf-insert-hz-with-ks "Staustrecke_Separator_SP_300_mm" (car frame) hz w *vfk-separator-laenge* 0)) (setq *vfl-acc-separator* (1+ *vfl-acc-separator*)) (make-frame-from-dir sep-endpunkt (hz-winkel->xu hz w)) ) @@ -2727,7 +2727,7 @@ w-eff sep-endpunkt sep-frame) (setq w-eff (if (= typ "GF") winkel (ssg-cfg-or "vario" "gefaelle_winkel" 3))) (setq sep-endpunkt - (gf-insert-hz-with-ks "Staustrecke_Separator_SP_300_mm" (car frame) hz w-eff 300 0)) + (gf-insert-hz-with-ks "Staustrecke_Separator_SP_300_mm" (car frame) hz w-eff *vfk-separator-laenge* 0)) (setq sep-frame (make-frame-from-dir sep-endpunkt (hz-winkel->xu hz w-eff))) (if (boundp '*vfl-acc-separator*) (setq *vfl-acc-separator* (1+ *vfl-acc-separator*))) ; Separator vor ES @@ -3149,7 +3149,7 @@ (setq frame (nth 0 erg) deltaL (nth 1 erg) p-aktuell (car frame)) ) ) - (if (< deltaL 1000.0) + (if (< deltaL *vfk-vf-mindestlaenge*) (progn (princ (ssg-text "vfl-fehler-horizontal-vf-kurz")) (if dbg-an @@ -3340,7 +3340,7 @@ (setq frame (nth 0 erg) deltaL (nth 1 erg) p-aktuell (car frame)) ) ) - (if (< deltaL 1000.0) + (if (< deltaL *vfk-vf-mindestlaenge*) (princ (ssg-text "vfl-fehler-vf-kurz")) (progn (setq hoehe-vorschlaege (vfl-vf-hoehe-vorschlaege (caddr p-aktuell) deltaL)) @@ -3434,11 +3434,11 @@ ;; sich damit fest aus deltaH = deltaL*tan(3 Grad). ;; Im Kettenende-Modus (Option 4) wird IMMER nach der Zielhoehe ;; gefragt (Kurzsegment-Automatik hier ueberspringen). - (if (and (< deltaL 1000.0) (not linie-ende-modus)) + (if (and (< deltaL *vfk-vf-mindestlaenge*) (not linie-ende-modus)) (progn - (setq typ "GF" winkel 3.0 richtung "Ab" L_GF nil L_VF nil) - (setq deltaH (* deltaL (/ (sin (* 3.0 (/ pi 180.0))) - (cos (* 3.0 (/ pi 180.0)))))) + (setq typ "GF" winkel *vfk-gefaelle-winkel* richtung "Ab" L_GF nil L_VF nil) + (setq deltaH (* deltaL (/ (sin (* *vfk-gefaelle-winkel* (/ pi 180.0))) + (cos (* *vfk-gefaelle-winkel* (/ pi 180.0)))))) (setq hoehe-neu (- (caddr p-aktuell) deltaH)) (princ (ssg-textf "vfl-info-kurzes-segment" (list (rtos deltaL 2 0) (rtos deltaH 2 1)))) @@ -3471,9 +3471,9 @@ (progn (setq rad3 (* (float (ssg-cfg-or "vario" "gefaelle_winkel" 3)) (/ pi 180.0))) - (setq deltaL (max 1.0 (- deltaL (* 300.0 (cos rad3)) + (setq deltaL (max 1.0 (- deltaL (* *vfk-separator-laenge* (cos rad3)) (abs (if ein-dx ein-dx 0.0))))) - (setq deltaH (max 0.0 (- deltaH (* 300.0 (sin rad3)) + (setq deltaH (max 0.0 (- deltaH (* *vfk-separator-laenge* (sin rad3)) (abs (if ein-dz ein-dz 0.0))))) (princ (ssg-textf "vfl-info-kettenende-footprint" (list (rtos deltaL 2 0) (rtos deltaH 2 0)))) @@ -4378,17 +4378,17 @@ (dbgflush))) ;; --- 4. Eck-Winkel-Vorpruefung (vor dem Bau) --- - (setq ecke-bad (vfl2-pruefe-eckwinkel kette 5.0)) + (setq ecke-bad (vfl2-pruefe-eckwinkel kette *vfk-eckwinkel-toleranz*)) (if ecke-bad (progn (alert (ssg-textf "vfl-vwnb-alert-eckwinkel" (list (rtos ecke-bad 2 1)))) (exit))) ;; --- 5. Setup --- - (setq aus (if aus-dx aus-dx 576.0) ein (if ein-dx ein-dx 576.0)) + (setq aus (if aus-dx aus-dx *vfk-as-es-fallback-dx*) ein (if ein-dx ein-dx *vfk-as-es-fallback-dx*)) (setq rad3 (* (float (ssg-cfg-or "vario" "gefaelle_winkel" 3)) (/ pi 180.0))) ;; Entry-Fussabdruck (planar) einer VF-Einheit: GF1(Basis)+Separator(300)+Umlenk(500) - (setq ent-fp (* (+ *vfl-gf-min-laenge* 300.0 500.0) (cos rad3))) + (setq ent-fp (* (+ *vfl-gf-min-laenge* *vfk-separator-laenge* *vfk-stations-laenge*) (cos rad3))) (setq run-typ nil) (setq vfl-nummer (vf-next-number)) (setq lastEnt (vf-lastent-ohne-attribute)) @@ -4430,9 +4430,9 @@ (progn (setq frame (vfl2-vf-close frame (car (frame->hz-winkel frame)))) (setq run-typ nil))) (setq winkel (vfl-in-real (ssg-text "vfl-m3-prompt-gf-neigung"))) - (if (null winkel) (setq winkel 3.0)) - (if (> winkel 3.0) - (progn (princ (ssg-text "vfl-m3-hinweis-gf-max")) (setq winkel 3.0))) + (if (null winkel) (setq winkel *vfk-gefaelle-winkel*)) + (if (> winkel *vfk-gefaelle-winkel*) + (progn (princ (ssg-text "vfl-m3-hinweis-gf-max")) (setq winkel *vfk-gefaelle-winkel*))) (if (null frame) (setq frame (vfl2-insert-as-gf startpunkt hz winkel as-seite))) (setq deltaL laenge) @@ -4441,8 +4441,8 @@ (setq deltaL (- deltaL (+ (* (- (car (car frame)) (car startpunkt)) (cos (* hz (/ pi 180.0)))) (* (- (cadr (car frame)) (cadr startpunkt)) (sin (* hz (/ pi 180.0)))))))) - (if (= i last-line) (setq deltaL (- deltaL 300.0 ein))) - (setq deltaL (max 100.0 deltaL)) + (if (= i last-line) (setq deltaL (- deltaL *vfk-separator-laenge* ein))) + (setq deltaL (max *vfk-restlaenge-min-clamp* deltaL)) (setq frame (vfl-insert-gf-segment (car frame) hz deltaL winkel)) (vfl-acc-gf-seg (/ deltaL (cos (* winkel (/ pi 180.0)))) winkel) (setq anzahl-gf (1+ anzahl-gf) letzt-winkel winkel run-typ "GF")) @@ -4464,7 +4464,7 @@ (if dbg-an (progn (dbgmsg "Vario-Winkel (gesnapt):") (dbg 'best-w) (dbgflush))))) (setq L_VF laenge) (if just-open (setq L_VF (- L_VF ent-fp))) ; Entry-Fussabdruck reservieren - (setq L_VF (max 100.0 L_VF)) + (setq L_VF (max *vfk-restlaenge-min-clamp* L_VF)) (setq frame (vfl-frame-3grad (vfs-vf-koerper (car frame) richtn best-w L_VF hz) hz)) (vfl-acc-vf-seg richtn best-w L_VF) (setq anzahl-vf (1+ anzahl-vf) run-typ "VF")))) @@ -4509,7 +4509,7 @@ (setq frame (vfl-insert-es-element "VF" frame (car (frame->hz-winkel frame)) 0.0 (caddr (car frame)) es-seite))) (setq frame (vfl-insert-es-element "GF" frame (car (frame->hz-winkel frame)) - (if letzt-winkel letzt-winkel 3.0) (caddr (car frame)) es-seite))) + (if letzt-winkel letzt-winkel *vfk-gefaelle-winkel*) (caddr (car frame)) es-seite))) ;; --- 8. Block + Ist-Ziel-Report --- (setq hoehe-bis (caddr (car frame))) @@ -4606,14 +4606,14 @@ ;; 300+ein-fp, GF-Bogen bei Neigung). Eintritts-Neigung = 3 Grad (die Bruecke ;; endet mit GF2 auf 3 Grad). So wird die Junction-Hoehe exakt statt geschaetzt. (defun vfl3-dback (plan start-idx n last-idx ein-fp / i seg drop inc w dL rad) - (setq drop 0.0 inc 3.0 i start-idx) + (setq drop 0.0 inc *vfk-gefaelle-winkel* i start-idx) (while (< i n) (setq seg (nth i plan)) (cond ((= (car seg) "Linie") (setq w (nth 4 seg) dL (caddr seg)) - (if (= i last-idx) (setq dL (- dL 300.0 ein-fp))) - (setq dL (max 100.0 dL)) + (if (= i last-idx) (setq dL (- dL *vfk-separator-laenge* ein-fp))) + (setq dL (max *vfk-restlaenge-min-clamp* dL)) (setq rad (* (float w) (/ pi 180.0))) (setq drop (+ drop (* dL (/ (sin rad) (cos rad))))) (setq inc w)) @@ -4623,7 +4623,7 @@ (setq i (1+ i))) ;; Auslauf-Separator (300 mm bei aktueller Neigung inc) + ES-Eigen-dz (setq rad (* (float inc) (/ pi 180.0))) - (setq drop (+ drop (* 300.0 (/ (sin rad) (cos rad))))) + (setq drop (+ drop (* *vfk-separator-laenge* (/ (sin rad) (cos rad))))) (setq drop (+ drop (abs (if ein-dz ein-dz 65.0)))) drop) @@ -4635,20 +4635,20 @@ ;; verifiziert). So ist die Hoehe rein rechnerisch bestimmt -> Kletterlaenge folgt. (defun vfl3-einheit-fix-dz (w n-climb n-hor gf1 richtung / pi180 rad3 s3 tot m1 m2 r1 r2 dz1 dz2) - (setq pi180 (/ pi 180.0) rad3 (* 3.0 pi180) s3 (sin rad3) tot 0.0) + (setq pi180 (/ pi 180.0) rad3 (* *vfk-gefaelle-winkel* pi180) s3 (sin rad3) tot 0.0) ;; feste 3-Grad-Teile senken immer ab (GF1 + Separator + Umlenk + Motor) - (setq tot (- tot (* (+ (float gf1) 300.0 500.0 500.0) s3))) + (setq tot (- tot (* (+ (float gf1) *vfk-separator-laenge* *vfk-stations-laenge* *vfk-stations-laenge*) s3))) ;; Kletterer-Boegen (Rotationen wie vfs-vf-koerper: 1. Bogen @3, 2. Bogen @(3-w)/(w+3)) (if (= richtung "Auf") (setq m1 (get-bogen-mass bogen-auf w) r1 rad3 - m2 (get-bogen-mass bogen-ab w) r2 (* (- 3 w) pi180)) + m2 (get-bogen-mass bogen-ab w) r2 (* (- *vfk-gefaelle-winkel* w) pi180)) (setq m1 (get-bogen-mass bogen-ab w) r1 rad3 - m2 (get-bogen-mass bogen-auf w) r2 (* (+ w 3) pi180))) + m2 (get-bogen-mass bogen-auf w) r2 (* (+ w *vfk-gefaelle-winkel*) pi180))) (setq dz1 (+ (* (- (car m1)) (sin r1)) (* (caddr m1) (cos r1)))) (setq dz2 (+ (* (- (car m2)) (sin r2)) (* (caddr m2) (cos r2)))) (setq tot (+ tot (* n-climb (+ dz1 dz2)))) ;; Horizontal-Mitte-Koerper: auf_3@3 + ab_3@0 - (setq m1 (get-bogen-mass bogen-auf 3) m2 (get-bogen-mass bogen-ab 3)) + (setq m1 (get-bogen-mass bogen-auf (fix *vfk-gefaelle-winkel*)) m2 (get-bogen-mass bogen-ab (fix *vfk-gefaelle-winkel*))) (setq dz1 (+ (* (- (car m1)) (sin rad3)) (* (caddr m1) (cos rad3)))) (setq dz2 (caddr m2)) (setq tot (+ tot (* n-hor (+ dz1 dz2)))) @@ -4661,17 +4661,17 @@ ;; Dient der Winkelwahl: Fussabdruck + Kletter-Planlaenge soll die Lauflaenge treffen. (defun vfl3-einheit-fix-dx (w n-climb n-hor gf1 richtung / pi180 rad3 tot m1 m2 r1 r2 dx1 dx2) - (setq pi180 (/ pi 180.0) rad3 (* 3.0 pi180) tot 0.0) - (setq tot (* (+ (float gf1) 300.0 500.0 500.0) (cos rad3))) ; Stationen planar + (setq pi180 (/ pi 180.0) rad3 (* *vfk-gefaelle-winkel* pi180) tot 0.0) + (setq tot (* (+ (float gf1) *vfk-separator-laenge* *vfk-stations-laenge* *vfk-stations-laenge*) (cos rad3))) ; Stationen planar (if (= richtung "Auf") (setq m1 (get-bogen-mass bogen-auf w) r1 rad3 - m2 (get-bogen-mass bogen-ab w) r2 (* (- 3 w) pi180)) + m2 (get-bogen-mass bogen-ab w) r2 (* (- *vfk-gefaelle-winkel* w) pi180)) (setq m1 (get-bogen-mass bogen-ab w) r1 rad3 - m2 (get-bogen-mass bogen-auf w) r2 (* (+ w 3) pi180))) + m2 (get-bogen-mass bogen-auf w) r2 (* (+ w *vfk-gefaelle-winkel*) pi180))) (setq dx1 (+ (* (car m1) (cos r1)) (* (caddr m1) (sin r1)))) (setq dx2 (+ (* (car m2) (cos r2)) (* (caddr m2) (sin r2)))) (setq tot (+ tot (* n-climb (+ dx1 dx2)))) - (setq m1 (get-bogen-mass bogen-auf 3) m2 (get-bogen-mass bogen-ab 3)) + (setq m1 (get-bogen-mass bogen-auf (fix *vfk-gefaelle-winkel*)) m2 (get-bogen-mass bogen-ab (fix *vfk-gefaelle-winkel*))) (setq dx1 (+ (* (car m1) (cos rad3)) (* (caddr m1) (sin rad3)))) ; auf_3 @ 3 (setq dx2 (car m2)) ; ab_3 @ 0 (setq tot (+ tot (* n-hor (+ dx1 dx2)))) @@ -4717,7 +4717,7 @@ (if (null info) (- (+ (* (- (car endp) (car pt)) (cos (* seg-hz (/ pi 180.0)))) (* (- (cadr endp) (cadr pt)) (sin (* seg-hz (/ pi 180.0))))) - (+ 196.0 (* (+ 800.0 gf2) (cos rad3)))) ; Fallback: Along-Naeherung + (+ 196.0 (* (+ *vfk-feste-horizontal-kettenende* gf2) (cos rad3)))) ; Fallback: Along-Naeherung (progn (setq theta (* seg-hz (/ pi 180.0))) (setq dpx (cos theta) dpy (sin theta)) ; seg-hz Richtung @@ -4730,7 +4730,7 @@ (setq perp-es (+ (* vwx npx) (* vwy npy))) (setq ua (* (+ seg-hz (- (cadr info) (car info))) (/ pi 180.0))) ; KS_AUS-Achse (setq na-x (- (sin ua)) na-y (cos ua)) ; senkrecht zur KS_AUS-Achse - (setq cc (+ 196.0 (* (+ 800.0 gf2) (cos rad3)) along-es)) + (setq cc (+ 196.0 (* (+ *vfk-feste-horizontal-kettenende* gf2) (cos rad3)) along-es)) (setq dp-na (+ (* dpx na-x) (* dpy na-y))) (setq np-na (+ (* npx na-x) (* npy na-y))) (setq ep-na (+ (* (- (car endp) (car pt)) na-x) (* (- (cadr endp) (cadr pt)) na-y))) @@ -4875,7 +4875,7 @@ (if (null kette) (progn (princ (ssg-text "vfl-m3-fehler-nicht-sortierbar")) (exit))) (setq segmente (gf-analysiere-kette kette)) - (setq ecke-bad (vfl2-pruefe-eckwinkel kette 5.0)) + (setq ecke-bad (vfl2-pruefe-eckwinkel kette *vfk-eckwinkel-toleranz*)) (if ecke-bad (progn (alert (ssg-textf "vfl-m3-alert-eckwinkel" (list (rtos ecke-bad 2 1)))) @@ -4907,9 +4907,9 @@ (setq plan (cons (list "Linie" hz laenge "VF" nil) plan)) (progn (setq winkel (vfl-in-real (ssg-text "vfl-m3-prompt-gf-neigung"))) - (if (null winkel) (setq winkel 3.0)) - (if (> winkel 3.0) - (progn (princ (ssg-text "vfl-m3-hinweis-gf-max")) (setq winkel 3.0))) + (if (null winkel) (setq winkel *vfk-gefaelle-winkel*)) + (if (> winkel *vfk-gefaelle-winkel*) + (progn (princ (ssg-text "vfl-m3-hinweis-gf-max")) (setq winkel *vfk-gefaelle-winkel*))) (setq plan (cons (list "Linie" hz laenge "GF" winkel) plan))))))) ((= typ "Bogen") (setq bwinkel (nth 3 seg) bseite (nth 4 seg)) @@ -5010,7 +5010,7 @@ (princ (ssg-textf "vfl-m3-bruecke-richtung" (list richtn))) (princ (ssg-text "vfl-m3-vf-angetrieben")) (princ (ssg-textf "vfl-m3-mittlere-neigung" (list (rtos req-w 2 1)))) - (if (> req-w 51.0) + (if (> req-w *vfk-vario-winkel-max*) (princ (ssg-text "vfl-m3-warnung-zu-steil")) (princ (ssg-text "vfl-m3-vario-bereich-ok"))) @@ -5022,8 +5022,8 @@ ;; Nummerierung + Akkumulatoren + AS/ES-Fussabdruecke. Ohne AS-Element (aus- ;; vorhanden=nil) faellt der Fussabdruck weg - die Kette beginnt direkt am ;; Startpunkt, also 0 statt Block-/Fallback-Mass. - (setq aus (if as-vorhanden (if aus-dx aus-dx 576.0) 0.0) - ein (if es-vorhanden (if ein-dx ein-dx 576.0) 0.0)) + (setq aus (if as-vorhanden (if aus-dx aus-dx *vfk-as-es-fallback-dx*) 0.0) + ein (if es-vorhanden (if ein-dx ein-dx *vfk-as-es-fallback-dx*) 0.0)) (setq vfl-nummer (vf-next-number)) (setq lastEnt (vf-lastent-ohne-attribute)) (vfl-acc-reset) @@ -5079,7 +5079,7 @@ (setq deltaL (- deltaL (+ (* (- (car (car frame)) (car startpunkt)) (cos (* hz (/ pi 180.0)))) (* (- (cadr (car frame)) (cadr startpunkt)) (sin (* hz (/ pi 180.0)))))))) - (setq deltaL (max 100.0 deltaL)) + (setq deltaL (max *vfk-restlaenge-min-clamp* deltaL)) (setq frame (vfl-insert-gf-segment (car frame) hz deltaL winkel)) (vfl-acc-gf-seg (/ deltaL (cos (* winkel (/ pi 180.0)))) winkel) (setq anzahl-gf (1+ anzahl-gf) letzt-winkel winkel)) @@ -5135,7 +5135,7 @@ ;; (ein auf_3 rein, ein ab_3 raus), unabhaengig von der Zahl der Fueller/Kurven. (setq hor-pairs (if (or (> nkurve 0) (> nonclimber-cnt 0)) 1 0)) (setq run-span (+ climber-span nonclimber-len kurve-chords)) - (setq br-gf1 400.0) ; feste kleine GF1 + (setq br-gf1 *vfl-gf-min-laenge*) ; feste kleine GF1 (setq br-richtn (if (< dH-bruecke 0) "Auf" "Ab")) (setq target-climb (- z-junction z-front)) ; noetige Netto-Hoehe (Auf>0) ;; Kletter-Segment als Standard-Vario loesen; GF wird BERECHNET (L_GF) und der @@ -5151,11 +5151,11 @@ ;; feste = 800 (Umlenk+Sep). berechne rechnet Motor-/Uebergangs-Abstieg NICHT, ;; daher Kletterhoehe um diese Abstiege anpassen (GF2 bleibt ~0). ;; - Ohne flache Zone (Einzel-Bruecke): feste = 1300 (inkl. Motor), keine Anpassung. - (setq rad3v (* 3.0 (/ pi 180.0))) + (setq rad3v (* *vfk-gefaelle-winkel* (/ pi 180.0))) (if (> hor-pairs 0) - (setq feste-vf 800.0 - dH-adj (- dH-bruecke (+ (* 500.0 (sin rad3v)) 10.48))) ; Motor + auf_3/ab_3 - (setq feste-vf 1300.0 dH-adj dH-bruecke)) + (setq feste-vf *vfk-feste-horizontal-kettenende* + dH-adj (- dH-bruecke (+ (* *vfk-stations-laenge* (sin rad3v)) *vfk-bruecke-korrektur*))) ; Motor + auf_3/ab_3 + (setq feste-vf *vfk-feste-horizontal-linienzug* dH-adj dH-bruecke)) (setq wahl3 (vfl3-waehle-winkel climber-span dH-adj feste-vf)) (if (null wahl3) (progn (princ (ssg-text "vfl-m3-kein-winkel")) @@ -5199,7 +5199,7 @@ ;; --- Kletterer (geneigt, 3-Grad-Basis) --- ((and (= (car seg) "Linie") (member i climbers)) (if flat-p (progn (setq pt (vfl3-flach-aus pt seg-hz)) (setq flat-p nil))) - (setq this-lvf (max 100.0 (* br-lvf (/ (caddr seg) climber-span)))) + (setq this-lvf (max *vfk-restlaenge-min-clamp* (* br-lvf (/ (caddr seg) climber-span)))) (setq pt (vfs-vf-koerper pt br-richtn br-winkel this-lvf seg-hz)) (vfl-acc-vf-seg br-richtn br-winkel this-lvf) (setq anzahl-vf (1+ anzahl-vf) letzt-koerper-hz seg-hz)) @@ -5229,11 +5229,11 @@ br-gf2-exp rad3v) (- (+ (* (- (car endpunkt) (car pt)) (cos (* seg-hz (/ pi 180.0)))) (* (- (cadr endpunkt) (cadr pt)) (sin (* seg-hz (/ pi 180.0))))) - (* (+ 500.0 br-gf2-exp) (cos rad3v))) + (* (+ *vfk-stations-laenge* br-gf2-exp) (cos rad3v))) ) ) (setq fill-len (caddr seg))) - (setq fill-len (max 100.0 fill-len)) + (setq fill-len (max *vfk-restlaenge-min-clamp* fill-len)) (setq pt (insert-inclined-scaled-block "Staustrecke_SP_1000_mm" pt fill-len 0 seg-hz)) (vfl-acc-vf-seg "horizontal" 0 fill-len) (setq anzahl-vf (1+ anzahl-vf)) (setq letzt-koerper-hz seg-hz)) @@ -5265,12 +5265,12 @@ (progn (princ (ssg-textf "vfl-m3-warnung-gf2-negativ" (list (rtos (- gf2-drop) 2 1)))) (setq gf2-drop 0.0))) - (setq gf2-planar (/ gf2-drop (/ (sin (* 3.0 (/ pi 180.0))) (cos (* 3.0 (/ pi 180.0)))))) + (setq gf2-planar (/ gf2-drop (/ (sin (* *vfk-gefaelle-winkel* (/ pi 180.0))) (cos (* *vfk-gefaelle-winkel* (/ pi 180.0)))))) (if (> gf2-planar 0.1) (progn (princ (ssg-textf "vfl-m3-gf2-ausgleich" (list (rtos gf2-planar 2 1)))) - (setq frame (vfl-insert-gf-segment pt letzt-koerper-hz gf2-planar 3)) - (vfl-acc-gf-seg (/ gf2-planar (cos (* 3.0 (/ pi 180.0)))) 3)) + (setq frame (vfl-insert-gf-segment pt letzt-koerper-hz gf2-planar (fix *vfk-gefaelle-winkel*))) + (vfl-acc-gf-seg (/ gf2-planar (cos (* *vfk-gefaelle-winkel* (/ pi 180.0)))) (fix *vfk-gefaelle-winkel*))) (setq frame (vfl-frame-3grad pt letzt-koerper-hz))) (setq hz letzt-koerper-hz) @@ -5284,8 +5284,8 @@ ;; Footprint fuer Separator(300)+ES nur reservieren, wenn ES-Element ;; gewuenscht ist (ein=0 sonst, siehe oben) - ohne ES entfaellt auch ;; der abschliessende Separator. - (if (= i last-line) (setq deltaL (- deltaL (if es-vorhanden 300.0 0.0) ein))) - (setq deltaL (max 100.0 deltaL)) + (if (= i last-line) (setq deltaL (- deltaL (if es-vorhanden *vfk-separator-laenge* 0.0) ein))) + (setq deltaL (max *vfk-restlaenge-min-clamp* deltaL)) (setq frame (vfl-insert-gf-segment (car frame) hz deltaL winkel)) (vfl-acc-gf-seg (/ deltaL (cos (* winkel (/ pi 180.0)))) winkel) (setq anzahl-gf (1+ anzahl-gf) letzt-winkel winkel)) @@ -5300,7 +5300,7 @@ (if (null frame) (progn (princ (ssg-text "vfl-m3-nichts-gebaut")) (exit))) (if es-vorhanden (setq frame (vfl-insert-es-element "GF" frame (car (frame->hz-winkel frame)) - (if letzt-winkel letzt-winkel 3.0) (caddr (car frame)) es-seite))) + (if letzt-winkel letzt-winkel *vfk-gefaelle-winkel*) (caddr (car frame)) es-seite))) ;; ---------- Block + Ist-Ziel-Report ---------- (setq hoehe-bis (caddr (car frame))) @@ -5609,7 +5609,7 @@ (cond ((null fund) (setq fertig T)) ((<= (cdr fund) *vfl-kette-tol-eng*) - (if (> (cdr fund) 0.5) + (if (> (cdr fund) *vfk-kette-anschluss-warnung*) (setq verdaechtig (cons (list (vfl-kette-rec-bname aktuell) (vfl-kette-rec-bname (car fund)) (cdr fund)) verdaechtig))) (setq aktuell (car fund)) (setq kette (append kette (list aktuell))) diff --git a/Lisp/vf_standard.lsp b/Lisp/vf_standard.lsp index 45c2861..d5a8ec5 100644 --- a/Lisp/vf_standard.lsp +++ b/Lisp/vf_standard.lsp @@ -260,8 +260,8 @@ (if (or (null mass1) (null mass2)) (setq ergebnis-liste (cons (list winkel nil nil nil) ergebnis-liste)) (progn - (setq rad5 (* 3.0 (/ pi 180.0))) - (setq rad7 (* (float (if (= richtung "Auf") (- 3 winkel) (+ winkel 3))) + (setq rad5 (* *vfk-gefaelle-winkel* (/ pi 180.0))) + (setq rad7 (* (float (if (= richtung "Auf") (- *vfk-gefaelle-winkel* winkel) (+ winkel *vfk-gefaelle-winkel*))) (/ pi 180.0))) (setq bogen-x1 (+ (* (car mass1) (cos rad5)) (* (caddr mass1) (sin rad5)))) (setq bogen-z1 (+ (* (- (car mass1)) (sin rad5)) (* (caddr mass1) (cos rad5)))) @@ -271,7 +271,7 @@ sinα (sin (* winkel (/ pi 180.0)))) (setq A (- deltaL aus-dx ein-dx bogen-x1 bogen-x2 (* feste-hz cos3))) - (setq winkel-eff (if (= richtung "Auf") (- winkel 3) (+ winkel 3))) + (setq winkel-eff (if (= richtung "Auf") (- winkel *vfk-gefaelle-winkel*) (+ winkel *vfk-gefaelle-winkel*))) (setq cosEff (cos (* winkel-eff (/ pi 180.0))) sinEff (sin (* winkel-eff (/ pi 180.0)))) (if (= richtung "Auf") @@ -342,12 +342,12 @@ mass1 mass2 rad3 bogen-x1 bogen-z1 bogen-x2 bogen-z2 deltaH-signiert A-hz B-hz GF_total L_VF-hz gueltig) - (setq mass1 (get-bogen-mass bogen-auf 3)) - (setq mass2 (get-bogen-mass bogen-ab 3)) + (setq mass1 (get-bogen-mass bogen-auf (fix *vfk-gefaelle-winkel*))) + (setq mass2 (get-bogen-mass bogen-ab (fix *vfk-gefaelle-winkel*))) (if (or (null mass1) (null mass2)) nil (progn - (setq rad3 (* 3.0 (/ pi 180.0))) + (setq rad3 (* *vfk-gefaelle-winkel* (/ pi 180.0))) ;; Bogen1 (immer auf_3): Eintritt bei 3 Grad (von Umlenkstation), biegt auf 0 Grad (setq bogen-x1 (+ (* (car mass1) (cos rad3)) (* (caddr mass1) (sin rad3)))) (setq bogen-z1 (+ (* (- (car mass1)) (sin rad3)) (* (caddr mass1) (cos rad3))))