[REFACTOR] VF-Cluster: Magic-Numbers auf *vfk-*-Konstanten umgestellt
vf_core/vf_standard/vf_etage/vf_linienzug referenzieren jetzt durchgaengig die zentralen *vfk-*-Konstanten aus vf_konstanten.lsp statt rohe Winkel-/ Laengen-/Toleranz-Literale (3.0 Grad, 500/300mm Stationen/Separatoren, 1000/800mm Mindestlaengen, AS/ES-Fallback-Versaetze, Text-/Label-Masse). Bereits ueber ssg-cfg-or config-gefuehrte Werte bleiben unangetastet (Config bleibt dort die aktive Quelle). vf_etage-Bogenwinkel-Inkonsistenz (fest verdrahtete Liste ohne Bezug zu *vfk-bogen-winkel*) behoben. vf_konstanten.lsp-Kommentare auf den neuen, aktiven Status aktualisiert.
This commit is contained in:
+5
-5
@@ -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
|
||||
|
||||
+21
-21
@@ -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))))
|
||||
|
||||
+75
-71
@@ -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" "<key>" <default>) 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)
|
||||
|
||||
+94
-94
@@ -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)))
|
||||
|
||||
@@ -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))))
|
||||
|
||||
Reference in New Issue
Block a user