diff --git a/Lisp/Gefaellestrecke.lsp b/Lisp/Gefaellestrecke.lsp index d7057c6..80efae6 100644 --- a/Lisp/Gefaellestrecke.lsp +++ b/Lisp/Gefaellestrecke.lsp @@ -121,13 +121,13 @@ (setq block-datei (strcat block-pfad blockname ".dwg")) (if (findfile block-datei) (progn - (princ (strcat "\n Lade Block: " blockname " ...")) + (princ (ssg-textf "gf-lade-block" (list blockname))) (setq temp-obj (vla-InsertBlock modelspace (vlax-3D-point '(0 0 0)) block-datei 1.0 1.0 1.0 0)) (vla-Delete temp-obj) - (princ " OK") + (princ (ssg-text "gf-status-ok")) ) (princ (ssg-textf "gf-fehler-blockdatei-fehlt" (list block-datei))) ) @@ -757,7 +757,7 @@ (setq rest (vl-remove best rest)) ) (progn - (princ "\n WARNUNG: Kette unterbrochen!") + (princ (ssg-text "gf-warnung-kette-unterbrochen")) (setq rest nil) ) ) @@ -854,25 +854,24 @@ ;; dH_grade = L_total * sin(v); dH_fix = aus-dz + ein-dz + sum-dz-bogen (setq L-gerade (+ L-gerade (float aus-dx) (float ein-dx) (float sum-dx-bogen))) (setq deltaH-eff (- (float deltaH) (float aus-dz) (float ein-dz) sum-dz-bogen)) - (princ (strcat "\n Gesamte Nennlaenge (inkl. Bogen-dx): " (rtos L-gerade 2 1) " mm")) - (princ (strcat "\n Feste Hoehenanteile (AS/ES-dz + Bogen-dz): " - (rtos (+ (float aus-dz) (float ein-dz) sum-dz-bogen) 2 1) " mm")) - (princ (strcat "\n aus-dz=" (rtos (float aus-dz) 2 2) - " ein-dz=" (rtos (float ein-dz) 2 2) - " Bogen-dz=" (rtos sum-dz-bogen 2 2))) - (princ (strcat "\n Effektive Resthoehe fuer Grade: " (rtos deltaH-eff 2 1) " mm")) + (princ (ssg-textf "gf-status-nennlaenge" (list (rtos L-gerade 2 1)))) + (princ (ssg-textf "gf-status-feste-hoehenanteile" + (list (rtos (+ (float aus-dz) (float ein-dz) sum-dz-bogen) 2 1)))) + (princ (ssg-textf "gf-status-dz-detail" + (list (rtos (float aus-dz) 2 2) (rtos (float ein-dz) 2 2) (rtos sum-dz-bogen 2 2)))) + (princ (ssg-textf "gf-status-resthoehe" (list (rtos deltaH-eff 2 1)))) (cond ((<= L-gerade 0.1) - (princ "\n WARNUNG: keine geraden Strecken -> Fallback 3 Grad") + (princ (ssg-text "gf-warnung-keine-geraden")) 3.0) ((< deltaH-eff 0) - (princ "\n WARNUNG: feste Anteile > deltaH -> Fallback 1 Grad") + (princ (ssg-text "gf-warnung-feste-anteile")) 1.0) (t (setq sin-alpha (/ deltaH-eff L-gerade)) (if (> sin-alpha 1.0) (setq sin-alpha 1.0)) (setq alpha (* (asin sin-alpha) (/ 180.0 pi))) - (princ (strcat "\n>>> Naeherungswinkel: " (rtos alpha 2 3) grad-zeichen)) + (princ (ssg-textf "gf-status-naeherungswinkel" (list (rtos alpha 2 3) grad-zeichen))) alpha ) ) @@ -918,10 +917,9 @@ (setq bseite (nth 4 seg)) (cond ((= typ "Linie") - (princ (strcat "\n\n" (itoa (1+ i)) "/" (itoa n) - ": Staustrecke L=" (rtos laenge 2 1) " mm" - " hz=" (rtos hz 2 1) grad-zeichen - " v=" (rtos grade 2 2) grad-zeichen)) + (princ (ssg-textf "gf-status-linie-staustrecke" + (list (1+ i) n (rtos laenge 2 1) (rtos hz 2 1) grad-zeichen + (rtos grade 2 2) grad-zeichen))) (setq endpunkt (gf-insert-hz-incl-scaled "Staustrecke_SP_1000_mm" (car aktuell-frame) laenge hz grade)) @@ -935,10 +933,8 @@ ;; Separator am Ende dieser Linie, falls naechstes Segment ein Bogen ist (if (and naechstes (= (car naechstes) "Bogen")) (progn - (princ (strcat "\n\n" (itoa (1+ i)) "S/" (itoa n) - ": Separator 300mm (vor Bogen)" - " hz=" (rtos hz 2 1) grad-zeichen - " v=" (rtos grade 2 2) grad-zeichen)) + (princ (ssg-textf "gf-status-separator-vor-bogen" + (list (1+ i) n (rtos hz 2 1) grad-zeichen (rtos grade 2 2) grad-zeichen))) (setq endpunkt (gf-insert-hz-with-ks "Staustrecke_Separator_SP_300_mm" (car aktuell-frame) hz grade 300 0)) @@ -948,9 +944,8 @@ ) ((= typ "Bogen") (setq blockname (gf-bogen-blockname bwinkel bseite)) - (princ (strcat "\n\n" (itoa (1+ i)) "/" (itoa n) - ": " blockname - " hz=" (rtos hz 2 1) grad-zeichen)) + (princ (ssg-textf "gf-status-bogen-einfuegen" + (list (1+ i) n blockname (rtos hz 2 1) grad-zeichen))) ;; Gefaellebogen: KS_EIN an aktuellem Rahmen ausrichten (volle 3D-Rotation) (setq aktuell-frame (insert-block-ks-to-ks blockname aktuell-frame)) ) @@ -958,7 +953,7 @@ (setq i (1+ i)) ) (princ "\n\n=========================================") - (princ "\n>>> Linienzug-Gefaellestrecke eingefuegt! <<<") + (princ (ssg-text "gf-status-linienzug-eingefuegt")) (princ "\n=========================================") aktuell-frame) @@ -1009,17 +1004,17 @@ rad-v-korr ein-hz-as-k rad-h-as-k xu-as-meas rad-h-es-k xu-es-meas dz-as-ist dz-es-ist dH-korr grade-prev iter) - (princ "\n\n>>> MODUS 3: Linienzug auswaehlen <<<") - (princ "\nBitte alle Linien (LINE) und Boegen (ARC) des Pfades auswaehlen,") - (princ "\ndann ENTER druecken:") + (princ (ssg-text "gf-modus3-header")) + (princ (ssg-text "gf-modus3-hinweis1")) + (princ (ssg-text "gf-modus3-hinweis2")) ;; Selektion (setq ss (ssget (list (cons 0 "LINE,ARC")))) (if (null ss) - (progn (princ "\nKeine Objekte ausgewaehlt!") (exit)) + (progn (princ (ssg-text "gf-fehler-keine-objekte")) (exit)) ) (setq n (sslength ss)) - (princ (strcat "\n " (itoa n) " Objekte ausgewaehlt.")) + (princ (ssg-textf "gf-status-objekte-ausgewaehlt" (list n))) ;; Objekte in Liste (setq obj-liste '() i 0) @@ -1032,30 +1027,30 @@ ;; Startpunkt: Kettenanfang (Sortierung) + KS_EIN-Position des AUS-Elements ;; Z-Hoehe = Anschlusshoehe der Gesamtstrecke (deltaH-Referenz oben) (setq startpunkt - (getpoint "\nStartpunkt (3D) waehlen - KS_EIN AUS-Element / Kettenanfang: ")) + (getpoint (ssg-text "gf-prompt-startpunkt-kette"))) (if (null startpunkt) - (progn (princ "\nKein Startpunkt!") (exit)) + (progn (princ (ssg-text "gf-fehler-kein-startpunkt")) (exit)) ) ;; Endpunkt: KS_AUS-Position des EIN-Elements (Z-Referenz unten) ;; deltaH = |startpunkt.Z - endpunkt-ref.Z| (setq endpunkt-ref - (getpoint "\nEndpunkt (3D) waehlen - KS_AUS EIN-Element / Kettenende: ")) + (getpoint (ssg-text "gf-prompt-endpunkt-kette"))) (if (null endpunkt-ref) - (progn (princ "\nKein Endpunkt!") (exit)) + (progn (princ (ssg-text "gf-fehler-kein-endpunkt")) (exit)) ) ;; DeltaH aus Z-Koordinaten (setq deltaH (abs (- (caddr startpunkt) (caddr endpunkt-ref)))) - (princ (strcat "\n " delta-sym "H aus 3D-Punkten: " (rtos deltaH 2 1) " mm")) + (princ (ssg-textf "gf-status-deltah-3dpunkte" (list delta-sym (rtos deltaH 2 1)))) ;; Kette sortieren - (princ "\n Sortiere Segmente ...") + (princ (ssg-text "gf-status-sortiere-segmente")) (setq kette (gf-sortiere-objekte obj-liste startpunkt)) (if (null kette) - (progn (alert "Keine verbundene Kette gefunden!") (exit)) + (progn (alert (ssg-text "gf-alert-keine-kette")) (exit)) ) - (princ (strcat " " (itoa (length kette)) " Segmente gefunden.")) + (princ (ssg-textf "gf-status-segmente-gefunden" (list (length kette)))) ;; Segmente analysieren (setq segmente (gf-analysiere-kette kette)) @@ -1125,36 +1120,35 @@ ) ;; Segmente nach Laengenanpassung anzeigen - (princ "\n\n--- Segment-Analyse (Laengen nach Kuerzung) ---") + (princ (ssg-text "gf-status-segment-analyse-header")) (setq idx 0) (foreach seg segmente (setq idx (1+ idx)) (if (= (car seg) "Linie") - (princ (strcat "\n " (itoa idx) ". Linie L=" (rtos (caddr seg) 2 1) - " mm hz=" (rtos (cadr seg) 2 1) grad-zeichen)) - (princ (strcat "\n " (itoa idx) ". Bogen " (itoa (nth 3 seg)) - grad-zeichen " " (nth 4 seg) - " hz-Eingang=" (rtos (cadr seg) 2 1) grad-zeichen)) + (princ (ssg-textf "gf-status-segment-linie" + (list idx (rtos (caddr seg) 2 1) (rtos (cadr seg) 2 1) grad-zeichen))) + (princ (ssg-textf "gf-status-segment-bogen" + (list idx (itoa (nth 3 seg)) grad-zeichen (nth 4 seg) + (rtos (cadr seg) 2 1) grad-zeichen))) ) ) - (princ (strcat "\n Seg " (itoa (1+ first-idx)) " (1. Linie): -" (rtos aus-dx 2 1) " mm (AUS-Element)")) - (princ "\n Jede Linie vor Bogen: -300 mm (Bogen-Separator)") - (princ (strcat "\n Seg " (itoa (1+ last-idx)) " (letzte Linie): -300 mm (EIN-Sep) -" (rtos ein-dx 2 1) " mm (EIN-Element)")) - (princ (strcat "\n Eintrittsrichtung: " (rtos entry-hz 2 1) grad-zeichen)) - (princ (strcat "\n Austrittsrichtung: " (rtos exit-hz 2 1) grad-zeichen)) + (princ (ssg-textf "gf-status-seg-erste-linie" (list (1+ first-idx) (rtos aus-dx 2 1)))) + (princ (ssg-text "gf-status-linie-vor-bogen")) + (princ (ssg-textf "gf-status-seg-letzte-linie" (list (1+ last-idx) (rtos ein-dx 2 1)))) + (princ (ssg-textf "gf-status-eintrittsrichtung" (list (rtos entry-hz 2 1) grad-zeichen))) + (princ (ssg-textf "gf-status-austrittsrichtung" (list (rtos exit-hz 2 1) grad-zeichen))) ;; Gefaellewinkel berechnen (1 Extra-Separator vor EIN-Element) - (princ "\n\n Berechne Gefaellewinkel aus Geometrie ...") + (princ (ssg-text "gf-status-berechne-winkel")) (setq grade (gf-winkel-berechnen segmente deltaH 1)) ;; Manuelle Anpassung (setq antwort - (getstring (strcat "\nBerechneten Winkel " - (rtos grade 2 3) grad-zeichen - " verwenden? (j/n) [j]: "))) + (getstring (ssg-textf "gf-prompt-winkel-verwenden" + (list (rtos grade 2 3) grad-zeichen)))) (if (= (strcase antwort) "N") (progn - (setq grade (getreal "\nGefaellewinkel (Grad): ")) + (setq grade (getreal (ssg-text "gf-prompt-gefaellewinkel"))) (if (or (null grade) (<= grade 0)) (setq grade 3.0)) ) ) @@ -1166,7 +1160,7 @@ ;; Garantiert: dz_AS(v) + L_stau*sin(v) + dz_ES(v) + dz_bogen = deltaH (if (and *gf-L-ohne-as-es* (> *gf-L-ohne-as-es* 0.1)) (progn - (princ "\n Messe tatsaechliche AS/ES-Absenkung (iterativ) ...") + (princ (ssg-text "gf-status-messe-absenkung")) (setq grade-prev -999.0 iter 0) (while (and (< iter 4) (> (abs (- grade grade-prev)) 0.001)) (setq grade-prev grade) @@ -1189,16 +1183,16 @@ (if (and (> dH-korr 0.0) (< (/ dH-korr *gf-L-ohne-as-es*) 1.0)) (setq grade (* (asin (/ dH-korr *gf-L-ohne-as-es*)) (/ 180.0 pi))) (progn - (princ "\n WARNUNG: Korrektur ausserhalb Bereich, Winkel unveraendert") + (princ (ssg-text "gf-warnung-korrektur-bereich")) (setq grade-prev grade) ) ) (setq iter (1+ iter)) ) - (princ (strcat "\n AS: " (rtos dz-as-ist 2 2) " mm" - " ES: " (rtos dz-es-ist 2 2) " mm")) - (princ (strcat "\n>>> Korrigierter Gefaellewinkel: " (rtos grade 2 3) grad-zeichen - " (nach " (itoa iter) " Iter.)")) + (princ (ssg-textf "gf-status-as-es-mm" + (list (rtos dz-as-ist 2 2) (rtos dz-es-ist 2 2)))) + (princ (ssg-textf "gf-status-korrigierter-winkel" + (list (rtos grade 2 3) grad-zeichen (itoa iter)))) ) ) @@ -1209,18 +1203,18 @@ ;; Zusammenfassung (princ "\n\n=========================================") - (princ (strcat "\n>>> Segmente: " (itoa (length segmente)))) - (princ (strcat "\n>>> " delta-sym "H: " (rtos deltaH 2 2) " mm")) - (princ (strcat "\n>>> " delta-sym "L: " (rtos delta-l-gf 2 1) " mm")) - (princ (strcat "\n>>> Gefaellewinkel: " (rtos grade 2 3) grad-zeichen)) - (princ (strcat "\n>>> Eintrittswinkel: " (rtos entry-hz 2 1) grad-zeichen)) - (princ (strcat "\n>>> Austrittswinkel: " (rtos exit-hz 2 1) grad-zeichen)) - (princ (strcat "\n>>> AUS-Element: " as-block)) - (princ (strcat "\n>>> EIN-Element: " es-block)) + (princ (ssg-textf "gf-status-zus-segmente" (list (length segmente)))) + (princ (ssg-textf "gf-status-zus-deltah" (list delta-sym (rtos deltaH 2 2)))) + (princ (ssg-textf "gf-status-zus-deltal" (list delta-sym (rtos delta-l-gf 2 1)))) + (princ (ssg-textf "gf-status-zus-winkel" (list (rtos grade 2 3) grad-zeichen))) + (princ (ssg-textf "gf-status-zus-eintrittswinkel" (list (rtos entry-hz 2 1) grad-zeichen))) + (princ (ssg-textf "gf-status-zus-austrittswinkel" (list (rtos exit-hz 2 1) grad-zeichen))) + (princ (ssg-textf "gf-status-zus-aus-element" (list as-block))) + (princ (ssg-textf "gf-status-zus-ein-element" (list es-block))) (princ "\n=========================================") ;; Bestaetigung - (setq antwort (getstring "\nEinfuegen? (1=Ja / 2=Nein) [1]: ")) + (setq antwort (getstring (ssg-text "gf-prompt-einfuegen"))) (if (not (= antwort "2")) (progn ;; GF-Nummer und Entity-Grenze vor erster Einfuegung sichern. @@ -1242,10 +1236,9 @@ (setq xu-entry (list (* (cos rad-h-as)(cos rad-v-as)) (* (sin rad-h-as)(cos rad-v-as)) (- (sin rad-v-as)))) - (princ (strcat "\n\n>>> AUS-Element: " as-block - " Fahrtrichtung=" (rtos entry-hz 2 1) grad-zeichen - " KS_EIN-hz=" (rtos ein-hz-as 2 1) grad-zeichen - " Z=" (rtos (caddr startpunkt) 2 1))) + (princ (ssg-textf "gf-status-aus-element-detail" + (list as-block (rtos entry-hz 2 1) grad-zeichen + (rtos ein-hz-as 2 1) grad-zeichen (rtos (caddr startpunkt) 2 1)))) ;; Block-Ursprung (nicht KS_EIN!) in X/Y auf startpunkt setzen, damit die ;; Mittelachse der Foerderstrecke (KS_AUS-Richtung) exakt durch den ;; ausgewaehlten Startpunkt verlaeuft. KS_EIN sitzt seitlich versetzt @@ -1261,7 +1254,7 @@ (setq aktuell-frame (gf-linienzug-einfuegen segmente grade aktuell-frame)) ;; Separator vor EIN-Element - (princ "\n>>> Separator vor EIN-Element") + (princ (ssg-text "gf-status-separator-vor-ein")) (setq sep-endpunkt (gf-insert-hz-with-ks "Staustrecke_Separator_SP_300_mm" (car aktuell-frame) exit-hz grade 300 0)) @@ -1277,12 +1270,12 @@ ;; seine eigene Achse verlaeuft damit trivial durch diesen Punkt. ;; Die Z-Hoehe wird jedoch an KS_AUS gemessen, damit KS_AUS.Z exakt ;; auf endpunkt-ref.Z landet (garantiert die gewuenschte DeltaH). - (princ (strcat "\n>>> EIN-Element: " es-block - " Ziel-Z=" (rtos (caddr endpunkt-ref) 2 1))) + (princ (ssg-textf "gf-status-ein-element-detail" + (list es-block (rtos (caddr endpunkt-ref) 2 1)))) (setq es-aus-frame (insert-block-mixed-to-ks es-block sep-frame (caddr endpunkt-ref) "KS_EIN" "KS_AUS")) - (princ (strcat "\n Z-Hoehe KS_AUS: " (rtos (caddr (car es-aus-frame)) 2 1) " mm")) + (princ (ssg-textf "gf-status-z-hoehe-ks-aus" (list (rtos (caddr (car es-aus-frame)) 2 1)))) ;; --- GF_N-Block erstellen --- @@ -1341,10 +1334,10 @@ es-seite) (princ "\n\n=========================================") - (princ "\n>>> Fertig! <<<") + (princ (ssg-text "gf-status-fertig")) (princ "\n=========================================") ) - (princ "\nAbgebrochen.") + (princ (ssg-text "gf-status-abgebrochen")) ) ) @@ -1516,7 +1509,7 @@ ;; Aufsteigende, eindeutige ID vergeben (wie beim Kreisel), falls verfuegbar. (if (car (atoms-family 1 '("SSG-ID-GENERATE"))) (ssg-id-generate gf-insert)) - (princ (strcat "\n>>> GF-Block erstellt: " gf-bname " (" typ-str ")")) + (princ (ssg-textf "gf-status-gf-block-erstellt" (list gf-bname typ-str))) gf-insert ) @@ -1563,35 +1556,32 @@ ;; Mittelachse der Foerderstrecke (KS_AUS-Richtung) exakt durch den ;; ausgewaehlten Startpunkt verlaeuft (analog Modus 3). Die Z-Hoehe wird ;; weiterhin an KS_EIN gemessen, damit KS_EIN.Z = startpunkt.Z gilt. - (princ (strcat "\n\n1/4: " as-block - " Fahrtrichtung=" (rtos hz 2 1) grad-zeichen - " KS_EIN-hz=" (rtos ein-hz 2 1) grad-zeichen - " v=" (rtos winkel 2 1) grad-zeichen)) + (princ (ssg-textf "gf-status-schritt1-aus" + (list as-block (rtos hz 2 1) grad-zeichen (rtos ein-hz 2 1) grad-zeichen + (rtos winkel 2 1) grad-zeichen))) (setq startframe (make-frame-from-dir startpunkt xu-ein)) (setq aktuell-frame (insert-block-mixed-to-ks as-block startframe (caddr startpunkt) nil "KS_EIN")) (setq nach-aus-pt (car aktuell-frame)) ;; 2/4: Staustrecke (skalierbar, hz+vert) - (princ (strcat "\n\n2/4: Staustrecke L=" (rtos L_stau 2 1) - " mm hz=" (rtos hz 2 1) grad-zeichen - " v=" (rtos winkel 2 1) grad-zeichen)) + (princ (ssg-textf "gf-status-schritt2-staustrecke" + (list (rtos L_stau 2 1) (rtos hz 2 1) grad-zeichen (rtos winkel 2 1) grad-zeichen))) (setq stau-endpunkt (gf-insert-hz-incl-scaled "Staustrecke_SP_1000_mm" (car aktuell-frame) L_stau hz winkel)) (setq aktuell-frame (make-frame-from-dir stau-endpunkt xu-incl)) ;; 3/4: Separator 300mm - (princ (strcat "\n\n3/4: Separator 300mm" - " hz=" (rtos hz 2 1) grad-zeichen - " v=" (rtos winkel 2 1) grad-zeichen)) + (princ (ssg-textf "gf-status-schritt3-separator" + (list (rtos hz 2 1) grad-zeichen (rtos winkel 2 1) grad-zeichen))) (setq sep-endpunkt (gf-insert-hz-with-ks "Staustrecke_Separator_SP_300_mm" (car aktuell-frame) hz winkel 300 0)) (setq sep-frame (make-frame-from-dir sep-endpunkt xu-incl)) ;; 4/4: EIN-Element (KS-zu-KS) - (princ (strcat "\n\n4/4: " es-block)) + (princ (ssg-textf "gf-status-schritt4-ein" (list es-block))) (setq endpunkt (car (insert-block-ks-to-ks es-block sep-frame))) ;; Abgeleitete Werte: echte Endhoehe aus tatsaechlicher Ketten-Platzierung @@ -1615,7 +1605,7 @@ es-seite)) (princ "\n\n=========================================") - (princ "\n>>> Gefaellestrecke erfolgreich eingefuegt! <<<") + (princ (ssg-text "gf-status-erfolgreich-eingefuegt")) (princ "\n=========================================") ;; Rueckgabe: (ename echtes-deltaH echtes-deltaL) - volle Fliesskomma- ;; Genauigkeit, unabhaengig von der auf ganze mm gerundeten HOEHE_VON/ @@ -1633,24 +1623,24 @@ deltaX deltaY startpunkt-fuer-einfuegen hz-winkel) (princ "\n=========================================") - (princ "\n GEFAELLESTRECKE GENERATOR v2.0") - (princ "\n Richtung: immer AB (nach unten)") + (princ (ssg-text "gf-banner-titel")) + (princ (ssg-text "gf-banner-richtung")) (princ "\n=========================================") ;; Bibliothek initialisieren (if (not (gf-init-bibliothek)) (progn - (alert "Fehler beim Initialisieren der Bibliothek!\nBitte DXFM_DATA pruefen.") + (alert (ssg-text "gf-alert-init-fehler")) (exit) ) ) ;; Eingabemodus - (princ "\n\nEingabemodus waehlen:") - (princ "\n 1 - Werte manuell eingeben (einfache Strecke)") - (princ "\n 2 - 3D-Linie auswaehlen (einfache Strecke)") - (princ "\n 3 - Linienzug (LINE + ARC) auswaehlen mit Gefaellebogen") - (setq antwort (getstring "\nIhre Wahl (1/2/3) [1]: ")) + (princ (ssg-text "gf-eingabemodus-header")) + (princ (ssg-text "gf-eingabemodus-1")) + (princ (ssg-text "gf-eingabemodus-2")) + (princ (ssg-text "gf-eingabemodus-3")) + (setq antwort (getstring (ssg-text "prompt-wahl-1-2-3"))) (cond ;; Modus 3: Linienzug mit Bogen @@ -1668,25 +1658,25 @@ ;; Modus 1: Manuelle Eingabe (if (= eingabe-modus "Manuell") (progn - (princ "\n\n>>> MODUS 1: Manuelle Werteingabe <<<") + (princ (ssg-text "gf-modus1-header")) (setq startpunkt-fuer-einfuegen - (getpoint "\nStartpunkt fuer AUS_Element waehlen: ")) + (getpoint (ssg-text "gf-prompt-startpunkt-aus"))) (if (null startpunkt-fuer-einfuegen) (setq startpunkt-fuer-einfuegen '(0 0 0))) - (setq deltaL (getreal (strcat "\n" delta-sym "L - Abstand (mm): "))) + (setq deltaL (getreal (ssg-textf "gf-prompt-deltal-abstand" (list delta-sym)))) (if (or (null deltaL) (<= deltaL 0)) (setq deltaL (ssg-cfg-or "gefaelle" "default_delta_l" 5000.0))) ) ;; Modus 2: 3D-Linie (progn - (princ "\n\n>>> MODUS 2: 3D-Linie auswaehlen <<<") + (princ (ssg-text "gf-modus2-header")) (command "BKS" "W") - (princ "\n BKS auf Weltkoordinaten gesetzt.") + (princ (ssg-text "gf-status-bks-welt")) (setq line-points (get-line-start-end-points - "\nBitte 3D-Linie fuer Richtung und Laenge auswaehlen:")) + (ssg-text "gf-prompt-3dlinie-richtung"))) (if (null line-points) - (progn (alert "Keine gueltige Linie ausgewaehlt!") (exit)) + (progn (alert (ssg-text "gf-alert-keine-linie")) (exit)) ) (setq startpunkt (car line-points) endpunkt (cadr line-points)) @@ -1697,61 +1687,60 @@ (setq deltaL (sqrt (+ (* deltaX deltaX) (* deltaY deltaY)))) ;; hz-Winkel: Fahrtrichtung aus Linienpunkten (in Grad, 0=Ost) (setq hz-winkel (* (angle '(0.0 0.0) (list deltaX deltaY)) (/ 180.0 pi))) - (princ (strcat "\n Fahrtrichtung: " (rtos hz-winkel 2 1) grad-zeichen - " (aus Linie)")) - (princ (strcat "\n " delta-sym "L = " (rtos deltaL 2 2) " mm")) + (princ (ssg-textf "gf-status-fahrtrichtung-linie" (list (rtos hz-winkel 2 1) grad-zeichen))) + (princ (ssg-textf "gf-status-deltal-mm" (list delta-sym (rtos deltaL 2 2)))) ;; Startpunkt separat waehlen (unabhaengig von Linie) (setq startpunkt-fuer-einfuegen - (getpoint "\nStartpunkt fuer AUS-Element waehlen: ")) + (getpoint (ssg-text "gf-prompt-startpunkt-aus"))) (if (null startpunkt-fuer-einfuegen) - (progn (princ "\nKein Startpunkt!") (exit)) + (progn (princ (ssg-text "gf-fehler-kein-startpunkt")) (exit)) ) ) ) (princ "\n\n=========================================") - (princ (strcat "\n " delta-sym "L = " (rtos deltaL 2 2) " mm")) + (princ (ssg-textf "gf-status-deltal-mm" (list delta-sym (rtos deltaL 2 2)))) (princ "\n=========================================") ;; Winkelabfrage (beide Modi: manuell) - (setq winkel (getreal "\n\nGefaellewinkel (Grad) [3]: ")) + (setq winkel (getreal (ssg-text "gf-prompt-gefaellewinkel-def3"))) (if (or (null winkel) (<= winkel 0)) (setq winkel (ssg-cfg-or "gefaelle" "default_winkel" 3.0))) (setq winkel (float winkel)) (setq rad (* winkel (/ pi 180.0))) - (princ (strcat "\n>>> Winkel: " (rtos winkel 2 1) grad-zeichen)) + (princ (ssg-textf "gf-status-winkel" (list (rtos winkel 2 1) grad-zeichen))) ;; Fahrtrichtung waehlen (nur Modus 1; Modus 2 berechnet hz aus Linie) (if (= eingabe-modus "Manuell") (progn - (princ "\n\nFahrtrichtung waehlen:") - (princ "\n 1 - 0° (X-Achse +, Ost)") - (princ "\n 2 - 90° (Y-Achse +, Nord)") - (princ "\n 3 - 180° (X-Achse -, West)") - (princ "\n 4 - 270° (Y-Achse -, Sued)") - (setq antwort (getstring "\nIhre Wahl (1/2/3/4) [1]: ")) + (princ (ssg-text "vfc-fahrtrichtung-header")) + (princ (ssg-textf "vfc-fahrtrichtung-0" (list grad-zeichen))) + (princ (ssg-textf "vfc-fahrtrichtung-90" (list grad-zeichen))) + (princ (ssg-textf "vfc-fahrtrichtung-180" (list grad-zeichen))) + (princ (ssg-textf "vfc-fahrtrichtung-270" (list grad-zeichen))) + (setq antwort (getstring (ssg-text "prompt-wahl-1-2-3-4"))) (cond ((= antwort "2") (setq hz-winkel 90.0)) ((= antwort "3") (setq hz-winkel 180.0)) ((= antwort "4") (setq hz-winkel 270.0)) (t (setq hz-winkel 0.0)) ) - (princ (strcat "\n>>> Fahrtrichtung: " (rtos hz-winkel 2 1) grad-zeichen)) + (princ (ssg-textf "gf-status-fahrtrichtung" (list (rtos hz-winkel 2 1) grad-zeichen))) ) ) ;; Seite AUS-Element waehlen - (princ "\n\nAUS-Element (AS_Element_90_*) - Seite waehlen:") - (princ "\n 1 - Links") - (princ "\n 2 - Rechts") - (setq antwort (getstring "\nIhre Wahl (1/2) [1]: ")) + (princ (ssg-text "gf-seite-aus-header")) + (princ (ssg-text "gf-seite-links")) + (princ (ssg-text "gf-seite-rechts")) + (setq antwort (getstring (ssg-text "prompt-wahl-1-2"))) (setq as-seite (if (= antwort "2") "rechts" "links")) ;; Seite EIN-Element waehlen - (princ "\n\nEIN-Element (ES_Element_90_*) - Seite waehlen:") - (princ "\n 1 - Links") - (princ "\n 2 - Rechts") - (setq antwort (getstring "\nIhre Wahl (1/2) [1]: ")) + (princ (ssg-text "gf-seite-ein-header")) + (princ (ssg-text "gf-seite-links")) + (princ (ssg-text "gf-seite-rechts")) + (setq antwort (getstring (ssg-text "prompt-wahl-1-2"))) (setq es-seite (if (= antwort "2") "rechts" "links")) ;; Laengenberechnung @@ -1762,27 +1751,25 @@ ;; Validierung (if (<= L_stau 0.1) (progn - (alert (strcat "Berechnete Staustreckenlaenge ungueltig: " - (rtos L_stau 2 2) " mm\n" - "Bitte groesseres deltaL oder kleineren Winkel waehlen.")) + (alert (ssg-textf "gf-alert-staustrecke-ungueltig" (list (rtos L_stau 2 2)))) (exit) ) ) ;; Zusammenfassung (princ "\n\n=========================================") - (princ (strcat "\n>>> Fahrtrichtung: " (rtos hz-winkel 2 1) grad-zeichen)) - (princ (strcat "\n>>> Winkel: " (rtos winkel 2 1) grad-zeichen)) - (princ (strcat "\n>>> AUS-Seite: " as-seite)) - (princ (strcat "\n>>> EIN-Seite: " es-seite)) - (princ (strcat "\n>>> L_stau: " (rtos L_stau 2 2) " mm")) + (princ (ssg-textf "gf-status-fahrtrichtung" (list (rtos hz-winkel 2 1) grad-zeichen))) + (princ (ssg-textf "gf-status-zus2-winkel" (list (rtos winkel 2 1) grad-zeichen))) + (princ (ssg-textf "gf-status-zus2-aus-seite" (list as-seite))) + (princ (ssg-textf "gf-status-zus2-ein-seite" (list es-seite))) + (princ (ssg-textf "gf-status-zus2-lstau" (list (rtos L_stau 2 2)))) (princ "\n=========================================") ;; Bestaetigung - (setq antwort (getstring "\nEinfuegen? (1=Ja / 2=Nein) [1]: ")) + (setq antwort (getstring (ssg-text "gf-prompt-einfuegen"))) (if (not (= antwort "2")) (gefaellestrecke-einfuegen L_stau (fix winkel) startpunkt-fuer-einfuegen as-seite es-seite hz-winkel deltaL) - (princ "\nAbgebrochen.") + (princ (ssg-text "gf-status-abgebrochen")) ) ) ) diff --git a/Lisp/vf_core.lsp b/Lisp/vf_core.lsp index feb98cf..8fc0274 100644 --- a/Lisp/vf_core.lsp +++ b/Lisp/vf_core.lsp @@ -1068,9 +1068,9 @@ ;; Aufsteigende, eindeutige ID vergeben (wie beim Kreisel), falls verfuegbar. (if (car (atoms-family 1 '("SSG-ID-GENERATE"))) (ssg-id-generate vf-insert)) - (princ (strcat "\n>>> Block '" vf-bname "' erstellt und eingefuegt.")) + (princ (ssg-textf "vfc-block-erstellt-eingefuegt" (list vf-bname))) ) - (princ "\n>>> FEHLER: Keine Entities fuer Block gefunden!") + (princ (ssg-text "vfc-fehler-keine-entities")) ) ) @@ -1116,13 +1116,13 @@ staustrecke-basis) (princ "\n=========================================") - (princ "\n VARIOFOERDERER GENERATOR v26.0") + (princ (ssg-text "vfc-banner-titel")) (princ "\n=========================================") ;; 1. Typ aus Registry waehlen (if (null *vf-typ-registry*) (progn - (alert "Keine Typen registriert!\nvf_standard.lsp und vf_etage.lsp pruefen.") + (alert (ssg-text "vfc-alert-keine-typen")) (exit) ) ) @@ -1130,19 +1130,19 @@ (if (and *vf-vorauswahl-typ* (assoc *vf-vorauswahl-typ* *vf-typ-registry*)) (progn (setq typ-eintr (assoc *vf-vorauswahl-typ* *vf-typ-registry*)) - (princ (strcat "\n>>> Typ vorgewaehlt: " *vf-vorauswahl-typ*)) + (princ (ssg-textf "vfc-typ-vorgewaehlt" (list *vf-vorauswahl-typ*))) (setq *vf-vorauswahl-typ* nil) ) (progn (setq *vf-vorauswahl-typ* nil) - (princ "\n\nAnlagen-Typ waehlen:") + (princ (ssg-text "vfc-anlagen-typ-header")) (setq idx 1) (foreach eintr *vf-typ-registry* - (princ (strcat "\n " (itoa idx) " - " (nth 3 eintr))) + (princ (ssg-textf "vfc-typ-option" (list idx (nth 3 eintr)))) (setq idx (1+ idx)) ) - (setq wahl (getint (strcat "\nIhre Wahl (1-" - (itoa (length *vf-typ-registry*)) ") [1]: "))) + (setq wahl (getint (ssg-textf "vfc-prompt-wahl-1-n" + (list (length *vf-typ-registry*))))) (if (or (null wahl) (< wahl 1) (> wahl (length *vf-typ-registry*))) (setq wahl 1)) (setq typ-eintr (nth (1- wahl) *vf-typ-registry*)) @@ -1151,7 +1151,7 @@ (setq anlage-typ (nth 0 typ-eintr)) (setq berechne-fn (nth 1 typ-eintr)) (setq einfuege-fn (nth 2 typ-eintr)) - (princ (strcat "\n>>> Typ: " anlage-typ)) + (princ (ssg-textf "vfc-typ-gewaehlt" (list anlage-typ))) ;; Sonderfall "linienzug": eigener Befehlsablauf (interaktive Mehrsegment- ;; Kette mit gemischten GF/VF-Segmenten), passt nicht in das berechne-fn/ @@ -1166,7 +1166,7 @@ ;; 2. VF-Nummer automatisch ermitteln (setq vf-nummer (vf-next-number)) - (princ (strcat "\n>>> Naechste VF-Nummer: VF" (itoa vf-nummer))) + (princ (ssg-textf "vfc-naechste-vf-nummer" (list (itoa vf-nummer)))) ;; 3. Gemeinsame Eingabe (deltaL, deltaH, richtung, startpunkt) - richtung ;; steht bei beiden Eingabemodi (Werteingabe UND 3D-Linie) bereits fest. @@ -1179,12 +1179,12 @@ eingabe-modus (nth 5 eingabe)) ;; 4. Seite-Auswahl (vor Berechnung, weil Etage-Typ sie fuer Geometrie braucht) - (princ "\n\nSeite waehlen:") - (princ "\n 1 - Rechts") - (princ "\n 2 - Links") - (setq antwort (getstring "\nIhre Wahl (1/2) [1]: ")) + (princ (ssg-text "vfc-seite-header")) + (princ (ssg-text "vfc-seite-rechts")) + (princ (ssg-text "vfc-seite-links")) + (setq antwort (getstring (ssg-text "prompt-wahl-1-2"))) (if (= antwort "2") (setq seite "links") (setq seite "rechts")) - (princ (strcat "\n>>> Seite: " seite)) + (princ (ssg-textf "vfc-seite-gewaehlt" (list seite))) ;; 5. Typ-spezifische Berechnung (init + Winkelsuche) (setq ergebnis (apply berechne-fn (list deltaL deltaH richtung seite))) @@ -1203,7 +1203,7 @@ (setq ergebnis-liste (append ergebnis-liste (list (list 0 (car horizontal-info) (cadr horizontal-info) T)))) - (princ "\n\n>>> Hinweis: Ein horizontale Variofoerderer ( 0°) ist bei diesem △L/△H zusaetzlich moeglich!") + (princ (ssg-textf "vfc-hinweis-horizontal-moeglich" (list (chr 176) (chr 916)))) ) (setq horizontal-info nil) ) @@ -1223,9 +1223,8 @@ ergebnis-liste))) (if (null gueltige-winkel) (progn - (alert (strcat "Kein passender Winkel gefunden!\n" - "△L=" (rtos deltaL 2 0) " mm, △H=" - (rtos deltaH 2 0) " mm, Richtung=" richtung)) + (alert (ssg-textf "vfc-alert-kein-winkel" + (list (chr 916) (rtos deltaL 2 0) (rtos deltaH 2 0) richtung))) (exit) ) ) @@ -1239,29 +1238,27 @@ (setq eintrag (assoc best-winkel ergebnis-liste)) (setq L_GF (nth 1 eintrag) L_VF (nth 2 eintrag)) (if (= best-winkel 0) - (princ "\n\n>>> Einzige gueltige Variante: Horizontale Variofoerderer") - (princ (strcat "\n\n>>> Einziger gueltiger Winkel: " - (itoa best-winkel) (chr 176))) + (princ (ssg-text "vfc-einzige-variante-horizontal")) + (princ (ssg-textf "vfc-einziger-winkel" (list (itoa best-winkel) (chr 176)))) ) ) (progn - (princ "\n\nMehrere gueltige Winkel verfuegbar. Bitte waehlen:") + (princ (ssg-text "vfc-mehrere-winkel-header")) (setq idx 1) (foreach w gueltige-winkel (setq eintrag (assoc w ergebnis-liste)) (if (= w 0) - (princ (strcat "\n " (itoa idx) " - Horizontale Variofoerderer (0" - (chr 176) ")" - " (L_GF=" (rtos (nth 1 eintrag) 2 1) - " mm, L_VF=" (rtos (nth 2 eintrag) 2 1) " mm)")) - (princ (strcat "\n " (itoa idx) " - " (itoa w) (chr 176) - " (L_GF=" (rtos (nth 1 eintrag) 2 1) - " mm, L_VF=" (rtos (nth 2 eintrag) 2 1) " mm)")) + (princ (ssg-textf "vfc-winkel-option-horizontal" + (list idx (chr 176) + (rtos (nth 1 eintrag) 2 1) (rtos (nth 2 eintrag) 2 1)))) + (princ (ssg-textf "vfc-winkel-option" + (list idx (itoa w) (chr 176) + (rtos (nth 1 eintrag) 2 1) (rtos (nth 2 eintrag) 2 1)))) ) (setq idx (1+ idx)) ) - (setq wahl (getint (strcat "Winkel waehlen (1-" - (itoa (length gueltige-winkel)) ") [1]: "))) + (setq wahl (getint (ssg-textf "vfc-prompt-winkel-waehlen" + (list (length gueltige-winkel))))) (if (or (null wahl) (< wahl 1) (> wahl (length gueltige-winkel))) (setq wahl 1)) (setq best-winkel (nth (1- wahl) gueltige-winkel)) @@ -1271,22 +1268,20 @@ ) (princ "\n\n=========================================") (if (= best-winkel 0) - (princ (strcat "\n>>> Horizontale Variofoerderer" - " L_GF: " (rtos L_GF 2 2) " mm" - " L_VF: " (rtos L_VF 2 2) " mm")) - (princ (strcat "\n>>> Winkel: " (itoa best-winkel) (chr 176) - " L_GF: " (rtos L_GF 2 2) " mm" - " L_VF: " (rtos L_VF 2 2) " mm")) + (princ (ssg-textf "vfc-zus-horizontal" + (list (rtos L_GF 2 2) (rtos L_VF 2 2)))) + (princ (ssg-textf "vfc-zus-winkel" + (list (itoa best-winkel) (chr 176) (rtos L_GF 2 2) (rtos L_VF 2 2)))) ) (princ "\n=========================================") ;; 9. L_GF Verteilung - (princ "\n\nVerteilung der Gefaellestrecken (vorne/hinten):") - (princ "\n 1 - Gleichmaessig (L_GF1 = L_GF2 = L_GF/2)") - (princ "\n 2 - Vorne Minimum, hinten Rest") - (princ "\n 3 - Hinten Minimum, vorne Rest") - (princ "\n 4 - Eigene Werte eingeben") - (setq verteilung-modus (getstring "\nIhre Wahl (1/2/3/4) [1]: ")) + (princ (ssg-text "vfc-gf-verteilung-header")) + (princ (ssg-text "vfc-gf-verteilung-1")) + (princ (ssg-text "vfc-gf-verteilung-2")) + (princ (ssg-text "vfc-gf-verteilung-3")) + (princ (ssg-text "vfc-gf-verteilung-4")) + (setq verteilung-modus (getstring (ssg-text "prompt-wahl-1-2-3-4"))) (if (= verteilung-modus "") (setq verteilung-modus "1")) (cond ((= verteilung-modus "1") @@ -1298,23 +1293,22 @@ (setq L_GF2 (float staustrecke-basis)) (setq L_GF1 (max 0.0 (- L_GF (float staustrecke-basis))))) ((= verteilung-modus "4") - (setq L_GF1 (getreal (strcat "\nL_GF1 vorne (mm) [" - (rtos (/ L_GF 2.0) 2 2) "]: "))) + (setq L_GF1 (getreal (ssg-textf "vfc-prompt-lgf1-vorne" + (list (rtos (/ L_GF 2.0) 2 2))))) (if (null L_GF1) (setq L_GF1 (/ L_GF 2.0))) (setq L_GF2 (max 0.0 (- L_GF L_GF1))) - (princ (strcat "\n L_GF2 hinten: " (rtos L_GF2 2 2) " mm"))) + (princ (ssg-textf "vfc-lgf2-hinten" (list (rtos L_GF2 2 2))))) (t (setq L_GF1 (/ L_GF 2.0) L_GF2 (/ L_GF 2.0))) ) - (princ (strcat "\n>>> L_GF1=" (rtos L_GF1 2 2) - " mm L_GF2=" (rtos L_GF2 2 2) " mm")) + (princ (ssg-textf "vfc-zus-lgf" (list (rtos L_GF1 2 2) (rtos L_GF2 2 2)))) ;; Scanner-Anzahl wird nicht mehr abgefragt (Attribut ANZAHL_SCANNER bleibt 0). (setq n-scanner 0) ;; 11. Bestaetigung - (princ "\n\nMoechten Sie die Foerderanlage einfuegen?") - (princ "\n 1 - Ja, Module einfuegen\n 2 - Nein, abbrechen") - (setq antwort (getstring "\nIhre Wahl (1/2): ")) + (princ (ssg-text "vfc-einfuegen-frage")) + (princ (ssg-text "vfc-einfuegen-optionen")) + (setq antwort (getstring (ssg-text "vfc-prompt-wahl-1-2-ohne-default"))) (if (= antwort "1") (progn @@ -1339,7 +1333,7 @@ (princ "\n=========================================") ) - (princ "\nVorgang abgebrochen.") + (princ (ssg-text "vfc-vorgang-abgebrochen")) ) nil ) diff --git a/lang/de_DE.json b/lang/de_DE.json index ada2317..e0363bb 100644 --- a/lang/de_DE.json +++ b/lang/de_DE.json @@ -245,6 +245,11 @@ "vfc-foerderrichtung-ab": "\n Foerderrichtung: AB", "vfc-foerderrichtung-auf": "Auf", "vfc-foerderrichtung-menu": "\nFoerderrichtung:\n 1 - AUF\n 2 - AB", + "vfc-gf-verteilung-header": "\n\nVerteilung der Gefaellestrecken (vorne/hinten):", + "vfc-gf-verteilung-1": "\n 1 - Gleichmaessig (L_GF1 = L_GF2 = L_GF/2)", + "vfc-gf-verteilung-2": "\n 2 - Vorne Minimum, hinten Rest", + "vfc-gf-verteilung-3": "\n 3 - Hinten Minimum, vorne Rest", + "vfc-gf-verteilung-4": "\n 4 - Eigene Werte eingeben", "vfc-kein-objekt-gewaehlt": "\n Kein Objekt gewaehlt.", "vfc-label-von-bis": ": von %1mm bis %2mm, ", "vfc-linie-polylinie-waehlen": "\n >> 3D-Linie oder Polylinie waehlen: ", @@ -258,6 +263,36 @@ "vfc-prompt-wahl-1-2-ohne-default": "\nIhre Wahl (1/2): ", "vfc-status-ok": " OK", "vfc-warnung-ks-nicht-gefunden": "\n WARNUNG: KS_EIN/KS_AUS nicht gefunden!", + "vfc-block-erstellt-eingefuegt": "\n>>> Block '%1' erstellt und eingefuegt.", + "vfc-fehler-keine-entities": "\n>>> FEHLER: Keine Entities fuer Block gefunden!", + "vfc-banner-titel": "\n VARIOFOERDERER GENERATOR v26.0", + "vfc-alert-keine-typen": "Keine Typen registriert!\nvf_standard.lsp und vf_etage.lsp pruefen.", + "vfc-typ-vorgewaehlt": "\n>>> Typ vorgewaehlt: %1", + "vfc-anlagen-typ-header": "\n\nAnlagen-Typ waehlen:", + "vfc-typ-option": "\n %1 - %2", + "vfc-prompt-wahl-1-n": "\nIhre Wahl (1-%1) [1]: ", + "vfc-typ-gewaehlt": "\n>>> Typ: %1", + "vfc-naechste-vf-nummer": "\n>>> Naechste VF-Nummer: VF%1", + "vfc-seite-header": "\n\nSeite waehlen:", + "vfc-seite-rechts": "\n 1 - Rechts", + "vfc-seite-links": "\n 2 - Links", + "vfc-seite-gewaehlt": "\n>>> Seite: %1", + "vfc-hinweis-horizontal-moeglich": "\n\n>>> Hinweis: Ein horizontale Variofoerderer ( 0%1) ist bei diesem %2L/%2H zusaetzlich moeglich!", + "vfc-alert-kein-winkel": "Kein passender Winkel gefunden!\n%1L=%2 mm, %1H=%3 mm, Richtung=%4", + "vfc-einzige-variante-horizontal": "\n\n>>> Einzige gueltige Variante: Horizontale Variofoerderer", + "vfc-einziger-winkel": "\n\n>>> Einziger gueltiger Winkel: %1%2", + "vfc-mehrere-winkel-header": "\n\nMehrere gueltige Winkel verfuegbar. Bitte waehlen:", + "vfc-winkel-option-horizontal": "\n %1 - Horizontale Variofoerderer (0%2) (L_GF=%3 mm, L_VF=%4 mm)", + "vfc-winkel-option": "\n %1 - %2%3 (L_GF=%4 mm, L_VF=%5 mm)", + "vfc-prompt-winkel-waehlen": "Winkel waehlen (1-%1) [1]: ", + "vfc-zus-horizontal": "\n>>> Horizontale Variofoerderer L_GF: %1 mm L_VF: %2 mm", + "vfc-zus-winkel": "\n>>> Winkel: %1%2 L_GF: %3 mm L_VF: %4 mm", + "vfc-prompt-lgf1-vorne": "\nL_GF1 vorne (mm) [%1]: ", + "vfc-lgf2-hinten": "\n L_GF2 hinten: %1 mm", + "vfc-zus-lgf": "\n>>> L_GF1=%1 mm L_GF2=%2 mm", + "vfc-einfuegen-frage": "\n\nMoechten Sie die Foerderanlage einfuegen?", + "vfc-einfuegen-optionen": "\n 1 - Ja, Module einfuegen\n 2 - Nein, abbrechen", + "vfc-vorgang-abgebrochen": "\nVorgang abgebrochen.", "vfe-alert-bib-nicht-init": "Etage-Bibliothek nicht initialisiert!", "vfe-berechnung-header": "\n ETAGE-BERECHNUNG FUER ALLE WINKEL", "vfe-bib-bereits-init": "\n Etage-Bibliothek bereits initialisiert.", @@ -401,6 +436,94 @@ "gf-seite-links": "\n 1 - Links", "gf-seite-rechts": "\n 2 - Rechts", "prompt-wahl-1-2": "\nIhre Wahl (1/2) [1]: ", + "prompt-wahl-1-2-3": "\nIhre Wahl (1/2/3) [1]: ", + "gf-lade-block": "\n Lade Block: %1 ...", + "gf-status-ok": " OK", + "gf-warnung-kette-unterbrochen": "\n WARNUNG: Kette unterbrochen!", + "gf-status-nennlaenge": "\n Gesamte Nennlaenge (inkl. Bogen-dx): %1 mm", + "gf-status-feste-hoehenanteile": "\n Feste Hoehenanteile (AS/ES-dz + Bogen-dz): %1 mm", + "gf-status-dz-detail": "\n aus-dz=%1 ein-dz=%2 Bogen-dz=%3", + "gf-status-resthoehe": "\n Effektive Resthoehe fuer Grade: %1 mm", + "gf-warnung-keine-geraden": "\n WARNUNG: keine geraden Strecken -> Fallback 3 Grad", + "gf-warnung-feste-anteile": "\n WARNUNG: feste Anteile > deltaH -> Fallback 1 Grad", + "gf-status-naeherungswinkel": "\n>>> Naeherungswinkel: %1%2", + "gf-status-linie-staustrecke": "\n\n%1/%2: Staustrecke L=%3 mm hz=%4%5 v=%6%7", + "gf-status-separator-vor-bogen": "\n\n%1S/%2: Separator 300mm (vor Bogen) hz=%3%4 v=%5%6", + "gf-status-bogen-einfuegen": "\n\n%1/%2: %3 hz=%4%5", + "gf-status-linienzug-eingefuegt": "\n>>> Linienzug-Gefaellestrecke eingefuegt! <<<", + "gf-modus3-header": "\n\n>>> MODUS 3: Linienzug auswaehlen <<<", + "gf-modus3-hinweis1": "\nBitte alle Linien (LINE) und Boegen (ARC) des Pfades auswaehlen,", + "gf-modus3-hinweis2": "\ndann ENTER druecken:", + "gf-fehler-keine-objekte": "\nKeine Objekte ausgewaehlt!", + "gf-status-objekte-ausgewaehlt": "\n %1 Objekte ausgewaehlt.", + "gf-prompt-startpunkt-kette": "\nStartpunkt (3D) waehlen - KS_EIN AUS-Element / Kettenanfang: ", + "gf-fehler-kein-startpunkt": "\nKein Startpunkt!", + "gf-prompt-endpunkt-kette": "\nEndpunkt (3D) waehlen - KS_AUS EIN-Element / Kettenende: ", + "gf-fehler-kein-endpunkt": "\nKein Endpunkt!", + "gf-status-deltah-3dpunkte": "\n %1H aus 3D-Punkten: %2 mm", + "gf-status-sortiere-segmente": "\n Sortiere Segmente ...", + "gf-alert-keine-kette": "Keine verbundene Kette gefunden!", + "gf-status-segmente-gefunden": " %1 Segmente gefunden.", + "gf-status-segment-analyse-header": "\n\n--- Segment-Analyse (Laengen nach Kuerzung) ---", + "gf-status-segment-linie": "\n %1. Linie L=%2 mm hz=%3%4", + "gf-status-segment-bogen": "\n %1. Bogen %2%3 %4 hz-Eingang=%5%6", + "gf-status-seg-erste-linie": "\n Seg %1 (1. Linie): -%2 mm (AUS-Element)", + "gf-status-linie-vor-bogen": "\n Jede Linie vor Bogen: -300 mm (Bogen-Separator)", + "gf-status-seg-letzte-linie": "\n Seg %1 (letzte Linie): -300 mm (EIN-Sep) -%2 mm (EIN-Element)", + "gf-status-eintrittsrichtung": "\n Eintrittsrichtung: %1%2", + "gf-status-austrittsrichtung": "\n Austrittsrichtung: %1%2", + "gf-status-berechne-winkel": "\n\n Berechne Gefaellewinkel aus Geometrie ...", + "gf-prompt-winkel-verwenden": "\nBerechneten Winkel %1%2 verwenden? (j/n) [j]: ", + "gf-prompt-gefaellewinkel": "\nGefaellewinkel (Grad): ", + "gf-status-messe-absenkung": "\n Messe tatsaechliche AS/ES-Absenkung (iterativ) ...", + "gf-warnung-korrektur-bereich": "\n WARNUNG: Korrektur ausserhalb Bereich, Winkel unveraendert", + "gf-status-as-es-mm": "\n AS: %1 mm ES: %2 mm", + "gf-status-korrigierter-winkel": "\n>>> Korrigierter Gefaellewinkel: %1%2 (nach %3 Iter.)", + "gf-status-zus-segmente": "\n>>> Segmente: %1", + "gf-status-zus-deltah": "\n>>> %1H: %2 mm", + "gf-status-zus-deltal": "\n>>> %1L: %2 mm", + "gf-status-zus-winkel": "\n>>> Gefaellewinkel: %1%2", + "gf-status-zus-eintrittswinkel": "\n>>> Eintrittswinkel: %1%2", + "gf-status-zus-austrittswinkel": "\n>>> Austrittswinkel: %1%2", + "gf-status-zus-aus-element": "\n>>> AUS-Element: %1", + "gf-status-zus-ein-element": "\n>>> EIN-Element: %1", + "gf-prompt-einfuegen": "\nEinfuegen? (1=Ja / 2=Nein) [1]: ", + "gf-status-aus-element-detail": "\n\n>>> AUS-Element: %1 Fahrtrichtung=%2%3 KS_EIN-hz=%4%5 Z=%6", + "gf-status-separator-vor-ein": "\n>>> Separator vor EIN-Element", + "gf-status-ein-element-detail": "\n>>> EIN-Element: %1 Ziel-Z=%2", + "gf-status-z-hoehe-ks-aus": "\n Z-Hoehe KS_AUS: %1 mm", + "gf-status-fertig": "\n>>> Fertig! <<<", + "gf-status-abgebrochen": "\nAbgebrochen.", + "gf-status-gf-block-erstellt": "\n>>> GF-Block erstellt: %1 (%2)", + "gf-status-schritt1-aus": "\n\n1/4: %1 Fahrtrichtung=%2%3 KS_EIN-hz=%4%5 v=%6%7", + "gf-status-schritt2-staustrecke": "\n\n2/4: Staustrecke L=%1 mm hz=%2%3 v=%4%5", + "gf-status-schritt3-separator": "\n\n3/4: Separator 300mm hz=%1%2 v=%3%4", + "gf-status-schritt4-ein": "\n\n4/4: %1", + "gf-status-erfolgreich-eingefuegt": "\n>>> Gefaellestrecke erfolgreich eingefuegt! <<<", + "gf-banner-titel": "\n GEFAELLESTRECKE GENERATOR v2.0", + "gf-banner-richtung": "\n Richtung: immer AB (nach unten)", + "gf-alert-init-fehler": "Fehler beim Initialisieren der Bibliothek!\nBitte DXFM_DATA pruefen.", + "gf-eingabemodus-header": "\n\nEingabemodus waehlen:", + "gf-eingabemodus-1": "\n 1 - Werte manuell eingeben (einfache Strecke)", + "gf-eingabemodus-2": "\n 2 - 3D-Linie auswaehlen (einfache Strecke)", + "gf-eingabemodus-3": "\n 3 - Linienzug (LINE + ARC) auswaehlen mit Gefaellebogen", + "gf-modus1-header": "\n\n>>> MODUS 1: Manuelle Werteingabe <<<", + "gf-prompt-startpunkt-aus": "\nStartpunkt fuer AUS-Element waehlen: ", + "gf-prompt-deltal-abstand": "\n%1L - Abstand (mm): ", + "gf-modus2-header": "\n\n>>> MODUS 2: 3D-Linie auswaehlen <<<", + "gf-status-bks-welt": "\n BKS auf Weltkoordinaten gesetzt.", + "gf-prompt-3dlinie-richtung": "\nBitte 3D-Linie fuer Richtung und Laenge auswaehlen:", + "gf-alert-keine-linie": "Keine gueltige Linie ausgewaehlt!", + "gf-status-fahrtrichtung-linie": "\n Fahrtrichtung: %1%2 (aus Linie)", + "gf-status-deltal-mm": "\n %1L = %2 mm", + "gf-prompt-gefaellewinkel-def3": "\n\nGefaellewinkel (Grad) [3]: ", + "gf-status-winkel": "\n>>> Winkel: %1%2", + "gf-status-fahrtrichtung": "\n>>> Fahrtrichtung: %1%2", + "gf-alert-staustrecke-ungueltig": "Berechnete Staustreckenlaenge ungueltig: %1 mm\nBitte groesseres deltaL oder kleineren Winkel waehlen.", + "gf-status-zus2-winkel": "\n>>> Winkel: %1%2", + "gf-status-zus2-aus-seite": "\n>>> AUS-Seite: %1", + "gf-status-zus2-ein-seite": "\n>>> EIN-Seite: %1", + "gf-status-zus2-lstau": "\n>>> L_stau: %1 mm", "ques-yn-default-yes": " Y/N : ", "ques-yn-default-no": " Y/N : " } diff --git a/lang/en_GB.json b/lang/en_GB.json index c95e545..71f9f44 100644 --- a/lang/en_GB.json +++ b/lang/en_GB.json @@ -245,6 +245,11 @@ "vfc-foerderrichtung-ab": "\n Conveying direction: DOWN", "vfc-foerderrichtung-auf": "Up", "vfc-foerderrichtung-menu": "\nConveying direction:\n 1 - UP\n 2 - DOWN", + "vfc-gf-verteilung-header": "\n\nDistribution of slope sections (front/rear):", + "vfc-gf-verteilung-1": "\n 1 - Even (L_GF1 = L_GF2 = L_GF/2)", + "vfc-gf-verteilung-2": "\n 2 - Front minimum, rear remainder", + "vfc-gf-verteilung-3": "\n 3 - Rear minimum, front remainder", + "vfc-gf-verteilung-4": "\n 4 - Enter custom values", "vfc-kein-objekt-gewaehlt": "\n No object selected.", "vfc-label-von-bis": ": from %1mm to %2mm, ", "vfc-linie-polylinie-waehlen": "\n >> Select 3D line or polyline: ", @@ -258,6 +263,36 @@ "vfc-prompt-wahl-1-2-ohne-default": "\nYour choice (1/2): ", "vfc-status-ok": " OK", "vfc-warnung-ks-nicht-gefunden": "\n WARNING: KS_EIN/KS_AUS not found!", + "vfc-block-erstellt-eingefuegt": "\n>>> Block '%1' created and inserted.", + "vfc-fehler-keine-entities": "\n>>> ERROR: No entities found for block!", + "vfc-banner-titel": "\n VARIOFOERDERER GENERATOR v26.0", + "vfc-alert-keine-typen": "No types registered!\nCheck vf_standard.lsp and vf_etage.lsp.", + "vfc-typ-vorgewaehlt": "\n>>> Type preselected: %1", + "vfc-anlagen-typ-header": "\n\nSelect system type:", + "vfc-typ-option": "\n %1 - %2", + "vfc-prompt-wahl-1-n": "\nYour choice (1-%1) [1]: ", + "vfc-typ-gewaehlt": "\n>>> Type: %1", + "vfc-naechste-vf-nummer": "\n>>> Next VF number: VF%1", + "vfc-seite-header": "\n\nSelect side:", + "vfc-seite-rechts": "\n 1 - Right", + "vfc-seite-links": "\n 2 - Left", + "vfc-seite-gewaehlt": "\n>>> Side: %1", + "vfc-hinweis-horizontal-moeglich": "\n\n>>> Note: a horizontal VarioFoerderer ( 0%1) is additionally possible for this %2L/%2H!", + "vfc-alert-kein-winkel": "No suitable angle found!\n%1L=%2 mm, %1H=%3 mm, direction=%4", + "vfc-einzige-variante-horizontal": "\n\n>>> Only valid variant: horizontal VarioFoerderer", + "vfc-einziger-winkel": "\n\n>>> Only valid angle: %1%2", + "vfc-mehrere-winkel-header": "\n\nSeveral valid angles available. Please choose:", + "vfc-winkel-option-horizontal": "\n %1 - Horizontal VarioFoerderer (0%2) (L_GF=%3 mm, L_VF=%4 mm)", + "vfc-winkel-option": "\n %1 - %2%3 (L_GF=%4 mm, L_VF=%5 mm)", + "vfc-prompt-winkel-waehlen": "Select angle (1-%1) [1]: ", + "vfc-zus-horizontal": "\n>>> Horizontal VarioFoerderer L_GF: %1 mm L_VF: %2 mm", + "vfc-zus-winkel": "\n>>> Angle: %1%2 L_GF: %3 mm L_VF: %4 mm", + "vfc-prompt-lgf1-vorne": "\nL_GF1 front (mm) [%1]: ", + "vfc-lgf2-hinten": "\n L_GF2 rear: %1 mm", + "vfc-zus-lgf": "\n>>> L_GF1=%1 mm L_GF2=%2 mm", + "vfc-einfuegen-frage": "\n\nDo you want to insert the conveyor system?", + "vfc-einfuegen-optionen": "\n 1 - Yes, insert modules\n 2 - No, cancel", + "vfc-vorgang-abgebrochen": "\nProcess cancelled.", "vfe-alert-bib-nicht-init": "Etage library not initialised!", "vfe-berechnung-header": "\n ETAGE CALCULATION FOR ALL ANGLES", "vfe-bib-bereits-init": "\n Etage library already initialised.", @@ -401,6 +436,94 @@ "gf-seite-links": "\n 1 - Left", "gf-seite-rechts": "\n 2 - Right", "prompt-wahl-1-2": "\nYour choice (1/2) [1]: ", + "prompt-wahl-1-2-3": "\nYour choice (1/2/3) [1]: ", + "gf-lade-block": "\n Loading block: %1 ...", + "gf-status-ok": " OK", + "gf-warnung-kette-unterbrochen": "\n WARNING: chain interrupted!", + "gf-status-nennlaenge": "\n Total nominal length (incl. arc dx): %1 mm", + "gf-status-feste-hoehenanteile": "\n Fixed height components (AS/ES dz + arc dz): %1 mm", + "gf-status-dz-detail": "\n aus-dz=%1 ein-dz=%2 arc-dz=%3", + "gf-status-resthoehe": "\n Effective remaining height for straights: %1 mm", + "gf-warnung-keine-geraden": "\n WARNING: no straight sections -> fallback 3 deg", + "gf-warnung-feste-anteile": "\n WARNING: fixed components > deltaH -> fallback 1 deg", + "gf-status-naeherungswinkel": "\n>>> Approximate angle: %1%2", + "gf-status-linie-staustrecke": "\n\n%1/%2: Buffer section L=%3 mm hz=%4%5 v=%6%7", + "gf-status-separator-vor-bogen": "\n\n%1S/%2: Separator 300mm (before arc) hz=%3%4 v=%5%6", + "gf-status-bogen-einfuegen": "\n\n%1/%2: %3 hz=%4%5", + "gf-status-linienzug-eingefuegt": "\n>>> Polyline slope section inserted! <<<", + "gf-modus3-header": "\n\n>>> MODE 3: Select polyline <<<", + "gf-modus3-hinweis1": "\nPlease select all lines (LINE) and arcs (ARC) of the path,", + "gf-modus3-hinweis2": "\nthen press ENTER:", + "gf-fehler-keine-objekte": "\nNo objects selected!", + "gf-status-objekte-ausgewaehlt": "\n %1 objects selected.", + "gf-prompt-startpunkt-kette": "\nSelect start point (3D) - KS_EIN output element / chain start: ", + "gf-fehler-kein-startpunkt": "\nNo start point!", + "gf-prompt-endpunkt-kette": "\nSelect end point (3D) - KS_AUS input element / chain end: ", + "gf-fehler-kein-endpunkt": "\nNo end point!", + "gf-status-deltah-3dpunkte": "\n %1H from 3D points: %2 mm", + "gf-status-sortiere-segmente": "\n Sorting segments ...", + "gf-alert-keine-kette": "No connected chain found!", + "gf-status-segmente-gefunden": " %1 segments found.", + "gf-status-segment-analyse-header": "\n\n--- Segment analysis (lengths after trimming) ---", + "gf-status-segment-linie": "\n %1. Line L=%2 mm hz=%3%4", + "gf-status-segment-bogen": "\n %1. Arc %2%3 %4 hz-input=%5%6", + "gf-status-seg-erste-linie": "\n Seg %1 (1st line): -%2 mm (output element)", + "gf-status-linie-vor-bogen": "\n Each line before arc: -300 mm (arc separator)", + "gf-status-seg-letzte-linie": "\n Seg %1 (last line): -300 mm (input sep) -%2 mm (input element)", + "gf-status-eintrittsrichtung": "\n Entry direction: %1%2", + "gf-status-austrittsrichtung": "\n Exit direction: %1%2", + "gf-status-berechne-winkel": "\n\n Calculating slope angle from geometry ...", + "gf-prompt-winkel-verwenden": "\nUse calculated angle %1%2? (y/n) [y]: ", + "gf-prompt-gefaellewinkel": "\nSlope angle (degrees): ", + "gf-status-messe-absenkung": "\n Measuring actual AS/ES drop (iterative) ...", + "gf-warnung-korrektur-bereich": "\n WARNING: correction out of range, angle unchanged", + "gf-status-as-es-mm": "\n AS: %1 mm ES: %2 mm", + "gf-status-korrigierter-winkel": "\n>>> Corrected slope angle: %1%2 (after %3 iter.)", + "gf-status-zus-segmente": "\n>>> Segments: %1", + "gf-status-zus-deltah": "\n>>> %1H: %2 mm", + "gf-status-zus-deltal": "\n>>> %1L: %2 mm", + "gf-status-zus-winkel": "\n>>> Slope angle: %1%2", + "gf-status-zus-eintrittswinkel": "\n>>> Entry angle: %1%2", + "gf-status-zus-austrittswinkel": "\n>>> Exit angle: %1%2", + "gf-status-zus-aus-element": "\n>>> Output element: %1", + "gf-status-zus-ein-element": "\n>>> Input element: %1", + "gf-prompt-einfuegen": "\nInsert? (1=Yes / 2=No) [1]: ", + "gf-status-aus-element-detail": "\n\n>>> Output element: %1 travel dir=%2%3 KS_EIN-hz=%4%5 Z=%6", + "gf-status-separator-vor-ein": "\n>>> Separator before input element", + "gf-status-ein-element-detail": "\n>>> Input element: %1 target Z=%2", + "gf-status-z-hoehe-ks-aus": "\n Z height KS_AUS: %1 mm", + "gf-status-fertig": "\n>>> Done! <<<", + "gf-status-abgebrochen": "\nCancelled.", + "gf-status-gf-block-erstellt": "\n>>> GF block created: %1 (%2)", + "gf-status-schritt1-aus": "\n\n1/4: %1 travel dir=%2%3 KS_EIN-hz=%4%5 v=%6%7", + "gf-status-schritt2-staustrecke": "\n\n2/4: Buffer section L=%1 mm hz=%2%3 v=%4%5", + "gf-status-schritt3-separator": "\n\n3/4: Separator 300mm hz=%1%2 v=%3%4", + "gf-status-schritt4-ein": "\n\n4/4: %1", + "gf-status-erfolgreich-eingefuegt": "\n>>> Slope section inserted successfully! <<<", + "gf-banner-titel": "\n SLOPE SECTION GENERATOR v2.0", + "gf-banner-richtung": "\n Direction: always DOWN", + "gf-alert-init-fehler": "Error initialising the library!\nPlease check DXFM_DATA.", + "gf-eingabemodus-header": "\n\nSelect input mode:", + "gf-eingabemodus-1": "\n 1 - Enter values manually (simple section)", + "gf-eingabemodus-2": "\n 2 - Select 3D line (simple section)", + "gf-eingabemodus-3": "\n 3 - Select polyline (LINE + ARC) with slope arc", + "gf-modus1-header": "\n\n>>> MODE 1: Manual value entry <<<", + "gf-prompt-startpunkt-aus": "\nSelect start point for output element: ", + "gf-prompt-deltal-abstand": "\n%1L - distance (mm): ", + "gf-modus2-header": "\n\n>>> MODE 2: Select 3D line <<<", + "gf-status-bks-welt": "\n UCS set to world coordinates.", + "gf-prompt-3dlinie-richtung": "\nPlease select 3D line for direction and length:", + "gf-alert-keine-linie": "No valid line selected!", + "gf-status-fahrtrichtung-linie": "\n Travel direction: %1%2 (from line)", + "gf-status-deltal-mm": "\n %1L = %2 mm", + "gf-prompt-gefaellewinkel-def3": "\n\nSlope angle (degrees) [3]: ", + "gf-status-winkel": "\n>>> Angle: %1%2", + "gf-status-fahrtrichtung": "\n>>> Travel direction: %1%2", + "gf-alert-staustrecke-ungueltig": "Calculated buffer section length invalid: %1 mm\nPlease choose larger deltaL or smaller angle.", + "gf-status-zus2-winkel": "\n>>> Angle: %1%2", + "gf-status-zus2-aus-seite": "\n>>> Output side: %1", + "gf-status-zus2-ein-seite": "\n>>> Input side: %1", + "gf-status-zus2-lstau": "\n>>> L_stau: %1 mm", "ques-yn-default-yes": " Y/N : ", "ques-yn-default-no": " Y/N : " }