From e91608d7cc4462ae6311201cfdb89e585d2ad0f5 Mon Sep 17 00:00:00 2001 From: Samer Ayadi Date: Wed, 19 Aug 2026 15:09:10 +0200 Subject: [PATCH] Add Connections to SSG_LIB, reusing the TRO mechanisms A connection is a CONNECTION_ARROW block sitting at the midpoint of an arrow between two TRO markers. It stores the relationship as attributes rather than by position: TRO11 ----------> TRO14 UID 0062 UID 0065 Same architecture as the TRO feature, nothing new introduced: Blockname CONNECTION_* -> c:CONNECTION_EDIT (Lisp/Connection_Edit.lsp) -> dcl/connection_edit.dcl The double-click and EATTEDIT hooks already route every INSERT through SSG_BLOCKEDIT, so this is one more branch in that dispatcher - placed before the TRO branch since both come from the same annotation run and the patterns must not overlap. DCL path from DXFM_DCL, ssg-start/ssg-end, ssg-attrib-read and ssg-attrib-set-on, all text via ssg-text/ssg-textf with 16 new keys in both language files. Loading is lazy: not preloaded in the MNL, pulled by the menu macros and the dispatcher with (ssg-ensure "Connection_Edit"), with a fallback to native EATTEDIT if the module is missing. CONNECTION_INSERT picks two TRO markers and draws the connection; the new internal number comes from ssg-id-max/ssg-id-format, so it stays inside the SSG_LIB number space. It refuses when the block definition is absent - the shape comes from tro_annotate.py, this command does not invent one. Menu: SSG_LIB > Connections with Verbindung einfuegen, Verbindung bearbeiten and Bearbeiten (Auto), plus an entry in the POP501 edit context menu. On the internal id: the markers keep their visible ID (TRO11) untouched - the existing TRO_INSERT/tro-naechste-id read it and the request was explicit about not changing it. The permanent unique number therefore lives in a separate attribute UID, in the same four-digit space as ssg_id and the CSV TeileId. Putting it into ID was tried and reverted: IDSCHECK treats ID as numeric and would have overwritten TRO11 with a number while correcting duplicates. Connections reference the UIDs, so the relationship survives a renamed or moved marker. Co-Authored-By: Claude Opus 5 (1M context) --- Lisp/Connection_Edit.lsp | 254 +++++++ Lisp/SSG_LIB_Commands.lsp | 17 + Lisp/Tro_Edit.lsp | 8 +- Lisp/ssg_load.lsp | 1 + dcl/connection_edit.dcl | 59 ++ lang/de_DE.json | 1356 +++++++++++++++++++------------------ lang/en_GB.json | 1356 +++++++++++++++++++------------------ menu/SSG_LIB.mnu | 5 + 8 files changed, 1713 insertions(+), 1343 deletions(-) create mode 100644 Lisp/Connection_Edit.lsp create mode 100644 dcl/connection_edit.dcl diff --git a/Lisp/Connection_Edit.lsp b/Lisp/Connection_Edit.lsp new file mode 100644 index 0000000..8c4d4dc --- /dev/null +++ b/Lisp/Connection_Edit.lsp @@ -0,0 +1,254 @@ +;; ============================================================ +;; CONNECTION_EDIT.LSP - Verbindungen zwischen TROs +;; +;; Eine Verbindung ist ein Block CONNECTION_ARROW in der Mitte eines Pfeils +;; zwischen zwei TRO-Markern. Sie haelt die Beziehung ueber die *internen* IDs +;; der beiden TROs fest, nicht ueber die Lage im Plan: +;; +;; TRO11 ----------> TRO14 +;; ID 0062 ID 0065 +;; +;; Attribute des Verbindungsblocks: +;; ID unsichtbar - eindeutige interne Nummer (ID-Raum von SSG_LIB) +;; FROM_ID unsichtbar - interne ID der Quelle +;; TO_ID unsichtbar - interne ID des Ziels +;; FROM_TRO sichtbar - sprechender Name der Quelle +;; TO_TRO sichtbar - sprechender Name des Ziels +;; KIND unsichtbar - flow | colocated +;; +;; Warum interne IDs: der sprechende Name darf sich aendern (TRO_EDIT), die +;; interne ID nicht. Ein DXF-Export kann die Beziehung damit eindeutig +;; rekonstruieren, auch wenn Marker verschoben oder umbenannt wurden. +;; +;; Befehle: +;; CONNECTION_INSERT - zwei TRO-Marker waehlen, Verbindung einzeichnen +;; CONNECTION_EDIT - Quelle/Ziel einer bestehenden Verbindung aendern +;; +;; Aufruf: +;; - Doppelklick auf die Verbindung -> ***DOUBLECLICK [INSERT] -> SSG_BLOCKEDIT +;; - EATTEDIT -> c:EATTEDIT -> SSG_BLOCKEDIT +;; - Menue SSG_LIB > Connections +;; Der Dispatcher SSG_BLOCKEDIT leitet Blocknamen "CONNECTION_*" hierher. +;; +;; Setzt ssg_core.lsp (ssg-start/ssg-end, ssg-attrib-*), ssg_lang.lsp und +;; ssg_id.lsp (ssg-id-max, ssg-id-format) voraus. +;; ============================================================ + +(setq *connection-block* "CONNECTION_ARROW") + + +;; ------------------------------------------------------------ +;; Attribut eines Blocks lesen ("" wenn nicht vorhanden) +;; ------------------------------------------------------------ +(defun con-attrib (ent tag / wert) + (setq wert (cdr (assoc tag (ssg-attrib-read ent)))) + (if wert wert "") +) + + +;; ------------------------------------------------------------ +;; Einen TRO-Marker waehlen; liefert (ename interne-ID sprechender-Name) +;; oder nil bei Abbruch bzw. falschem Block. +;; ------------------------------------------------------------ +(defun con-pick-tro (prompt-key / sel ent bname) + (setq sel (entsel (ssg-text prompt-key))) + (if (null sel) + nil + (progn + (setq ent (car sel) + bname (cdr (assoc 2 (entget ent)))) + (if (not (wcmatch bname "TRO_*")) + (progn (alert (ssg-textf "con-kein-tro" (list bname))) nil) + (list ent (con-attrib ent "ID") (con-attrib ent "TRO_ID")) + ) + ) + ) +) + + +;; ------------------------------------------------------------ +;; C:CONNECTION_INSERT - Verbindung zwischen zwei TRO-Markern einzeichnen +;; +;; Zeichnet Schaft und Spitze auf den Fluss-Layer und setzt den +;; Verbindungsblock in die Mitte, ausgerichtet entlang des Pfeils. +;; ------------------------------------------------------------ +(defun c:CONNECTION_INSERT ( / von nach p1 p2 dx dy laenge winkel mitte + kopf ent-neu neue-id layer-name) + (ssg-start "CONNECTION_INSERT" '(("OSMODE") ("ATTREQ") ("ATTDIA") ("CLAYER"))) + (setvar "OSMODE" 0) + + (if (not (tblsearch "BLOCK" *connection-block*)) + (progn + (alert (ssg-textf "con-block-fehlt" (list *connection-block*))) + (ssg-end) + (exit) + ) + ) + + (setq von (con-pick-tro "con-quelle-waehlen")) + (if (null von) (progn (ssg-end) (exit))) + (setq nach (con-pick-tro "con-ziel-waehlen")) + (if (null nach) (progn (ssg-end) (exit))) + + (if (= (car von) (car nach)) + (progn (alert (ssg-text "con-gleicher-block")) (ssg-end) (exit)) + ) + + (setq p1 (cdr (assoc 10 (entget (car von)))) + p2 (cdr (assoc 10 (entget (car nach))))) + (setq dx (- (car p2) (car p1)) + dy (- (cadr p2) (cadr p1)) + laenge (distance p1 p2)) + (if (<= laenge 1e-6) + (progn (alert (ssg-text "con-gleicher-punkt")) (ssg-end) (exit)) + ) + (setq winkel (atan dy dx) + mitte (list (/ (+ (car p1) (car p2)) 2.0) + (/ (+ (cadr p1) (cadr p2)) 2.0) + 0.0)) + + ;; Layer wie die uebrigen Verbindungen der Beschriftung + (setq layer-name "TRO_FLOW") + (ssg-make-layer layer-name "5" T) + + ;; Schaft + (entmake (list (cons 0 "LWPOLYLINE") + (cons 100 "AcDbEntity") + (cons 8 layer-name) + (cons 100 "AcDbPolyline") + (cons 90 2) + (cons 70 0) + (cons 10 (list (car p1) (cadr p1))) + (cons 10 (list (car p2) (cadr p2))))) + + ;; Verbindungsblock in die Mitte, entlang des Pfeils gedreht + (setvar "ATTREQ" 0) + (setvar "ATTDIA" 0) + (command "_.-INSERT" *connection-block* mitte "" "" (angtos winkel 0 8)) + (setq ent-neu (entlast)) + + ;; Eindeutige interne ID im ID-Raum von SSG_LIB + (setq neue-id (ssg-id-format (1+ (ssg-id-max)))) + (ssg-attrib-set-on ent-neu + (list (cons "ID" neue-id) + (cons "FROM_ID" (cadr von)) + (cons "TO_ID" (cadr nach)) + (cons "FROM_TRO" (caddr von)) + (cons "TO_TRO" (caddr nach)) + (cons "KIND" "flow"))) + (entupd ent-neu) + + (princ (ssg-textf "con-eingefuegt" + (list (caddr von) (caddr nach) neue-id))) + (ssg-end) + (princ) +) + + +;; ------------------------------------------------------------ +;; C:CONNECTION_EDIT - Quelle/Ziel einer Verbindung aendern +;; ------------------------------------------------------------ +(defun c:CONNECTION_EDIT ( / ss ent ed bname + alt-from-id alt-to-id alt-from alt-to alt-kind + neu-from-id neu-to-id neu-from neu-to + dcl-pfad dat ergebnis) + + ;; Implied Selection VOR ssg-start pruefen (ssg-start hebt Selektion auf) + (setq ss (ssget "I")) + (if (and ss (= (sslength ss) 1) + (= (cdr (assoc 0 (entget (ssname ss 0)))) "INSERT")) + (setq ent (ssname ss 0)) + ) + + (ssg-start "CONNECTION_EDIT" nil) + + (if (null ent) + (progn + (princ (ssg-text "cmd-block-auswaehlen")) + (setq ss (ssget ":S" '((0 . "INSERT")))) + (if ss (setq ent (ssname ss 0))) + ) + ) + (if (null ent) + (progn (princ (ssg-text "cmd-kein-block-ausgewaehlt")) (ssg-end) (exit)) + ) + + (setq ed (entget ent) + bname (cdr (assoc 2 ed))) + (if (not (wcmatch bname "CONNECTION_*")) + (progn + (alert (ssg-textf "con-keine-verbindung" (list bname))) + (ssg-end) + (exit) + ) + ) + + (setq alt-from-id (con-attrib ent "FROM_ID") + alt-to-id (con-attrib ent "TO_ID") + alt-from (con-attrib ent "FROM_TRO") + alt-to (con-attrib ent "TO_TRO") + alt-kind (con-attrib ent "KIND")) + + (setq dcl-pfad (strcat (getenv "DXFM_DCL") "/connection_edit.dcl")) + (setq dat (load_dialog dcl-pfad)) + (if (not (new_dialog "connection_edit" dat)) + (progn + (alert (ssg-textf "con-dialog-fehlt" (list dcl-pfad))) + (ssg-end) + (exit) + ) + ) + + (set_tile "blockname" (ssg-textf "con-block" (list bname (con-attrib ent "ID")))) + (set_tile "from_id" alt-from-id) + (set_tile "from_tro" alt-from) + (set_tile "to_id" alt-to-id) + (set_tile "to_tro" alt-to) + (set_tile "richtung" (ssg-textf "con-richtung" (list alt-from alt-to))) + (set_tile "hinweis" (ssg-text "con-hinweis")) + + (setq neu-from-id alt-from-id neu-to-id alt-to-id + neu-from alt-from neu-to alt-to) + + (action_tile "from_id" "(setq neu-from-id (get_tile \"from_id\"))") + (action_tile "to_id" "(setq neu-to-id (get_tile \"to_id\"))") + (action_tile "from_tro" "(setq neu-from (get_tile \"from_tro\"))") + (action_tile "to_tro" "(setq neu-to (get_tile \"to_tro\"))") + (action_tile "accept" + (strcat "(setq neu-from-id (get_tile \"from_id\")" + " neu-to-id (get_tile \"to_id\")" + " neu-from (get_tile \"from_tro\")" + " neu-to (get_tile \"to_tro\"))" + "(done_dialog 1)")) + (action_tile "cancel" "(done_dialog 0)") + + (setq ergebnis (start_dialog)) + (unload_dialog dat) + + (if (= ergebnis 1) + (if (or (= (vl-string-trim " " neu-from-id) "") + (= (vl-string-trim " " neu-to-id) "")) + (alert (ssg-text "con-id-leer")) + (if (= neu-from-id neu-to-id) + (alert (ssg-text "con-gleiche-id")) + (progn + (ssg-attrib-set-on ent + (list (cons "FROM_ID" neu-from-id) + (cons "TO_ID" neu-to-id) + (cons "FROM_TRO" neu-from) + (cons "TO_TRO" neu-to) + (cons "KIND" (if (= alt-kind "") "flow" alt-kind)))) + (entupd ent) + (princ (ssg-textf "con-gespeichert" (list neu-from neu-to))) + ) + ) + ) + ) + + (ssg-end) + (princ) +) + + +(prompt "\nConnection_Edit.lsp geladen - Befehle: CONNECTION_INSERT, CONNECTION_EDIT") +(princ) diff --git a/Lisp/SSG_LIB_Commands.lsp b/Lisp/SSG_LIB_Commands.lsp index 6cf0941..ce89910 100644 --- a/Lisp/SSG_LIB_Commands.lsp +++ b/Lisp/SSG_LIB_Commands.lsp @@ -439,6 +439,23 @@ (c:VARIOFOERDERER_EDIT) ) + ;; Verbindungen (CONNECTION_*) -> CONNECTION_EDIT (DCL-Dialog) + ;; Vor der TRO-Pruefung, da beide aus der Beschriftung von sps_skel stammen + ;; und sich die Namensmuster nicht ueberschneiden duerfen. + ((wcmatch bname "CONNECTION_*") + (princ (ssg-textf "cmd-connection-bearbeiten" (list bname))) + (if (and (null *ssg-Connection_Edit-loaded*) (atoms-family 1 '("SSG-ENSURE"))) + (ssg-ensure "Connection_Edit") + ) + (if (atoms-family 1 '("C:CONNECTION_EDIT")) + (c:CONNECTION_EDIT) + (progn + (princ (ssg-textf "tro-edit-modul-fehlt" (list "Connection_Edit.lsp"))) + (command "_.EATTEDIT") + ) + ) + ) + ;; TRO-Marker (TRO_SYM_) -> TRO_EDIT (DCL-Dialog) ;; Die Marker kommen aus sps_skel (lib/tro_annotate.py) und tragen die ;; Attribute ID und TYPE. Modul bei Bedarf nachladen, damit der Doppelklick diff --git a/Lisp/Tro_Edit.lsp b/Lisp/Tro_Edit.lsp index 83cf9c2..b60294c 100644 --- a/Lisp/Tro_Edit.lsp +++ b/Lisp/Tro_Edit.lsp @@ -245,7 +245,7 @@ ;; C:TRO_EDIT - Dialog fuer einen TRO-Marker ;; ------------------------------------------------------------ (defun c:TRO_EDIT ( / ss ent ed bname attribs - alt-id alt-type alt-fb + alt-id alt-type alt-fb int-id neu-id neu-type liste idx dcl-pfad dat ergebnis) @@ -284,7 +284,8 @@ (setq attribs (ssg-attrib-read ent) alt-id (cdr (assoc "ID" attribs)) alt-type (cdr (assoc "TYPE" attribs)) - alt-fb (cdr (assoc "FB_BLOCK" attribs))) + alt-fb (cdr (assoc "FB_BLOCK" attribs)) + int-id (cdr (assoc "UID" attribs))) (if (null alt-id) (progn @@ -310,7 +311,8 @@ idx (tro-index alt-type liste)) (set_tile "blockname" (ssg-textf "tro-edit-block" (list bname))) - (set_tile "fb" (ssg-textf "tro-edit-fb" (list (if alt-fb alt-fb "-")))) + (set_tile "fb" (ssg-textf "tro-edit-fb" + (list (if alt-fb alt-fb "-") (if int-id int-id "-")))) (set_tile "hinweis" (ssg-text "tro-edit-hinweis")) (set_tile "id" alt-id) (start_list "type") diff --git a/Lisp/ssg_load.lsp b/Lisp/ssg_load.lsp index e268f2b..44377f4 100644 --- a/Lisp/ssg_load.lsp +++ b/Lisp/ssg_load.lsp @@ -35,6 +35,7 @@ (load (strcat base-path "tests.lsp") "tests.lsp nicht gefunden") (load (strcat base-path "OmniModulInsert.lsp") "OmniModulInsert.lsp nicht gefunden") (load (strcat base-path "Tro_Edit.lsp") "Tro_Edit.lsp nicht gefunden") + (load (strcat base-path "Connection_Edit.lsp") "Connection_Edit.lsp nicht gefunden") (load (strcat base-path "SSG_LIB_Commands.lsp") "SSG_LIB_Commands.lsp nicht gefunden") (prompt "\nSSG-Bibliotheken geladen: ssg_core, ssg_lang, ssg_dbg, ssg_dialog, ssg_layer, KreiselInsert, VarioFoerderer, Gefaellestrecke, export, tests, OmniModulInsert, SSG_LIB_Commands") (princ) diff --git a/dcl/connection_edit.dcl b/dcl/connection_edit.dcl new file mode 100644 index 0000000..18a4c90 --- /dev/null +++ b/dcl/connection_edit.dcl @@ -0,0 +1,59 @@ +// ============================================================ +// connection_edit.dcl - Verbindung zwischen zwei TROs bearbeiten +// Aendert Quelle und Ziel eines CONNECTION_*-Blocks. Gearbeitet wird +// mit den internen IDs; die sprechenden Namen stehen daneben. +// Aufruf ueber c:CONNECTION_EDIT (Lisp/Connection_Edit.lsp). +// ============================================================ + +connection_edit : dialog { + label = "Verbindung bearbeiten"; + + : column { + + : text { + key = "blockname"; + label = ""; + } + + : boxed_column { + label = "Quelle"; + : edit_box { + key = "from_id"; + label = "Interne ID:"; + edit_width = 12; + } + : edit_box { + key = "from_tro"; + label = "TRO-Kennung:"; + edit_width = 24; + } + } + + : boxed_column { + label = "Ziel"; + : edit_box { + key = "to_id"; + label = "Interne ID:"; + edit_width = 12; + } + : edit_box { + key = "to_tro"; + label = "TRO-Kennung:"; + edit_width = 24; + } + } + + : text { + key = "richtung"; + label = ""; + } + + : text { + key = "hinweis"; + label = ""; + } + + } + + ok_cancel; +} diff --git a/lang/de_DE.json b/lang/de_DE.json index 28f2537..da75fdd 100644 --- a/lang/de_DE.json +++ b/lang/de_DE.json @@ -1,672 +1,688 @@ { - "texts": { - "omni-alle-winkel": "alle Winkel", - "omni-grad": " Grad", - "omni-bogen-keine-gefunden": "Keine Boegen fuer %1%2 gefunden.", - "omni-weiche-keine-gefunden": "Keine Weichen fuer %1%2 gefunden.", - "vfc-ursprung": "Ursprung", - "vfc-block-eingefuegt-xyzref-ksaus": "\n '%1' eingefuegt (XY:%2 Z:%3)\n KS_AUS: X=%4 Y=%5 Z=%6", - "vfl-ja": "\n 1 - Ja", - "vfl-nein": "\n 2 - Nein", - "vfl-sep-vor-frage": "\n\nZusaetzlichen Separator VOR dem horizontalen Stueck?", - "vfl-sep-nach-frage": "\n\nZusaetzlichen Separator NACH dem horizontalen Stueck?", - "vfl-sep-an-stelle-frage": "\n\nZusaetzlichen Separator an dieser Stelle einfuegen?", - "vf-winkel-aus-header": "\n\nAUS-Element (AS_Element) - Winkel waehlen:", - "vf-winkel-ein-header": "\n\nEIN-Element (ES_Element) - Winkel waehlen:", - "vf-winkel-90": "\n 1 - 90 Grad", - "vf-winkel-30": "\n 2 - 30 Grad", - "vfl-gf-bogen-winkel-header": "\n\nGF-Bogen - Winkel waehlen:", - "vfl-gf-bogen-seite-header": "\nGF-Bogen - Seite waehlen:", - "vfl-winkel-30": "\n 1 - 30 Grad", - "vfl-winkel-60": "\n 2 - 60 Grad", - "vfl-winkel-90": "\n 3 - 90 Grad", - "vfl-variokurve-winkel-header": "\n\nVario-Kurve - Winkel waehlen:", - "vfl-opt1-90grad": "\n 1 - 90 Grad", - "vfl-opt2-60grad": "\n 2 - 60 Grad", - "vfl-opt3-30grad": "\n 3 - 30 Grad", - "vfl-prompt-wahl-1-3-def1": "\nIhre Wahl (1/2/3) [1]: ", - "vfl-variokurve-seite-header": "\nVario-Kurve - Seite waehlen:", - "vfl-variokurve-variante-header": "\nVario-Kurve - Variante waehlen:", - "vfl-variante-aussen": "\n 1 - Aussen", - "vfl-variante-innen": "\n 2 - Innen", - "vfl-ist-ziel-vergleich-header": "\n\n>>> IST-ZIEL-VERGLEICH (ES-Element):", - "vfl-soll-xyz": "\n Soll: X=%1 Y=%2 Z=%3", - "vfl-ist-xyz": "\n Ist : X=%1 Y=%2 Z=%3", - "vfl-abweichung-xyz": "\n Abweichung: dX=%1 dY=%2 dZ=%3 mm", - "vfl-m3-titel": "\n VF-LINIENZUG - Modus 2: Pfad + Ziel-Hoehe (fertig; Anker + Solver + Bau)", - "vfl-m3-alert-gf-modul": "Gefaellestrecke-Modul nicht geladen!", - "vfl-m3-pfad-waehlen": "\n\nPfad-Objekte waehlen (Linien/Boegen):", - "vfl-m3-keine-objekte": "\nKeine Objekte gewaehlt - Abbruch.", - "vfl-m3-prompt-startpunkt": "\n\nStartpunkt der Kette (hoehere Seite) waehlen: ", - "vfl-prompt-hoehe-startpunkt": "\nHoehe (Z) des Startpunkts [%1]: ", - "vfl-m3-prompt-endpunkt": "\n\nEndpunkt der Kette (Ziel) waehlen: ", - "vfl-m3-prompt-zielhoehe": "\nZiel-Hoehe (Z) des Endpunkts [%1]: ", - "vfl-m3-fehler-nicht-sortierbar": "\nFEHLER: Pfad nicht sortierbar (haengt er lueckenlos zusammen?).", - "vfl-m3-alert-eckwinkel": "Kein passender Bogen: Eck-Winkel %1 Grad ist nicht ~30/60/90.\nBitte die Winkel anpassen.", - "vfl-m3-seg-gerade": "\n\nSegment %1/%2: Gerade L=%3 mm hz=%4", - "vfl-m3-auto-vf": "\n (automatisch VF - Segment folgt direkt auf eine Vario-Kurve)", - "vfl-m3-typ-gerade": "\n Typ? 1 = GF (Eingabe-Winkel) 2 = VF (Bruecke)", - "vfl-m3-prompt-gf-neigung": "\n GF-Neigung in Grad [3]: ", - "vfl-m3-hinweis-gf-max": "\n Hinweis: GF max. 3 Grad - auf 3 begrenzt.", - "vfl-m3-seg-bogen": "\n\nSegment %1/%2: Eck/Bogen %3 Grad %4", - "vfl-m3-typ-bogen": "\n Typ? 1 = GF-Bogen 2 = Vario-Kurve", - "vfl-m3-variante-frage": "\n Vario-Kurve - Variante? 1 = Aussen 2 = Innen", - "vfl-m3-vf-laeufe": "\n\n[M3a] Gefundene VF-Laeufe: %1", - "vfl-m3-vf-lauf-noetig": "\n[M3a] Genau EIN VF-Lauf noetig (GF...VF...GF; Vario-Kurven duerfen im Lauf liegen).", - "vfl-m3-vf-lauf-m3b": "\n[M3a] Mehrere/keine VF-Laeufe -> M3b spaeter.", - "vfl-m3-vf-lauf-ohne-gerade": "\n[M3a] VF-Lauf ohne VF-Gerade - Abbruch.", - "vfl-m3-anker-vorschau-header": "\n M3a ANKER-VORSCHAU (grob geschaetzt; exakte Werte beim Bau)", - "vfl-m3-start-hoehe": "\n Start-Hoehe Z: %1 mm", - "vfl-m3-ziel-hoehe": "\n Ziel-Hoehe Z: %1 mm", - "vfl-m3-delta-h-gesamt": "\n delta-H gesamt: %1 mm (positiv = Abfall)", - "vfl-m3-vf-lauf-segmente": "\n VF-Lauf: Segment %1..%2", - "vfl-m3-front-anker-vorschau": "\n Front-Anker Z: %1 mm (vorwaerts von AS)", - "vfl-m3-junction-anker-vorschau": "\n Junction-Anker Z: %1 mm (rueckwaerts von ES)", - "vfl-m3-richtung-auf": "Auf (steigt)", - "vfl-m3-richtung-ab": "Ab (faellt)", - "vfl-m3-richtung-horizontal": "horizontal", - "vfl-m3-richtung-auf-kurz": "Auf", - "vfl-m3-richtung-ab-kurz": "Ab", - "vfl-m3-bruecke-dh": "\n --> Bruecke: delta-H = %1 mm ueber Spannweite %2 mm", - "vfl-m3-bruecke-richtung": "\n Richtung: VF-%1", - "vfl-m3-vf-angetrieben": "\n (VF ist angetrieben - kann STEIGEN und FALLEN; Vorzeichen = nur Auf/Ab)", - "vfl-m3-mittlere-neigung": "\n grobe mittlere Neigung ueber Spannweite: ~%1 Grad", - "vfl-m3-warnung-zu-steil": "\n WARNUNG: ~Neigung > 51 Grad -> zu steil fuer Vario (Magnitude infeasibel).", - "vfl-m3-vario-bereich-ok": "\n -> innerhalb Vario-Bereich (3..51 Grad), grobe Orientierung.", - "vfl-m3-anker-hinweis": "\n (Anker oben = grobe Vorschau; exakte Werte werden beim Bau GEMESSEN)", - "vfl-m3-phase-b1": "\n\n>>> Phase B1: Front-Lauf (AS + GF) bauen ...", - "vfl-m3-alert-beginnt-bogen": "Kette beginnt mit einem Bogen - bitte erst eine Gerade.", - "vfl-m3-kurve-front-uebersprungen": "\n >>> [M3a] Vario-Kurve im Front-Lauf - uebersprungen.", - "vfl-m3-standard-vario-header": "\n\n --- STANDARD-VARIO (Kletter-Segment) + flache Zone ---", - "vfl-m3-front-anker-gemessen": "\n Front-Anker (gemessen): %1 mm", - "vfl-m3-junction-exakt": "\n Junction (exakt): %1 mm", - "vfl-m3-kletter-info": "\n Kletterhoehe %1 mm | Kletterer %2 | Kurven %3 | kurze VF %4", - "vfl-m3-kein-winkel": "\n KEIN passender Vario-Winkel -> infeasibel (Front bereits gebaut).", - "vfl-m3-gf-verteilung": "\n\n GF-Verteilung: 1 - alles am Einlauf (GF1) 2 - 1/2 GF1 + 1/2 GF2", - "vfl-m3-vert-halb": "1/2 GF1 + 1/2 GF2", - "vfl-m3-vert-ganz": "alles GF1", - "vfl-m3-vario-ergebnis": "\n -> Vario %1 (%2), L_VF %3 mm, GF gesamt %4 mm, Verteilung %5 (GF2-Rest = Mess-Feinkorrektur)", - "vfl-m3-warnung-gf2-negativ": "\n WARNUNG: Koerper klettert zu wenig - GF2<0 (fehlen %1 mm). Winkel zu flach; dZ nicht exakt.", - "vfl-m3-gf2-ausgleich": "\n GF2 (gemessener Ausgleich): L=%1 mm", - "vfl-m3-kurve-back-uebersprungen": "\n >>> [M3a] Vario-Kurve im Back-Lauf - uebersprungen.", - "vfl-m3-nichts-gebaut": "\nNichts gebaut - Abbruch.", - "vfl-m3-fertig-header": "\n>>> VF-Linienzug (Modus 2) gebaut! <<<", - "vfl-m3-ziel-soll": "\n Ziel (Soll): X=%1 Y=%2 Z=%3", - "vfl-m3-es-ist": "\n ES (Ist): X=%1 Y=%2 Z=%3", - "vfl-m3-abweichung": "\n Abweichung: dX=%1 dY=%2 dZ=%3 mm", - "vfl-m3-laengs-quer": "\n Laengs KS_AUS-Achse: %1 mm | Quer zur Achse (soll ~0): %2 mm", - "vfl-m3-achse-hinweis": "\n (dZ=Ziel-Hoehe; Quer zur KS_AUS-Achse ~0 => Endpunkt liegt auf der Achse)", - "gf-fehler-block-fehlt": "\n FEHLER: Block '%1' fehlt", - "gf-fehler-block-fehlt-ausruf": "\n FEHLER: Block '%1' fehlt!", - "gf-fehler-blockdatei-fehlt": "\n FEHLER: Block-Datei nicht gefunden: %1", - "gf-fehler-keine-linie": "\n Fehler: keine Linie!", - "gf-laenge-null-uebersprungen": "\n (Laenge 0 - uebersprungen)", - "gf-prompt-linie-waehlen": "\n >> Linie waehlen: ", - "gf-status-3dlinie-z": "\n 3D-Linie: Z_start=%1 Z_end=%2", - "gf-status-block-l-z": "\n %1 L=%2 -> Z=%3", - "gf-status-bogen-masse": "\n %1: dx=%2 dz=%3", - "gf-status-gefaellebogen": "\n Gefaellebogen %1 hz=%2%3 -> Z=%4", - "gf-status-hzincl": "\n HzIncl %1 L=%2 hz=%3%4 v=%5%6 -> Z=%7", - "gf-status-hzks": "\n HzKS %1 hz=%2%3 v=%4%5 -> Z=%6", - "gf-status-ks-aus-z": "\n KS_AUS Z=%1", - "gf-warnung-block-fehlt-nullwerte": "\n WARNUNG: %1 fehlt - Nullwerte", - "gf-warnung-ks-fehlt": "\n WARNUNG: KS_EIN/KS_AUS fehlt!", - "gf-warnung-ks-fehlt-in": "\n WARNUNG: KS fehlt in '%1'", - "gf-warnung-ks-fehlt-in2": "\n WARNUNG: KS fehlt in %1", - "kreisel-abstand-ausgabe": "\n-> Abstand: %1 mm", - "kreisel-beschriftung-erzeugt": "\n-> Beschriftung: %1 (Höhe=%2mm, Arial, zentriert)", - "kreisel-bestehende-blockdef": "\n-> Verwende bestehende Blockdefinition: %1", - "kreisel-connect-zusammenfassung": "\n-> Abstand: %1 mm Rotation: %2 Grad Hoehe: %3 Kreiselart: %4", - "kreisel-eckrad-eingefuegt": "\n-> Eckrad #%1 eingefuegt: %2 bei %3,%4 Rotation=%5 Hoehe=%6", - "kreisel-edit-aktualisiert": "\nKreisel aktualisiert: Name=%1 Abstand=%2 Hoehe=%3 Rotation=%4", - "kreisel-edit-bestehend": "\n-> Bestehend: Abstand=%1 Drehung=%2 Art=%3", - "kreisel-edit-dialog-fehlt": "Dialog nicht verfuegbar: %1", - "kreisel-eingefuegt": "\n-> Kreisel #%1 eingefügt: %2 (Höhe=%3)", - "kreisel-emsg-distanz-klein": "Distanz zu klein! (%1 < %2)", - "kreisel-hoehe-aus-3dpunkt": "\n-> Hoehe aus 3D-Punkt uebernommen: %1", - "kreisel-hoehe-aus-basispunkt": "\n-> Höhe aus Basispunkt übernommen: %1", - "kreisel-hoehe-aus-startpunkt": "\n-> Hoehe aus Startpunkt uebernommen: %1", - "kreisel-hoehe-von-bestehendem": "\n-> Höhe von bestehendem Kreisel übernommen: %1", - "kreisel-insert-zusammenfassung": "\n-> Rotation: %1 Höhe: %2 Kreiselart: %3", - "kreisel-labelsetup-fertig": "\nNeue Einstellungen: Höhe=%1, Farbe=%2, Y-Versatz=%3, Schriftart=Arial", - "kreisel-neue-beschriftungsposition": "\nNeue Beschriftungsposition: X=%1 Y=%2", - "kreisel-neue-blockdef": "\n-> Neue Blockdefinition: %1", - "kreisel-neue-texthoehe": "\nNeue Texthöhe: %1", - "kreisel-params-default-hoehe": "\nDefault-Höhe: %1", - "kreisel-params-default-laenge": "\nDefault-Laenge: %1", - "kreisel-params-durchmesser": "\nDurchmesser: %1", - "kreisel-params-typ": "\nKreiselart: %1", - "kreisel-prompt-abstand": "\nAbstand (Tangentenlaenge) <%1>: ", - "kreisel-prompt-abstand-oben": "\nAbstand über Kreisel-Mitte <%1>: ", - "kreisel-prompt-hoehe-z": "\nHoehe (Z-Koordinate) <%1>: ", - "kreisel-prompt-neue-hoehe": "\nNeue Höhe <%1>: ", - "kreisel-prompt-neuer-abstand": "\nNeuer Abstand <%1>: ", - "kreisel-prompt-schriftfarbe": "\nSchriftfarbe (1=Rot,2=Gelb,3=Grün,4=Cyan,5=Blau,6=Magenta,7=Weiß) <%1>: ", - "kreisel-prompt-schrifthoehe": "\nSchrifthöhe <%1>: ", - "kreisel-prompt-texthoehe": "\nTexthöhe <%1>: ", - "kreisel-prompt-x-abstand": "\nX-Abstand von AN8-Mitte <%1>: ", - "kreisel-prompt-y-abstand": "\nY-Abstand von AN8-Mitte <%1>: ", - "kreisel-redraw-bestehend": "\n-> Bestehend: Abstand=%1 Drehung=%2 Hoehe=%3 Art=%4", - "kreisel-redraw-fertig": "\nKreisel neu gezeichnet. Abstand=%1", - "kreisel-script-distanz-klein": "\n[Connect] Distanz zu klein: %1", - "kreisel-textstil-erstellt": "\n-> Textstil '%1' mit Arial erstellt", - "kreisel-typ-prompt": "\nBitte waehlen <%1>: ", - "omni-bogen-info-antriebsart": "\n Antriebsart: %1", - "omni-bogen-info-breite": "\n Breite: %1", - "omni-bogen-info-kurvenwinkel": "\n KurvenWinkel: %1", - "omni-bogen-info-laenge": "\n Laenge: %1", - "omni-bogen-info-profiltyp": "\n ProfilTyp: %1", - "omni-bogen-info-radius": "\n Radius: %1", - "omni-bogen-nicht-gefunden": "\nKein Bogen mit SivasId '%1' gefunden.", - "omni-dxf-eingefuegt": "\n[OMNI] %1 eingefuegt. Hoehe=%2 Drehung=%3%4", - "omni-edit-aktualisiert": "\n[OMNI] Element aktualisiert: %1 Hoehe=%2 Drehung=%3", - "omni-edit-dxf-nicht-gefunden": "DXF nicht gefunden: %1", - "omni-einfuegen-info": "\n[OMNI] Einfuegen: %1 (%2)", - "omni-fehler-dxf-nicht-gefunden": "\n[OMNI] FEHLER: DXF nicht gefunden: %1", - "omni-insert-block-eingefuegt": "\n[OMNI] %1 eingefuegt. Laenge=%2 mm", - "omni-laenge-ueberschritten": "Die gewuenschte Fahrstreckenlaenge von %1 mm ueberschreitet die Maximallaenge von %2 mm des Fahrstreckenprofils.\nBitte neu definieren!", - "omni-weiche-info-breite": "\n Breite: %1", - "omni-weiche-info-kurvenrichtung": "\n KurvenRichtung: %1", - "omni-weiche-info-kurvenwinkel": "\n KurvenWinkel: %1", - "omni-weiche-info-laenge": "\n Laenge: %1", - "omni-weiche-info-profiltyp": "\n ProfilTyp: %1", - "omni-weiche-info-schaltungstyp": "\n Schaltungstyp: %1", - "omni-weiche-info-weichentyp": "\n WeichenTyp: %1", - "omni-weiche-info-wklaenge": "\n WK-Laenge: %1", - "omni-weiche-nicht-gefunden": "\nKeine Weiche mit SivasId '%1' gefunden.", - "vfc-3dlinie-start-ende": "\n 3D-Linie:\n Start: X=%1 Y=%2 Z=%3\n Ende: X=%4 Y=%5 Z=%6", - "vfc-3dpolylinie-start-ende": "\n 3D-Polylinie:\n Start Z=%1 Ende Z=%2", - "vfc-block-einfuegepunkt": "\n Block-Einfuegepunkt: X=%1 Y=%2 Z=%3", - "vfc-block-eingefuegt-ksaus": "\n '%1' eingefuegt\n KS_AUS: X=%2 Y=%3 Z=%4", - "vfc-delta-l-h-richtung": "\n %1L=%2 mm %1H=%3 mm Fahrtrichtung=%4%5", - "vfc-endpunkt-xyz": "\n Endpunkt: X=%1 Y=%2 Z=%3", - "vfc-endpunkt-xyz-dxdz": "\n Endpunkt: X=%1 Y=%2 Z=%3 (dx=%4 dz=%5)", - "vfc-fahrtrichtung-ergebnis": "\n>>> Fahrtrichtung: %1%2", - "vfc-fehler-block-datei-fehlt": "\n FEHLER: Block-Datei nicht gefunden: %1", - "vfc-fehler-block-nicht-in-bibliothek": "\n FEHLER: Block '%1' nicht in Bibliothek", - "vfc-fehler-block-nicht-in-bibliothek-abgebrochen": "\n FEHLER: Block '%1' nicht in Bibliothek - abgebrochen", - "vfc-fehler-ks-fehlen": "\n FEHLER: KS_EIN/KS_AUS fehlen in '%1'", - "vfc-fehler-ungueltiger-einfuegepunkt": "\n FEHLER: Ungueltiger Einfuegepunkt fuer '%1'", - "vfc-fuege-block-ein-hz": "\n Fuege Block '%1' ein... (hz=%2%3)", - "vfc-fuege-block-ein-rotation-hz": "\n Fuege Block '%1' ein (Rotation %2%3 hz=%4%5)", - "vfc-fuege-ein-lwhz": "\n Fuege '%1' ein (L=%2 mm, W=%3%4 hz=%5%6)", - "vfc-ks-aus-xyz": "\n KS_AUS: X=%1 Y=%2 Z=%3", - "vfc-lade-block": "\n Lade Block: %1 ...", - "vfc-laenge-uebersprungen": "\n Laenge=%1 mm -> uebersprungen", - "vfc-punkt-auf-objekt": "\n Punkt auf Objekt: Z=%1 mm", - "vfe-as30-mass": "\n AS_30_rechts: dx=%1 mm, dz=%2 mm", - "vfe-block-fehlt-abbruch": "\n FEHLER: Block '%1' nicht in Bibliothek - abgebrochen", - "vfe-bogen-nicht-vorhanden": "\n %1 -> Bogen nicht vorhanden", - "vfe-delta-info": "\n△L=%1 mm △H=%2 mm Richtung=%3", - "vfe-empfohlener-winkel": "\n>>> Empfohlener Winkel: %1", - "vfe-es30-mass": "\n ES_30_rechts: dx=%1 mm, dz=%2 mm", - "vfe-extrahiere-block-mass": "\n Extrahiere %1 Masse...", - "vfe-gefaellebogen-links-mass": "\n Gefaellebogen links: dx=%1 dz=%2 mm", - "vfe-gefaellebogen-rechts-mass": "\n Gefaellebogen rechts: dx=%1 dz=%2 mm", - "vfe-gefaellebogen-seite-dx": "\n Gefaellebogen %1: dx=%2 mm", - "vfe-hz-incl-status": "\n HzIncl %1 L=%2 hz=%3 v=%4 -> Z=%5", - "vfe-hz-rot-status": "\n HzRot %1 hz=%2 v=%3 -> Z=%4", - "vfe-hz-rotks-status": "\n HzRotKS %1 hz=%2 -> Z=%3", - "vfe-hz-scaleks-status": "\n HzScaleKS %1 %2mm hz=%3 -> Z=%4", - "vfe-ks-fehlt-startpunkt": "\n WARNUNG: KS fehlt in '%1' - verwende Startpunkt", - "vfe-step1-as30": "\n\n1/15: %1 (0 Grad)", - "vfe-step2": "\n\n2/15: Staustrecke 400mm (%1 Grad hz, 3 Grad vert, KS_EIN)", - "vfe-step3": "\n\n3/15: Separator (300mm, %1 Grad hz, 3 Grad vert)", - "vfe-step4": "\n\n4/15: %1 (Anfang, %2 Grad hz, 0 Grad vert, KS_EIN)", - "vfe-step5-strecke": "\n\n5/15: Gefaellestrecke (3 Grad, L=%1 mm)", - "vfe-step7": "\n\n7/15: %1 (3 Grad geneigt)", - "vfe-step8-ab": "\n\n8/15: Gefaellestrecke (%1 Grad, L=%2 mm)", - "vfe-step8-auf": "\n\n8/15: Steigungsstrecke (%1 Grad, L=%2 mm)", - "vfe-tabelle-zeile": "\n %1 %2 mm %3 mm ", - "vfe-tabelle-zeile-fehler": "\n %1 --- --- FEHLER", - "vfl-20m-hinweis": "\n >>> HINWEIS: Foerderer laenger als 20 m (%1 m) - Motorstation empfohlen!", - "vfl-block-erstellt": "\n>>> Block '%1' (%2) erstellt und eingefuegt.", - "vfl-fehler-rest-nicht-baubar": "\n FEHLER: Rest nicht baubar (zu steil/zu kurz fuer Schwanz Motor+GF2+Separator+ES). Bitte weiter zeichnen oder flacher planen.", - "vfl-fuege-block-ein": "\n Fuege %1 ein ...", - "vfl-hinweis-gf2-minimum": "\n HINWEIS: berechnetes GF2=%1 mm < Minimum %2 mm -> auf Minimum angehoben (ES endet dadurch etwas weiter; siehe Ist-Ziel-Report).", - "vfl-horizontale-zwischenstrecke": "\n\nHorizontale Zwischenstrecke (0 Grad, L=%1 mm)", - "vfl-kettenende-modus-ziel": "\n>>> Kettenende-Modus: Ziel dL=%1 mm, dH=%2 mm (%3). GF2 variiert mit dem Winkel.", - "vfl-prompt-hoehe-endpunkt": "\nHoehe (Z) des Endpunkts [%1]: ", - "vfl-prompt-hoehe-kettenende": "\nHoehe (Z) des Kettenendes (ES-Element) [%1]: ", - "vfl-prompt-wahl-bis-n": "\nIhre Wahl (1-%1) [1]: ", - "vfl-segment-gf-nicht-erlaubt": "\n Segment waere GF (zu steil) oder nicht baubar - innerhalb einer VF-Einheit nicht erlaubt.\n Bitte flacher/steigend zeichnen oder Foerderer beenden.", - "vfl-winkel-option": "\n %1 - %2 Grad (L_GF=%3 mm L_VF=%4 mm)", - "vfs-as90-mass": "\n AS_90: dx=%1 dz=%2", - "vfs-berechnung-parameter": "\n△L=%1 mm △H=%2 mm Richtung=%3", - "vfs-block-fehlende-item": "\n - %1", - "vfs-block-fehler-pfad": "\n FEHLER: DXFM_BLOCKS = %1", - "vfs-bogen-ab-block-fehlt": "\n FEHLER ab_%1: Block nicht geladen!", - "vfs-bogen-ab-ks-fehlt": "\n FEHLER ab_%1: KS fehlt!", - "vfs-bogen-ab-ok": "\n OK ab_%1: dx=%2 dz=%3", - "vfs-bogen-auf-block-fehlt": "\n FEHLER auf_%1: Block nicht geladen!", - "vfs-bogen-auf-ks-fehlt": "\n FEHLER auf_%1: KS fehlt!", - "vfs-bogen-auf-ok": "\n OK auf_%1: dx=%2 dz=%3", - "vfs-empfohlener-winkel": "\n>>> Empfohlener Winkel: %1%2", - "vfs-es90-mass": "\n ES_90: dx=%1 dz=%2", - "vfs-fehler-winkel-tabelle": "\n FEHLER: Winkel %1 nicht in Bogen-Tabelle!", - "vfs-schritt-as": "\n\n1/11: %1 (hz=%2%3)", - "vfs-schritt5-bogen1": "\n\n5/11: %1 (3 Grad geneigt)", - "vfs-tabelle-zeile": "\n %1%2 %3 mm %4 mm ", - "vfs-tabelle-zeile-fehler": "\n %1%2 --- --- FEHLER", - "vfs-vf-eingang-gf1": "\n\n[VF-Eingang] Gefaellestrecke GF1 (3 Grad, L=%1 mm)", - "kreisel-abbruch-befehl": "\nBefehl abgebrochen.", - "kreisel-abgebrochen": "\nAbgebrochen.", - "kreisel-connect-erfolgreich": "\nKreisel Connect erfolgreich!", - "kreisel-connect-header": "\n--- Kreisel durch Linie definieren (AN -> SP) ---", - "kreisel-eckrad-beruehrpunkt": "\nBeruehrpunkt Eckrad (Tangente): ", - "kreisel-eckrad-fehler-identisch": "\nFehler: Beruehr- und Richtungspunkt sind identisch!", - "kreisel-eckrad-richtung": "\nRichtung zum Kreismittelpunkt: ", - "kreisel-emsg-kein-block": "Kein Block ausgewaehlt!", - "kreisel-emsg-kein-kreisel-block": "Kein Kreisel-Block! (Attribut ABSTAND fehlt)", - "kreisel-fehler-keine-entities": "\nFehler: Keine Entities zum Block erstellen!", - "kreisel-insert-fertig": "\nKreisel Modul eingefuegt.", - "kreisel-params-attribute-header": "\nAttribute im Block:", - "kreisel-params-header": "\n=== Kreisel Parameter ===", - "kreisel-prompt-basispunkt": "\nBasispunkt (AN-Seite): ", - "kreisel-prompt-block-auswaehlen": "\nKreisel-Block auswaehlen: ", - "kreisel-prompt-endpunkt": "\nEndpunkt (SP-Seite aussen): ", - "kreisel-prompt-rotation": "\nRotation in Grad <0>: ", - "kreisel-prompt-startpunkt": "\nStartpunkt (AN-Seite aussen): ", - "kreisel-quick-fertig": "\nSchnell Einfuegen fertig.", - "kreisel-start-connect": "Kreisel Smart Connect", - "kreisel-start-eckrad": "Eckrad einfuegen", - "kreisel-start-edit": "Kreisel bearbeiten", - "kreisel-start-insert": "Kreisel Modul einfuegen", - "kreisel-start-quick": "Kreisel Schnell Einfuegen", - "kreisel-start-redraw": "Kreisel Neu Zeichnen", - "kreisel-start-script-connect": "Kreisel Script Connect", - "kreisel-start-script-insert": "Kreisel Script Insert", - "kreisel-typ-opt-pin": "\n[2] PIN", - "kreisel-typ-opt-standard": "\n[1] STANDARD (ohne PIN)", - "kreisel-warn-blockpfad": "\n[KreiselInsert] WARNUNG: Block-Pfad nicht ermittelbar!", - "kreisel-warn-core-fehlt": "\n[KreiselInsert] WARNUNG: ssg_core.lsp nicht gefunden - Standardwerte.", - "omni-abbruch": "\nAbgebrochen.", - "omni-abbruch-bogen": "\n[BOGEN] Abgebrochen.", - "omni-abbruch-omni": "\n[OMNI] Abgebrochen.", - "omni-abbruch-weiche": "\n[WEICHE] Abgebrochen.", - "omni-bogen-dialog-ladefehler": "Bogen-Dialog konnte nicht geladen werden.", - "omni-edit-kein-block": "Kein Block ausgewaehlt!", - "omni-edit-kein-element": "Kein Omniflo-Element erkannt! (ARTINR/Blockname nicht im Katalog)", - "omni-edit-prompt-auswahl": "\nOmniflo-Element auswaehlen: ", - "omni-fehler-dxfm-data": "\n[OMNI] FEHLER: DXFM_DATA nicht gesetzt!", - "omni-fehler-dxfm-omniflo": "\n[OMNI] FEHLER: DXFM_OMNIFLO nicht gesetzt!", - "omni-info-bogen-prompt": "\nSivasId des Bogens eingeben: ", - "omni-info-weiche-prompt": "\nSivasId der Weiche eingeben: ", - "omni-insert-keine-attribute": "\n[OMNI] Keine Attribute im Quell-Block gefunden.", - "omni-prompt-drehwinkel": "\nDrehwinkel angeben: ", - "omni-prompt-einfuegepunkt": "\nEinfuegepunkt waehlen: ", - "omni-prompt-endpunkt-fahrstrecke": "\nEndpunkt der Fahrstrecke waehlen: ", - "omni-weiche-dialog-ladefehler": "Weichen-Dialog konnte nicht geladen werden.", - "prompt-wahl-1-2-3-4": "\nIhre Wahl (1/2/3/4) [1]: ", - "vfc-alert-keine-gueltige-linie": "Keine gueltige Linie ausgewaehlt!", - "vfc-bitte-3dlinie-foerderstrecke": "\nBitte 3D-Linie fuer die Foerderstrecke auswaehlen:", - "vfc-bks-weltkoordinaten": "\n BKS auf Weltkoordinaten gesetzt.", - "vfc-eingabemodus-3dlinie": "\n 1 - 3D-Linie auswaehlen (Start- und Endpunkt mit Hoehe)", - "vfc-eingabemodus-header": "\n\nEingabemodus waehlen:", - "vfc-eingabemodus-werte": "\n 2 - Werte manuell eingeben", - "vfc-fahrtrichtung-0": "\n 1 - 0%1 (X-Achse +, Ost)", - "vfc-fahrtrichtung-180": "\n 3 - 180%1 (X-Achse -, West)", - "vfc-fahrtrichtung-270": "\n 4 - 270%1 (Y-Achse -, Sued)", - "vfc-fahrtrichtung-90": "\n 2 - 90%1 (Y-Achse +, Nord)", - "vfc-fahrtrichtung-header": "\n\nFahrtrichtung waehlen:", - "vfc-fehler-keine-linie": "\n FEHLER: Keine Linie oder Polylinie ausgewaehlt!", - "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: ", - "vfc-modus-3dlinie-fallback": "Linie", - "vfc-modus-3dlinie-header": "\n\n>>> MODUS: 3D-Linie auswaehlen <<<", - "vfc-modus-werteingabe-header": "\n\n>>> MODUS: Manuelle Werteingabe <<<", - "vfc-objekt-block-waehlen": "\n >> Objekt (Block) waehlen: ", - "vfc-prompt-delta-h": "\n%1H - Hoehenunterschied (mm): ", - "vfc-prompt-delta-l": "\n%1L - Horizontale Distanz (mm): ", - "vfc-prompt-startpunkt-aus": "\nStartpunkt fuer AUS_Element waehlen: ", - "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.", - "vfs-dlg-richtung-auf": "Auf", - "vfs-dlg-richtung-ab": "Ab", - "vfs-dlg-winkel-horizontal": "Horizontal (GF=%1 mm, VF=%2 mm)", - "vfs-dlg-winkel-option": "%1%2 (GF=%3 mm, VF=%4 mm)", - "vfs-dlg-verteilung-1": "Gleichmaessig (L_GF1 = L_GF2 = L_GF/2)", - "vfs-dlg-verteilung-2": "Vorne Minimum, hinten Rest", - "vfs-dlg-verteilung-3": "Hinten Minimum, vorne Rest", - "vfs-dlg-verteilung-4": "Eigene Werte eingeben", - "vfs-edit-kein-vf": "Block %1 ist keine VarioFoerderer-Strecke.", - "vfs-edit-keine-xdata": "VarioFoerderer %1 wurde nicht mit diesem Dialog erstellt (Etage/Linienzug/Altbestand) und kann hier nicht bearbeitet werden.", - "vfs-edit-neu-aufgebaut": "\nVarioFoerderer %1 neu aufgebaut.", - "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.", - "vfe-bib-init-erfolg": "\n Etage-Bibliothek erfolgreich initialisiert.", - "vfe-bib-initialisiere": "\n Initialisiere Etage-Bibliothek...", - "vfe-ergebnistabelle-header": "\n ERGEBNISTABELLE (L_GF = gesamt beider GF-Strecken)", - "vfe-extrahiere-as30": "\n Extrahiere AS_30_rechts Masse...", - "vfe-extrahiere-es30": "\n Extrahiere ES_30_rechts Masse...", - "vfe-kein-winkel-gefunden": "\n>>> KEIN passender Winkel gefunden!", - "vfe-status-gueltig": "GUELTIG", - "vfe-status-ungueltig": "UNGUELTIG (negative Laenge)", - "vfe-step5-skip": "\n\n5/15: L_GF1 (uebersprungen)", - "vfe-step6": "\n\n6/15: Umlenkstation (500mm, 3 Grad geneigt)", - "vfe-step8-skip": "\n\n8/15: L_VF (uebersprungen)", - "vfe-tabelle-spalten": "\n Winkel L_GF (mm) L_VF (mm) Status", - "vfe-warn-block-as30-fehlt": "\n WARNUNG: Block AS_Element_30_rechts fehlt - Standardwerte", - "vfe-warn-block-es30-fehlt": "\n WARNUNG: Block ES_Element_30_rechts fehlt - Standardwerte", - "vfe-warn-block-fehlt-links": "\n WARNUNG: Block fehlt - Standardwerte (links)", - "vfe-warn-block-fehlt-rechts": "\n WARNUNG: Block fehlt - Standardwerte (rechts)", - "vfe-warn-kein-ks-links": "\n WARNUNG: kein KS - Standardwerte (links)", - "vfe-warn-kein-ks-rechts": "\n WARNUNG: kein KS - Standardwerte (rechts)", - "vfe-warn-ks-fehlt-standard": "\n WARNUNG: KS fehlt - Standardwerte", - "vfe-warn-lisp-pfad": "\n[vf_etage] WARNUNG: Lisp-Pfad nicht ermittelbar - vf_core.lsp nicht ladbar!", - "vfl-abgebrochen-kein-ziel": "\n Abgebrochen - kein Zielpunkt gewaehlt.", - "vfl-bogen-ab3-uebergang": "\n\nVario_Bogen_ab_3 (Uebergang horizontal -> 3 Grad)", - "vfl-bogen-auf3-uebergang": "\n\nVario_Bogen_auf_3 (Uebergang 3 Grad -> horizontal)", - "vfl-gf-verteilung-ganz-einlauf": "\n 2 - Gesamte Staustrecke am Einlauf (GF1), kein GF2", - "vfl-gf-verteilung-haelfte": "\n 1 - 1/2GF am Ausgang (GF2), 1/2GF am Einlauf (GF1)", - "vfl-gf-verteilung-header": "\n\nStaustrecke (GF) - Verteilung waehlen:", - "vfl-ist-endpunkt-frage": "\n\nIst der Endpunkt der Foerderer?", - "vfl-ist-kettenende-frage": "\n\nIst das das Kettenende (ES-Element)?", - "vfl-ja-motorstation-kettenende": "\n 3 - Ja (Motorstation setzen, Kettenende definieren)", - "vfl-ja-nur-motorstation": "\n 1 - Ja (nur Motorstation setzen)", - "vfl-ja-separator-es": "\n 1 - Ja (Separator + ES-Element setzen)", - "vfl-linie-zu-kurz-simple": "\n Linie zu kurz - uebersprungen.", - "vfl-linie-zu-kurz-uebersprungen": "\n Linie zu kurz (oder entgegen der Fahrtrichtung) - uebersprungen.", - "vfl-mehrere-winkel-header": "\n\nMehrere gueltige Winkel - bitte gewuenschten Winkel waehlen:", - "vfl-modus1-beschreibung": "\nGemischte Gefaellestrecke/VarioFoerderer-Kette entlang eines frei", - "vfl-modus1-header": "\n VF-LINIENZUG - Modus 1: Manuelle Eingabe", - "vfl-naechstes-element-vf": "\n\nNaechstes Element im VarioFoerderer:", - "vfl-nein-weiterbauen": "\n 2 - Nein (weiterbauen)", - "vfl-opt-auf-ab-foerderer": "\n 3 - Auf/Ab-Foerderer (Linie mit Hoehendifferenz)", - "vfl-opt-horizontaler-foerderer": "\n 1 - Horizontaler Foerderer (Linie ohne Hoehendifferenz)", - "vfl-opt-vario-kurve": "\n 2 - Vario-Kurve (30/60/90 Grad)", - "vfl-prompt-wahl-1-2-def2": "\nIhre Wahl (1/2) [2]: ", - "vfl-prompt-wahl-1-3-def2": "\nIhre Wahl (1/2/3) [2]: ", - "vfl-prompt-wahl-1-3-def3": "\nIhre Wahl (1/2/3) [3]: ", - "vfl-sep-horizontal-info": "\n [horizontal] Separator (300 mm, 0 Grad)", - "vfs-berechnung-header": "\n BERECHNUNG FUER ALLE WINKEL (Standard)", - "vfs-block-fehlende-header": "\n Folgende Block-Dateien fehlen:", - "vfs-ergebnistabelle-header": "\n ERGEBNISTABELLE", - "vfs-extrahiere-aus": "\n Extrahiere AUS_Element Masse...", - "vfs-extrahiere-bogen": "\n Extrahiere Bogen-Masse...", - "vfs-extrahiere-ein": "\n Extrahiere EIN_Element Masse...", - "vfs-fehler-block-as90": "\n FEHLER: Block AS_Element_90_links nicht geladen!", - "vfs-fehler-block-es90": "\n FEHLER: Block ES_Element_90_links nicht geladen!", - "vfs-fehler-ks-as90": "\n FEHLER: KS_EIN/KS_AUS fehlt im AS_90!", - "vfs-fehler-ks-es90": "\n FEHLER: KS_EIN/KS_AUS fehlt im ES_90!", - "vfs-fehler-lib-nicht-init": "\n FEHLER: Bibliothek nicht korrekt initialisiert (AUS/EIN-Masse fehlen)!", - "vfs-kein-winkel-gefunden": "\n>>> KEIN passender Winkel gefunden!", - "vfs-lib-bereits-init": "\n Standard-Bibliothek bereits initialisiert.", - "vfs-lib-init-erfolg": "\n Standard-Bibliothek erfolgreich initialisiert.", - "vfs-lib-init-start": "\n Initialisiere Standard-Bibliothek...", - "vfs-status-gueltig": "GUELTIG", - "vfs-status-ungueltig": "UNGUELTIG (negative Laenge)", - "vfs-tabelle-spalten": "\n Winkel L_GF (mm) L_VF (mm) Status", - "vfs-vf-eingang-gf1-skip": "\n\n[VF-Eingang] Gefaellestrecke GF1 (uebersprungen)", - "vfs-vf-eingang-separator": "\n[VF-Eingang] Separator (300 mm, 3 Grad geneigt)", - "vfs-vf-eingang-umlenk": "\n[VF-Eingang] Umlenkstation (500 mm, 3 Grad geneigt)", - "vfs-warn-lisppfad": "\n[vf_standard] WARNUNG: Lisp-Pfad nicht ermittelbar - vf_core.lsp nicht ladbar!", - "dim-switch-modus": "\nModus umgeschaltet auf: %1", - "dim-switch-blocks": "\n DXFM_BLOCKS = %1", - "dim-switch-omniflo": "\n DXFM_OMNIFLO = %1", - "dim-batch-fertig": "\nUmwandlung auf %1 abgeschlossen: %2 GF, %3 VF neu aufgebaut (%4 bereits in Zieldimension).", - "sprache-gewechselt": "\nSprache umgeschaltet auf: %1", - "cmd-block-auswaehlen": "\nBlock auswaehlen: ", - "cmd-kein-block-ausgewaehlt": "\nKein Block ausgewaehlt.", - "cmd-kreisel-bearbeiten": "\nKreisel bearbeiten: %1", - "cmd-eckrad-bearbeiten": "\nEckrad bearbeiten: %1", - "cmd-gefaelle-bearbeiten": "\nGefaellestrecke bearbeiten: %1", - "cmd-variofoerderer-bearbeiten": "\nVarioFoerderer bearbeiten: %1", - "gf-edit-kein-gf": "Block %1 ist keine Gefaellestrecke.", - "gf-edit-nur-einfach": "Nur einfache Gefaellestrecken (ohne Bogen) koennen ueber den Dialog bearbeitet werden.\nTYP: %1", - "gf-edit-neu-aufgebaut": "\nGefaellestrecke %1 neu aufgebaut.", - "gf-vf-modul-fehlt": "VarioFoerderer-Modul nicht geladen!", - "gf-vf-gebaut": "\n-> Paralleler VarioFoerderer gebaut (2000 mm neben der Gefaellestrecke, gegenlaeufig, steigend).", - "cmd-omniflo-bearbeiten": "\nOmniflo Element bearbeiten: %1", - "cmd-attribute-bearbeiten": "\nAttribute bearbeiten: %1", - "ils-station-prompt-punkt": "\nEinfuegepunkt fuer %1 [ENTER=Ende]: ", - "ils-station-fehler-blockdatei": "\n>>> FEHLER: Blockdatei '%1.dwg' nicht gefunden (data/ils pruefen).", - "ils-station-fertig": "\n>>> %1 x %2 eingefuegt.", - "layer-prompt-ziel-layer": "\nObjekt auf dem Ziel-Layer waehlen: ", - "layer-prompt-objekt": "\nObjekt waehlen: ", - "layer-prompt-referenz-objekt": "\nReferenz-Objekt waehlen (bestimmt Typ und Layer): ", - "layer-prompt-typ-ermittlung": "\nNochmals fuer Typ-Ermittlung anklicken: ", - "layer-prompt-ausblenden": "\nLayer zum Ausblenden anklicken (Enter=Ende): ", - "layer-prompt-einfrieren": "\nLayer zum Einfrieren anklicken (Enter=Ende): ", - "layer-prompt-aktiv-bleibt": "\nObjekt auf dem Layer waehlen, der AKTIV bleibt: ", - "layer-prompt-name-loeschen": "\nLayername zum Loeschen: ", - "layer-err-kein-objekt": "Kein Objekt gewaehlt.", - "layer-err-kein-ziel-layer": "Kein Ziel-Layer gewaehlt.", - "layer-err-kein-ziel-layer-kurz": "Kein Ziel-Layer.", - "layer-err-keine-passenden-objekte": "Keine passenden Objekte gefunden.", - "layer-abgebrochen": "Abgebrochen.", - "layer-err-kein-referenz-objekt": "Kein Referenz-Objekt gewaehlt.", - "layer-err-aktiv-nicht-ausschalten": "Aktiven Layer nicht ausschalten!", - "layer-err-aktiv-nicht-einfrieren": "Aktiven Layer nicht einfrieren!", - "layer-aktiver-layer": "\nAktiver Layer: %1", - "layer-objekt-auf-layer": "\nObjekt liegt auf Layer: %1", - "layer-nur-layer-sichtbar": "\nNur Layer '%1' ist sichtbar.", - "layer-geloescht": "\nLayer '%1' geloescht.", - "layer-leerer-geloescht": "\nLeerer Layer '%1' geloescht.", - "layer-existiert-nicht": "Layer '%1' existiert nicht.", - "layer-ques-typ-wechseln": "Layer dieser %1-Objekte wechseln?", - "layer-ques-alle-loeschen": "Alle Objekte auf Layer '%1' loeschen?", - "core-start-titel": "\n***** %1 *****\n", - "core-errhan-fehler": "\nFehler: ", - "core-blockname-exists": "Blockname '%1' existiert bereits - wird uebersprungen.", - "core-dwg-not-found": "\nFEHLER: Block nicht gefunden: %1", - "exp-cfg-not-found": "\n[export] WARNUNG: %1 nicht gefunden/leer, verwende Vorgaben.", - "exp-check-ids": "\n[%1] Pruefe und vergebe IDs...", - "exp-update-hoehe-drehung": "\n[%1] Aktualisiere Hoehe/Drehung...", - "exp-collect-blocks": "\n[%1] Sammle relevante Bloecke...", - "exp-no-blocks-found": "\n[%1] Keine relevanten Bloecke gefunden.", - "exp-blocks-found": "\n[%1] %2 Bloecke gefunden.", - "exp-output-dir": "\n[%1] Ausgabeordner: %2", - "exp-file-open-error": "\n[%1] FEHLER: Kann Datei nicht oeffnen: %2", - "exp-json-written": "\n[%1] JSON geschrieben: %2", - "exp-calling-python": "\n[%1] Rufe Python auf...", - "exp-export-started": "\n[%1] Export gestartet: %2", - "exp-dxfm-lib-missing": "\n[%1] FEHLER: Umgebungsvariable DXFM_LIB ist nicht gesetzt - BricsCAD wurde vermutlich nicht ueber bin/start_briscad.bat gestartet. CSV/JSON wurden geschrieben, der Python-Aufruf entfaellt.", - "exp-python-not-found": "\n[%1] FEHLER: Python-Skript nicht gefunden: %2", - "exp-python-exe": "\n[%1] Interpreter: %2", - "exp-export-done": "\n[%1] Export fertig: %2", - "exp-python-call-failed": "\n[%1] FEHLER: Python konnte nicht gestartet werden (WScript.Shell nicht verfuegbar).", - "exp-python-error": "\n[%1] FEHLER: Python endete mit Exitcode %2. Log: %3", - "exp-python-store-hint": "\n HINWEIS: Es wurde kein echter Python-Interpreter gefunden ('python' zeigt\n unter Windows 11 auf den WindowsApps-Platzhalter). Loesung: bin/install_py.bat\n ausfuehren (legt .venv an) und BricsCAD ueber bin/start_briscad.bat neu\n starten, oder in cfg/export.cfg unter [python] interpreter= den vollen Pfad\n zur python.exe setzen.", - "exp-csv-missing": "\n[%1] FEHLER: Python meldete Erfolg, aber die CSV fehlt: %2. Log: %3", - "exp-omni-no-inserts": "\n[OMNI_UPDATE] Keine INSERT-Bloecke in der Zeichnung.", - "exp-omni-updated": "\n[OMNI_UPDATE] %1 Elemente aktualisiert (HOEHE, DREHUNG).", - "id-new-assigned": "\n[ID] Neue ID zugewiesen: %1", - "id-invalid-block": "\n[ID] FEHLER: Kein gueltiger INSERT-Block!", - "id-check-no-blocks": "\n[IDSCHECK] Keine relevanten Bloecke gefunden.", - "id-check-missing-set": "\n[IDSCHECK] Fehlende ID gesetzt: %1 (Block %2)", - "id-check-duplicate": "\n[IDSCHECK] Duplikat ID %1 -> neue ID %2 (Block %3)", - "id-check-done": "\n[IDSCHECK] Fertig. %1 Duplikate korrigiert.", - "id-check-corrected": "\n[IDSCHECK] %1 IDs korrigiert.", - "id-select-block-prompt": "\nBlock waehlen: ", - "id-generate-invalid": "\n[IDGENERATE] Kein gueltiger Block gewaehlt.", - "dialog-nicht-verfuegbar": "Dialog nicht verfuegbar.", - "dialog-einfuegepunkt-waehlen": "\nEinfuegepunkt waehlen: ", - "extcall-python-rueckgabe": "\n[SSG_LIB] Python Rueckgabe: %1", - "extcall-keine-rueckgabe": "\n[SSG_LIB] WARNUNG: Keine Rueckgabe von Python erhalten.", - "extcall-skript-nicht-gefunden": "\n[SSG_LIB] FEHLER: %1 nicht gefunden!", - "vfstart-core-nicht-gefunden": "\n[VarioFoerderer] WARNUNG: vf_core.lsp nicht gefunden - Befehle nicht verfuegbar.", - "vfstart-etage-core-nicht-gefunden": "\n[EtageVarioFoerderer] WARNUNG: vf_core.lsp nicht gefunden - Befehle nicht verfuegbar.", - "gf-seite-aus-header": "\n\nAUS-Element (AS_Element_*) - Seite waehlen:", - "gf-seite-ein-header": "\n\nEIN-Element (ES_Element_*) - Seite waehlen:", - "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]: ", - "geruest-typ-header": "\n\nGeruestoption waehlen:", - "geruest-typ-opt": "\n %1 - %2", - "geruest-typ-prompt": "\nGeruestoption (1-4) [%1]: ", - "kreisel-eckrad-geruest-frage": "Geruest fuer Einzelmodul?", - "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-alert-dialog-fehlt": "Dialog-Datei nicht gefunden:\n%1", - "gf-dlg-richtung-0": "0%1 (X+, Ost)", - "gf-dlg-richtung-90": "90%1 (Y+, Nord)", - "gf-dlg-richtung-180": "180%1 (X-, West)", - "gf-dlg-richtung-270": "270%1 (Y-, Sued)", - "gf-dlg-links": "Links", - "gf-dlg-rechts": "Rechts", - "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 : ", - "tefl-fehler-dxfm-omniflo": "\n[TEF] FEHLER: DXFM_OMNIFLO nicht gesetzt (bin/setenv.bat ausfuehren).", - "tefl-fehler-dxf-nicht-gefunden": "\n[TEF] FEHLER: Element-DXF nicht gefunden: %1", - "tefl-prompt-startpunkt": "\nStartpunkt der Foerderstrecke waehlen: ", - "tefl-prompt-endpunkt": "\nEndpunkt der Foerderstrecke waehlen: ", - "tefl-abgebrochen": "\n[TEF] Abgebrochen.", - "tefl-fehler-laenge-null": "\n[TEF] FEHLER: Start- und Endpunkt liegen zu nah beieinander.", - "tefl-fertig": "\n[TEF] %1 Element(e) eingefuegt, Streckenlaenge=%2 mm.", - "vfl-kette-titel": "\n Vario_Kette_Merge - mehrere Vario-Foerderer-Bausteine (einzeln oder bereits gewickelt) zu einem Gesamt-Block verschmelzen", - "vfl-kette-start-waehlen": "\n\nStart-Baustein der Kette waehlen (erstes Element - AS-Element oder VF_n): ", - "vfl-kette-kein-objekt": "\nKein Objekt gewaehlt - Abbruch.", - "vfl-kette-kein-vf-block": "\nGewaehltes Objekt ('%1') ist kein bekannter Vario-Kette-Baustein (AS-/ES-Element, GF-Bogen, Vario-Kurve, Umlenk-/Motorstation, Vertikalbogen, Staustrecke/Separator oder VF_n).", - "vfl-kette-start-nicht-gefunden": "\nFEHLER: Start-Baustein nicht in der Ketten-Erfassung gefunden (interner Fehler).", - "vfl-kette-start-nicht-gefunden-diag": "\nFEHLER: Start-Baustein nicht in der Ketten-Erfassung gefunden (interner Fehler).\n Diagnose: %1 Bausteine insgesamt erfasst, gewaehlter Blockname='%2', davon %3 mit gleichem Blocknamen erfasst.", - "vfl-kette-start-ohne-ks-ein": "\nFEHLER: Am gewaehlten Baustein konnte kein KS_EIN gefunden werden - Kette kann nicht verfolgt werden.", - "vfl-kette-nur-ein-baustein": "\nAb dem gewaehlten Baustein wurde kein weiterer angeschlossener VF_n-Baustein gefunden - nichts zum Zusammenfuehren.", - "vfl-kette-gefunden": "\n\nKette erkannt: %1 Baustein(e) werden zusammengefuehrt:", - "vfl-kette-luecke-warnung": "\n\n WARNUNG: Nach '%1' wurde ein visuell nahes, aber nicht sauber verbundenes VF_n ('%2') gefunden (KS-Abstand %3 mm) - Kette wurde dort beendet, dieser und alle weiteren Bausteine bleiben unangetastet.", - "vfl-kette-fertig": "\n\n>>> Fertig: neuer Gesamt-Block '%1' aus %2 Baustein(en) erstellt.", - "cmd-tro-bearbeiten": "\nTRO-Marker bearbeiten: %1", - "tro-edit-kein-tro": "Block %1 ist kein TRO-Marker (erwartet TRO_*).", - "tro-edit-kein-id-attribut": "Block %1 hat kein Attribut ID - bitte neu beschriften lassen (tro_annotate.py).", - "tro-edit-dialog-fehlt": "Dialogdatei nicht gefunden:\n%1\nDXFM_DCL pruefen (setenv.bat).", - "tro-edit-modul-fehlt": "%1 nicht geladen - Attribute werden mit EATTEDIT bearbeitet.", - "tro-edit-block": "Block: %1", - "tro-edit-fb": "Funktionsbaustein: %1", - "tro-edit-hinweis": "Symbol und FB folgen erst beim naechsten Lauf von tro_annotate.py.", - "tro-edit-id-leer": "Die TRO-Kennung darf nicht leer sein - nichts geaendert.", - "tro-edit-gespeichert": "\nTRO gespeichert: ID = %1, TYP = %2", - "tro-edit-typ-geaendert": "\nTyp geaendert - tro_annotate.py neu laufen lassen, damit Symbol und FB passen.", - "tro-insert-kein-typ": "Keine TRO-Typen verfuegbar (tro_types.lsp fehlt) - bitte lib/tro_annotate.py --emit-lisp ausfuehren.", - "tro-insert-hinweis": "Die Blockform muss bereits in der Zeichnung vorhanden sein (aus einem frueheren Lauf von tro_annotate.py).", - "tro-insert-kein-block": "Kein Symbol fuer diesen Typ in der Zeichnung (%1) - bitte tro_annotate.py mit diesem Typ laufen lassen.", - "tro-insert-prompt-punkt": "\nEinfuegepunkt: ", - "tro-insert-eingefuegt": "\nTRO eingefuegt: ID = %1, TYP = %2" - } + "texts": { + "omni-alle-winkel": "alle Winkel", + "omni-grad": " Grad", + "omni-bogen-keine-gefunden": "Keine Boegen fuer %1%2 gefunden.", + "omni-weiche-keine-gefunden": "Keine Weichen fuer %1%2 gefunden.", + "vfc-ursprung": "Ursprung", + "vfc-block-eingefuegt-xyzref-ksaus": "\n '%1' eingefuegt (XY:%2 Z:%3)\n KS_AUS: X=%4 Y=%5 Z=%6", + "vfl-ja": "\n 1 - Ja", + "vfl-nein": "\n 2 - Nein", + "vfl-sep-vor-frage": "\n\nZusaetzlichen Separator VOR dem horizontalen Stueck?", + "vfl-sep-nach-frage": "\n\nZusaetzlichen Separator NACH dem horizontalen Stueck?", + "vfl-sep-an-stelle-frage": "\n\nZusaetzlichen Separator an dieser Stelle einfuegen?", + "vf-winkel-aus-header": "\n\nAUS-Element (AS_Element) - Winkel waehlen:", + "vf-winkel-ein-header": "\n\nEIN-Element (ES_Element) - Winkel waehlen:", + "vf-winkel-90": "\n 1 - 90 Grad", + "vf-winkel-30": "\n 2 - 30 Grad", + "vfl-gf-bogen-winkel-header": "\n\nGF-Bogen - Winkel waehlen:", + "vfl-gf-bogen-seite-header": "\nGF-Bogen - Seite waehlen:", + "vfl-winkel-30": "\n 1 - 30 Grad", + "vfl-winkel-60": "\n 2 - 60 Grad", + "vfl-winkel-90": "\n 3 - 90 Grad", + "vfl-variokurve-winkel-header": "\n\nVario-Kurve - Winkel waehlen:", + "vfl-opt1-90grad": "\n 1 - 90 Grad", + "vfl-opt2-60grad": "\n 2 - 60 Grad", + "vfl-opt3-30grad": "\n 3 - 30 Grad", + "vfl-prompt-wahl-1-3-def1": "\nIhre Wahl (1/2/3) [1]: ", + "vfl-variokurve-seite-header": "\nVario-Kurve - Seite waehlen:", + "vfl-variokurve-variante-header": "\nVario-Kurve - Variante waehlen:", + "vfl-variante-aussen": "\n 1 - Aussen", + "vfl-variante-innen": "\n 2 - Innen", + "vfl-ist-ziel-vergleich-header": "\n\n>>> IST-ZIEL-VERGLEICH (ES-Element):", + "vfl-soll-xyz": "\n Soll: X=%1 Y=%2 Z=%3", + "vfl-ist-xyz": "\n Ist : X=%1 Y=%2 Z=%3", + "vfl-abweichung-xyz": "\n Abweichung: dX=%1 dY=%2 dZ=%3 mm", + "vfl-m3-titel": "\n VF-LINIENZUG - Modus 2: Pfad + Ziel-Hoehe (fertig; Anker + Solver + Bau)", + "vfl-m3-alert-gf-modul": "Gefaellestrecke-Modul nicht geladen!", + "vfl-m3-pfad-waehlen": "\n\nPfad-Objekte waehlen (Linien/Boegen):", + "vfl-m3-keine-objekte": "\nKeine Objekte gewaehlt - Abbruch.", + "vfl-m3-prompt-startpunkt": "\n\nStartpunkt der Kette (hoehere Seite) waehlen: ", + "vfl-prompt-hoehe-startpunkt": "\nHoehe (Z) des Startpunkts [%1]: ", + "vfl-m3-prompt-endpunkt": "\n\nEndpunkt der Kette (Ziel) waehlen: ", + "vfl-m3-prompt-zielhoehe": "\nZiel-Hoehe (Z) des Endpunkts [%1]: ", + "vfl-m3-fehler-nicht-sortierbar": "\nFEHLER: Pfad nicht sortierbar (haengt er lueckenlos zusammen?).", + "vfl-m3-alert-eckwinkel": "Kein passender Bogen: Eck-Winkel %1 Grad ist nicht ~30/60/90.\nBitte die Winkel anpassen.", + "vfl-m3-seg-gerade": "\n\nSegment %1/%2: Gerade L=%3 mm hz=%4", + "vfl-m3-auto-vf": "\n (automatisch VF - Segment folgt direkt auf eine Vario-Kurve)", + "vfl-m3-typ-gerade": "\n Typ? 1 = GF (Eingabe-Winkel) 2 = VF (Bruecke)", + "vfl-m3-prompt-gf-neigung": "\n GF-Neigung in Grad [3]: ", + "vfl-m3-hinweis-gf-max": "\n Hinweis: GF max. 3 Grad - auf 3 begrenzt.", + "vfl-m3-seg-bogen": "\n\nSegment %1/%2: Eck/Bogen %3 Grad %4", + "vfl-m3-typ-bogen": "\n Typ? 1 = GF-Bogen 2 = Vario-Kurve", + "vfl-m3-variante-frage": "\n Vario-Kurve - Variante? 1 = Aussen 2 = Innen", + "vfl-m3-vf-laeufe": "\n\n[M3a] Gefundene VF-Laeufe: %1", + "vfl-m3-vf-lauf-noetig": "\n[M3a] Genau EIN VF-Lauf noetig (GF...VF...GF; Vario-Kurven duerfen im Lauf liegen).", + "vfl-m3-vf-lauf-m3b": "\n[M3a] Mehrere/keine VF-Laeufe -> M3b spaeter.", + "vfl-m3-vf-lauf-ohne-gerade": "\n[M3a] VF-Lauf ohne VF-Gerade - Abbruch.", + "vfl-m3-anker-vorschau-header": "\n M3a ANKER-VORSCHAU (grob geschaetzt; exakte Werte beim Bau)", + "vfl-m3-start-hoehe": "\n Start-Hoehe Z: %1 mm", + "vfl-m3-ziel-hoehe": "\n Ziel-Hoehe Z: %1 mm", + "vfl-m3-delta-h-gesamt": "\n delta-H gesamt: %1 mm (positiv = Abfall)", + "vfl-m3-vf-lauf-segmente": "\n VF-Lauf: Segment %1..%2", + "vfl-m3-front-anker-vorschau": "\n Front-Anker Z: %1 mm (vorwaerts von AS)", + "vfl-m3-junction-anker-vorschau": "\n Junction-Anker Z: %1 mm (rueckwaerts von ES)", + "vfl-m3-richtung-auf": "Auf (steigt)", + "vfl-m3-richtung-ab": "Ab (faellt)", + "vfl-m3-richtung-horizontal": "horizontal", + "vfl-m3-richtung-auf-kurz": "Auf", + "vfl-m3-richtung-ab-kurz": "Ab", + "vfl-m3-bruecke-dh": "\n --> Bruecke: delta-H = %1 mm ueber Spannweite %2 mm", + "vfl-m3-bruecke-richtung": "\n Richtung: VF-%1", + "vfl-m3-vf-angetrieben": "\n (VF ist angetrieben - kann STEIGEN und FALLEN; Vorzeichen = nur Auf/Ab)", + "vfl-m3-mittlere-neigung": "\n grobe mittlere Neigung ueber Spannweite: ~%1 Grad", + "vfl-m3-warnung-zu-steil": "\n WARNUNG: ~Neigung > 51 Grad -> zu steil fuer Vario (Magnitude infeasibel).", + "vfl-m3-vario-bereich-ok": "\n -> innerhalb Vario-Bereich (3..51 Grad), grobe Orientierung.", + "vfl-m3-anker-hinweis": "\n (Anker oben = grobe Vorschau; exakte Werte werden beim Bau GEMESSEN)", + "vfl-m3-phase-b1": "\n\n>>> Phase B1: Front-Lauf (AS + GF) bauen ...", + "vfl-m3-alert-beginnt-bogen": "Kette beginnt mit einem Bogen - bitte erst eine Gerade.", + "vfl-m3-kurve-front-uebersprungen": "\n >>> [M3a] Vario-Kurve im Front-Lauf - uebersprungen.", + "vfl-m3-standard-vario-header": "\n\n --- STANDARD-VARIO (Kletter-Segment) + flache Zone ---", + "vfl-m3-front-anker-gemessen": "\n Front-Anker (gemessen): %1 mm", + "vfl-m3-junction-exakt": "\n Junction (exakt): %1 mm", + "vfl-m3-kletter-info": "\n Kletterhoehe %1 mm | Kletterer %2 | Kurven %3 | kurze VF %4", + "vfl-m3-kein-winkel": "\n KEIN passender Vario-Winkel -> infeasibel (Front bereits gebaut).", + "vfl-m3-gf-verteilung": "\n\n GF-Verteilung: 1 - alles am Einlauf (GF1) 2 - 1/2 GF1 + 1/2 GF2", + "vfl-m3-vert-halb": "1/2 GF1 + 1/2 GF2", + "vfl-m3-vert-ganz": "alles GF1", + "vfl-m3-vario-ergebnis": "\n -> Vario %1 (%2), L_VF %3 mm, GF gesamt %4 mm, Verteilung %5 (GF2-Rest = Mess-Feinkorrektur)", + "vfl-m3-warnung-gf2-negativ": "\n WARNUNG: Koerper klettert zu wenig - GF2<0 (fehlen %1 mm). Winkel zu flach; dZ nicht exakt.", + "vfl-m3-gf2-ausgleich": "\n GF2 (gemessener Ausgleich): L=%1 mm", + "vfl-m3-kurve-back-uebersprungen": "\n >>> [M3a] Vario-Kurve im Back-Lauf - uebersprungen.", + "vfl-m3-nichts-gebaut": "\nNichts gebaut - Abbruch.", + "vfl-m3-fertig-header": "\n>>> VF-Linienzug (Modus 2) gebaut! <<<", + "vfl-m3-ziel-soll": "\n Ziel (Soll): X=%1 Y=%2 Z=%3", + "vfl-m3-es-ist": "\n ES (Ist): X=%1 Y=%2 Z=%3", + "vfl-m3-abweichung": "\n Abweichung: dX=%1 dY=%2 dZ=%3 mm", + "vfl-m3-laengs-quer": "\n Laengs KS_AUS-Achse: %1 mm | Quer zur Achse (soll ~0): %2 mm", + "vfl-m3-achse-hinweis": "\n (dZ=Ziel-Hoehe; Quer zur KS_AUS-Achse ~0 => Endpunkt liegt auf der Achse)", + "gf-fehler-block-fehlt": "\n FEHLER: Block '%1' fehlt", + "gf-fehler-block-fehlt-ausruf": "\n FEHLER: Block '%1' fehlt!", + "gf-fehler-blockdatei-fehlt": "\n FEHLER: Block-Datei nicht gefunden: %1", + "gf-fehler-keine-linie": "\n Fehler: keine Linie!", + "gf-laenge-null-uebersprungen": "\n (Laenge 0 - uebersprungen)", + "gf-prompt-linie-waehlen": "\n >> Linie waehlen: ", + "gf-status-3dlinie-z": "\n 3D-Linie: Z_start=%1 Z_end=%2", + "gf-status-block-l-z": "\n %1 L=%2 -> Z=%3", + "gf-status-bogen-masse": "\n %1: dx=%2 dz=%3", + "gf-status-gefaellebogen": "\n Gefaellebogen %1 hz=%2%3 -> Z=%4", + "gf-status-hzincl": "\n HzIncl %1 L=%2 hz=%3%4 v=%5%6 -> Z=%7", + "gf-status-hzks": "\n HzKS %1 hz=%2%3 v=%4%5 -> Z=%6", + "gf-status-ks-aus-z": "\n KS_AUS Z=%1", + "gf-warnung-block-fehlt-nullwerte": "\n WARNUNG: %1 fehlt - Nullwerte", + "gf-warnung-ks-fehlt": "\n WARNUNG: KS_EIN/KS_AUS fehlt!", + "gf-warnung-ks-fehlt-in": "\n WARNUNG: KS fehlt in '%1'", + "gf-warnung-ks-fehlt-in2": "\n WARNUNG: KS fehlt in %1", + "kreisel-abstand-ausgabe": "\n-> Abstand: %1 mm", + "kreisel-beschriftung-erzeugt": "\n-> Beschriftung: %1 (Höhe=%2mm, Arial, zentriert)", + "kreisel-bestehende-blockdef": "\n-> Verwende bestehende Blockdefinition: %1", + "kreisel-connect-zusammenfassung": "\n-> Abstand: %1 mm Rotation: %2 Grad Hoehe: %3 Kreiselart: %4", + "kreisel-eckrad-eingefuegt": "\n-> Eckrad #%1 eingefuegt: %2 bei %3,%4 Rotation=%5 Hoehe=%6", + "kreisel-edit-aktualisiert": "\nKreisel aktualisiert: Name=%1 Abstand=%2 Hoehe=%3 Rotation=%4", + "kreisel-edit-bestehend": "\n-> Bestehend: Abstand=%1 Drehung=%2 Art=%3", + "kreisel-edit-dialog-fehlt": "Dialog nicht verfuegbar: %1", + "kreisel-eingefuegt": "\n-> Kreisel #%1 eingefügt: %2 (Höhe=%3)", + "kreisel-emsg-distanz-klein": "Distanz zu klein! (%1 < %2)", + "kreisel-hoehe-aus-3dpunkt": "\n-> Hoehe aus 3D-Punkt uebernommen: %1", + "kreisel-hoehe-aus-basispunkt": "\n-> Höhe aus Basispunkt übernommen: %1", + "kreisel-hoehe-aus-startpunkt": "\n-> Hoehe aus Startpunkt uebernommen: %1", + "kreisel-hoehe-von-bestehendem": "\n-> Höhe von bestehendem Kreisel übernommen: %1", + "kreisel-insert-zusammenfassung": "\n-> Rotation: %1 Höhe: %2 Kreiselart: %3", + "kreisel-labelsetup-fertig": "\nNeue Einstellungen: Höhe=%1, Farbe=%2, Y-Versatz=%3, Schriftart=Arial", + "kreisel-neue-beschriftungsposition": "\nNeue Beschriftungsposition: X=%1 Y=%2", + "kreisel-neue-blockdef": "\n-> Neue Blockdefinition: %1", + "kreisel-neue-texthoehe": "\nNeue Texthöhe: %1", + "kreisel-params-default-hoehe": "\nDefault-Höhe: %1", + "kreisel-params-default-laenge": "\nDefault-Laenge: %1", + "kreisel-params-durchmesser": "\nDurchmesser: %1", + "kreisel-params-typ": "\nKreiselart: %1", + "kreisel-prompt-abstand": "\nAbstand (Tangentenlaenge) <%1>: ", + "kreisel-prompt-abstand-oben": "\nAbstand über Kreisel-Mitte <%1>: ", + "kreisel-prompt-hoehe-z": "\nHoehe (Z-Koordinate) <%1>: ", + "kreisel-prompt-neue-hoehe": "\nNeue Höhe <%1>: ", + "kreisel-prompt-neuer-abstand": "\nNeuer Abstand <%1>: ", + "kreisel-prompt-schriftfarbe": "\nSchriftfarbe (1=Rot,2=Gelb,3=Grün,4=Cyan,5=Blau,6=Magenta,7=Weiß) <%1>: ", + "kreisel-prompt-schrifthoehe": "\nSchrifthöhe <%1>: ", + "kreisel-prompt-texthoehe": "\nTexthöhe <%1>: ", + "kreisel-prompt-x-abstand": "\nX-Abstand von AN8-Mitte <%1>: ", + "kreisel-prompt-y-abstand": "\nY-Abstand von AN8-Mitte <%1>: ", + "kreisel-redraw-bestehend": "\n-> Bestehend: Abstand=%1 Drehung=%2 Hoehe=%3 Art=%4", + "kreisel-redraw-fertig": "\nKreisel neu gezeichnet. Abstand=%1", + "kreisel-script-distanz-klein": "\n[Connect] Distanz zu klein: %1", + "kreisel-textstil-erstellt": "\n-> Textstil '%1' mit Arial erstellt", + "kreisel-typ-prompt": "\nBitte waehlen <%1>: ", + "omni-bogen-info-antriebsart": "\n Antriebsart: %1", + "omni-bogen-info-breite": "\n Breite: %1", + "omni-bogen-info-kurvenwinkel": "\n KurvenWinkel: %1", + "omni-bogen-info-laenge": "\n Laenge: %1", + "omni-bogen-info-profiltyp": "\n ProfilTyp: %1", + "omni-bogen-info-radius": "\n Radius: %1", + "omni-bogen-nicht-gefunden": "\nKein Bogen mit SivasId '%1' gefunden.", + "omni-dxf-eingefuegt": "\n[OMNI] %1 eingefuegt. Hoehe=%2 Drehung=%3%4", + "omni-edit-aktualisiert": "\n[OMNI] Element aktualisiert: %1 Hoehe=%2 Drehung=%3", + "omni-edit-dxf-nicht-gefunden": "DXF nicht gefunden: %1", + "omni-einfuegen-info": "\n[OMNI] Einfuegen: %1 (%2)", + "omni-fehler-dxf-nicht-gefunden": "\n[OMNI] FEHLER: DXF nicht gefunden: %1", + "omni-insert-block-eingefuegt": "\n[OMNI] %1 eingefuegt. Laenge=%2 mm", + "omni-laenge-ueberschritten": "Die gewuenschte Fahrstreckenlaenge von %1 mm ueberschreitet die Maximallaenge von %2 mm des Fahrstreckenprofils.\nBitte neu definieren!", + "omni-weiche-info-breite": "\n Breite: %1", + "omni-weiche-info-kurvenrichtung": "\n KurvenRichtung: %1", + "omni-weiche-info-kurvenwinkel": "\n KurvenWinkel: %1", + "omni-weiche-info-laenge": "\n Laenge: %1", + "omni-weiche-info-profiltyp": "\n ProfilTyp: %1", + "omni-weiche-info-schaltungstyp": "\n Schaltungstyp: %1", + "omni-weiche-info-weichentyp": "\n WeichenTyp: %1", + "omni-weiche-info-wklaenge": "\n WK-Laenge: %1", + "omni-weiche-nicht-gefunden": "\nKeine Weiche mit SivasId '%1' gefunden.", + "vfc-3dlinie-start-ende": "\n 3D-Linie:\n Start: X=%1 Y=%2 Z=%3\n Ende: X=%4 Y=%5 Z=%6", + "vfc-3dpolylinie-start-ende": "\n 3D-Polylinie:\n Start Z=%1 Ende Z=%2", + "vfc-block-einfuegepunkt": "\n Block-Einfuegepunkt: X=%1 Y=%2 Z=%3", + "vfc-block-eingefuegt-ksaus": "\n '%1' eingefuegt\n KS_AUS: X=%2 Y=%3 Z=%4", + "vfc-delta-l-h-richtung": "\n %1L=%2 mm %1H=%3 mm Fahrtrichtung=%4%5", + "vfc-endpunkt-xyz": "\n Endpunkt: X=%1 Y=%2 Z=%3", + "vfc-endpunkt-xyz-dxdz": "\n Endpunkt: X=%1 Y=%2 Z=%3 (dx=%4 dz=%5)", + "vfc-fahrtrichtung-ergebnis": "\n>>> Fahrtrichtung: %1%2", + "vfc-fehler-block-datei-fehlt": "\n FEHLER: Block-Datei nicht gefunden: %1", + "vfc-fehler-block-nicht-in-bibliothek": "\n FEHLER: Block '%1' nicht in Bibliothek", + "vfc-fehler-block-nicht-in-bibliothek-abgebrochen": "\n FEHLER: Block '%1' nicht in Bibliothek - abgebrochen", + "vfc-fehler-ks-fehlen": "\n FEHLER: KS_EIN/KS_AUS fehlen in '%1'", + "vfc-fehler-ungueltiger-einfuegepunkt": "\n FEHLER: Ungueltiger Einfuegepunkt fuer '%1'", + "vfc-fuege-block-ein-hz": "\n Fuege Block '%1' ein... (hz=%2%3)", + "vfc-fuege-block-ein-rotation-hz": "\n Fuege Block '%1' ein (Rotation %2%3 hz=%4%5)", + "vfc-fuege-ein-lwhz": "\n Fuege '%1' ein (L=%2 mm, W=%3%4 hz=%5%6)", + "vfc-ks-aus-xyz": "\n KS_AUS: X=%1 Y=%2 Z=%3", + "vfc-lade-block": "\n Lade Block: %1 ...", + "vfc-laenge-uebersprungen": "\n Laenge=%1 mm -> uebersprungen", + "vfc-punkt-auf-objekt": "\n Punkt auf Objekt: Z=%1 mm", + "vfe-as30-mass": "\n AS_30_rechts: dx=%1 mm, dz=%2 mm", + "vfe-block-fehlt-abbruch": "\n FEHLER: Block '%1' nicht in Bibliothek - abgebrochen", + "vfe-bogen-nicht-vorhanden": "\n %1 -> Bogen nicht vorhanden", + "vfe-delta-info": "\n△L=%1 mm △H=%2 mm Richtung=%3", + "vfe-empfohlener-winkel": "\n>>> Empfohlener Winkel: %1", + "vfe-es30-mass": "\n ES_30_rechts: dx=%1 mm, dz=%2 mm", + "vfe-extrahiere-block-mass": "\n Extrahiere %1 Masse...", + "vfe-gefaellebogen-links-mass": "\n Gefaellebogen links: dx=%1 dz=%2 mm", + "vfe-gefaellebogen-rechts-mass": "\n Gefaellebogen rechts: dx=%1 dz=%2 mm", + "vfe-gefaellebogen-seite-dx": "\n Gefaellebogen %1: dx=%2 mm", + "vfe-hz-incl-status": "\n HzIncl %1 L=%2 hz=%3 v=%4 -> Z=%5", + "vfe-hz-rot-status": "\n HzRot %1 hz=%2 v=%3 -> Z=%4", + "vfe-hz-rotks-status": "\n HzRotKS %1 hz=%2 -> Z=%3", + "vfe-hz-scaleks-status": "\n HzScaleKS %1 %2mm hz=%3 -> Z=%4", + "vfe-ks-fehlt-startpunkt": "\n WARNUNG: KS fehlt in '%1' - verwende Startpunkt", + "vfe-step1-as30": "\n\n1/15: %1 (0 Grad)", + "vfe-step2": "\n\n2/15: Staustrecke 400mm (%1 Grad hz, 3 Grad vert, KS_EIN)", + "vfe-step3": "\n\n3/15: Separator (300mm, %1 Grad hz, 3 Grad vert)", + "vfe-step4": "\n\n4/15: %1 (Anfang, %2 Grad hz, 0 Grad vert, KS_EIN)", + "vfe-step5-strecke": "\n\n5/15: Gefaellestrecke (3 Grad, L=%1 mm)", + "vfe-step7": "\n\n7/15: %1 (3 Grad geneigt)", + "vfe-step8-ab": "\n\n8/15: Gefaellestrecke (%1 Grad, L=%2 mm)", + "vfe-step8-auf": "\n\n8/15: Steigungsstrecke (%1 Grad, L=%2 mm)", + "vfe-tabelle-zeile": "\n %1 %2 mm %3 mm ", + "vfe-tabelle-zeile-fehler": "\n %1 --- --- FEHLER", + "vfl-20m-hinweis": "\n >>> HINWEIS: Foerderer laenger als 20 m (%1 m) - Motorstation empfohlen!", + "vfl-block-erstellt": "\n>>> Block '%1' (%2) erstellt und eingefuegt.", + "vfl-fehler-rest-nicht-baubar": "\n FEHLER: Rest nicht baubar (zu steil/zu kurz fuer Schwanz Motor+GF2+Separator+ES). Bitte weiter zeichnen oder flacher planen.", + "vfl-fuege-block-ein": "\n Fuege %1 ein ...", + "vfl-hinweis-gf2-minimum": "\n HINWEIS: berechnetes GF2=%1 mm < Minimum %2 mm -> auf Minimum angehoben (ES endet dadurch etwas weiter; siehe Ist-Ziel-Report).", + "vfl-horizontale-zwischenstrecke": "\n\nHorizontale Zwischenstrecke (0 Grad, L=%1 mm)", + "vfl-kettenende-modus-ziel": "\n>>> Kettenende-Modus: Ziel dL=%1 mm, dH=%2 mm (%3). GF2 variiert mit dem Winkel.", + "vfl-prompt-hoehe-endpunkt": "\nHoehe (Z) des Endpunkts [%1]: ", + "vfl-prompt-hoehe-kettenende": "\nHoehe (Z) des Kettenendes (ES-Element) [%1]: ", + "vfl-prompt-wahl-bis-n": "\nIhre Wahl (1-%1) [1]: ", + "vfl-segment-gf-nicht-erlaubt": "\n Segment waere GF (zu steil) oder nicht baubar - innerhalb einer VF-Einheit nicht erlaubt.\n Bitte flacher/steigend zeichnen oder Foerderer beenden.", + "vfl-winkel-option": "\n %1 - %2 Grad (L_GF=%3 mm L_VF=%4 mm)", + "vfs-as90-mass": "\n AS_90: dx=%1 dz=%2", + "vfs-berechnung-parameter": "\n△L=%1 mm △H=%2 mm Richtung=%3", + "vfs-block-fehlende-item": "\n - %1", + "vfs-block-fehler-pfad": "\n FEHLER: DXFM_BLOCKS = %1", + "vfs-bogen-ab-block-fehlt": "\n FEHLER ab_%1: Block nicht geladen!", + "vfs-bogen-ab-ks-fehlt": "\n FEHLER ab_%1: KS fehlt!", + "vfs-bogen-ab-ok": "\n OK ab_%1: dx=%2 dz=%3", + "vfs-bogen-auf-block-fehlt": "\n FEHLER auf_%1: Block nicht geladen!", + "vfs-bogen-auf-ks-fehlt": "\n FEHLER auf_%1: KS fehlt!", + "vfs-bogen-auf-ok": "\n OK auf_%1: dx=%2 dz=%3", + "vfs-empfohlener-winkel": "\n>>> Empfohlener Winkel: %1%2", + "vfs-es90-mass": "\n ES_90: dx=%1 dz=%2", + "vfs-fehler-winkel-tabelle": "\n FEHLER: Winkel %1 nicht in Bogen-Tabelle!", + "vfs-schritt-as": "\n\n1/11: %1 (hz=%2%3)", + "vfs-schritt5-bogen1": "\n\n5/11: %1 (3 Grad geneigt)", + "vfs-tabelle-zeile": "\n %1%2 %3 mm %4 mm ", + "vfs-tabelle-zeile-fehler": "\n %1%2 --- --- FEHLER", + "vfs-vf-eingang-gf1": "\n\n[VF-Eingang] Gefaellestrecke GF1 (3 Grad, L=%1 mm)", + "kreisel-abbruch-befehl": "\nBefehl abgebrochen.", + "kreisel-abgebrochen": "\nAbgebrochen.", + "kreisel-connect-erfolgreich": "\nKreisel Connect erfolgreich!", + "kreisel-connect-header": "\n--- Kreisel durch Linie definieren (AN -> SP) ---", + "kreisel-eckrad-beruehrpunkt": "\nBeruehrpunkt Eckrad (Tangente): ", + "kreisel-eckrad-fehler-identisch": "\nFehler: Beruehr- und Richtungspunkt sind identisch!", + "kreisel-eckrad-richtung": "\nRichtung zum Kreismittelpunkt: ", + "kreisel-emsg-kein-block": "Kein Block ausgewaehlt!", + "kreisel-emsg-kein-kreisel-block": "Kein Kreisel-Block! (Attribut ABSTAND fehlt)", + "kreisel-fehler-keine-entities": "\nFehler: Keine Entities zum Block erstellen!", + "kreisel-insert-fertig": "\nKreisel Modul eingefuegt.", + "kreisel-params-attribute-header": "\nAttribute im Block:", + "kreisel-params-header": "\n=== Kreisel Parameter ===", + "kreisel-prompt-basispunkt": "\nBasispunkt (AN-Seite): ", + "kreisel-prompt-block-auswaehlen": "\nKreisel-Block auswaehlen: ", + "kreisel-prompt-endpunkt": "\nEndpunkt (SP-Seite aussen): ", + "kreisel-prompt-rotation": "\nRotation in Grad <0>: ", + "kreisel-prompt-startpunkt": "\nStartpunkt (AN-Seite aussen): ", + "kreisel-quick-fertig": "\nSchnell Einfuegen fertig.", + "kreisel-start-connect": "Kreisel Smart Connect", + "kreisel-start-eckrad": "Eckrad einfuegen", + "kreisel-start-edit": "Kreisel bearbeiten", + "kreisel-start-insert": "Kreisel Modul einfuegen", + "kreisel-start-quick": "Kreisel Schnell Einfuegen", + "kreisel-start-redraw": "Kreisel Neu Zeichnen", + "kreisel-start-script-connect": "Kreisel Script Connect", + "kreisel-start-script-insert": "Kreisel Script Insert", + "kreisel-typ-opt-pin": "\n[2] PIN", + "kreisel-typ-opt-standard": "\n[1] STANDARD (ohne PIN)", + "kreisel-warn-blockpfad": "\n[KreiselInsert] WARNUNG: Block-Pfad nicht ermittelbar!", + "kreisel-warn-core-fehlt": "\n[KreiselInsert] WARNUNG: ssg_core.lsp nicht gefunden - Standardwerte.", + "omni-abbruch": "\nAbgebrochen.", + "omni-abbruch-bogen": "\n[BOGEN] Abgebrochen.", + "omni-abbruch-omni": "\n[OMNI] Abgebrochen.", + "omni-abbruch-weiche": "\n[WEICHE] Abgebrochen.", + "omni-bogen-dialog-ladefehler": "Bogen-Dialog konnte nicht geladen werden.", + "omni-edit-kein-block": "Kein Block ausgewaehlt!", + "omni-edit-kein-element": "Kein Omniflo-Element erkannt! (ARTINR/Blockname nicht im Katalog)", + "omni-edit-prompt-auswahl": "\nOmniflo-Element auswaehlen: ", + "omni-fehler-dxfm-data": "\n[OMNI] FEHLER: DXFM_DATA nicht gesetzt!", + "omni-fehler-dxfm-omniflo": "\n[OMNI] FEHLER: DXFM_OMNIFLO nicht gesetzt!", + "omni-info-bogen-prompt": "\nSivasId des Bogens eingeben: ", + "omni-info-weiche-prompt": "\nSivasId der Weiche eingeben: ", + "omni-insert-keine-attribute": "\n[OMNI] Keine Attribute im Quell-Block gefunden.", + "omni-prompt-drehwinkel": "\nDrehwinkel angeben: ", + "omni-prompt-einfuegepunkt": "\nEinfuegepunkt waehlen: ", + "omni-prompt-endpunkt-fahrstrecke": "\nEndpunkt der Fahrstrecke waehlen: ", + "omni-weiche-dialog-ladefehler": "Weichen-Dialog konnte nicht geladen werden.", + "prompt-wahl-1-2-3-4": "\nIhre Wahl (1/2/3/4) [1]: ", + "vfc-alert-keine-gueltige-linie": "Keine gueltige Linie ausgewaehlt!", + "vfc-bitte-3dlinie-foerderstrecke": "\nBitte 3D-Linie fuer die Foerderstrecke auswaehlen:", + "vfc-bks-weltkoordinaten": "\n BKS auf Weltkoordinaten gesetzt.", + "vfc-eingabemodus-3dlinie": "\n 1 - 3D-Linie auswaehlen (Start- und Endpunkt mit Hoehe)", + "vfc-eingabemodus-header": "\n\nEingabemodus waehlen:", + "vfc-eingabemodus-werte": "\n 2 - Werte manuell eingeben", + "vfc-fahrtrichtung-0": "\n 1 - 0%1 (X-Achse +, Ost)", + "vfc-fahrtrichtung-180": "\n 3 - 180%1 (X-Achse -, West)", + "vfc-fahrtrichtung-270": "\n 4 - 270%1 (Y-Achse -, Sued)", + "vfc-fahrtrichtung-90": "\n 2 - 90%1 (Y-Achse +, Nord)", + "vfc-fahrtrichtung-header": "\n\nFahrtrichtung waehlen:", + "vfc-fehler-keine-linie": "\n FEHLER: Keine Linie oder Polylinie ausgewaehlt!", + "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: ", + "vfc-modus-3dlinie-fallback": "Linie", + "vfc-modus-3dlinie-header": "\n\n>>> MODUS: 3D-Linie auswaehlen <<<", + "vfc-modus-werteingabe-header": "\n\n>>> MODUS: Manuelle Werteingabe <<<", + "vfc-objekt-block-waehlen": "\n >> Objekt (Block) waehlen: ", + "vfc-prompt-delta-h": "\n%1H - Hoehenunterschied (mm): ", + "vfc-prompt-delta-l": "\n%1L - Horizontale Distanz (mm): ", + "vfc-prompt-startpunkt-aus": "\nStartpunkt fuer AUS_Element waehlen: ", + "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.", + "vfs-dlg-richtung-auf": "Auf", + "vfs-dlg-richtung-ab": "Ab", + "vfs-dlg-winkel-horizontal": "Horizontal (GF=%1 mm, VF=%2 mm)", + "vfs-dlg-winkel-option": "%1%2 (GF=%3 mm, VF=%4 mm)", + "vfs-dlg-verteilung-1": "Gleichmaessig (L_GF1 = L_GF2 = L_GF/2)", + "vfs-dlg-verteilung-2": "Vorne Minimum, hinten Rest", + "vfs-dlg-verteilung-3": "Hinten Minimum, vorne Rest", + "vfs-dlg-verteilung-4": "Eigene Werte eingeben", + "vfs-edit-kein-vf": "Block %1 ist keine VarioFoerderer-Strecke.", + "vfs-edit-keine-xdata": "VarioFoerderer %1 wurde nicht mit diesem Dialog erstellt (Etage/Linienzug/Altbestand) und kann hier nicht bearbeitet werden.", + "vfs-edit-neu-aufgebaut": "\nVarioFoerderer %1 neu aufgebaut.", + "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.", + "vfe-bib-init-erfolg": "\n Etage-Bibliothek erfolgreich initialisiert.", + "vfe-bib-initialisiere": "\n Initialisiere Etage-Bibliothek...", + "vfe-ergebnistabelle-header": "\n ERGEBNISTABELLE (L_GF = gesamt beider GF-Strecken)", + "vfe-extrahiere-as30": "\n Extrahiere AS_30_rechts Masse...", + "vfe-extrahiere-es30": "\n Extrahiere ES_30_rechts Masse...", + "vfe-kein-winkel-gefunden": "\n>>> KEIN passender Winkel gefunden!", + "vfe-status-gueltig": "GUELTIG", + "vfe-status-ungueltig": "UNGUELTIG (negative Laenge)", + "vfe-step5-skip": "\n\n5/15: L_GF1 (uebersprungen)", + "vfe-step6": "\n\n6/15: Umlenkstation (500mm, 3 Grad geneigt)", + "vfe-step8-skip": "\n\n8/15: L_VF (uebersprungen)", + "vfe-tabelle-spalten": "\n Winkel L_GF (mm) L_VF (mm) Status", + "vfe-warn-block-as30-fehlt": "\n WARNUNG: Block AS_Element_30_rechts fehlt - Standardwerte", + "vfe-warn-block-es30-fehlt": "\n WARNUNG: Block ES_Element_30_rechts fehlt - Standardwerte", + "vfe-warn-block-fehlt-links": "\n WARNUNG: Block fehlt - Standardwerte (links)", + "vfe-warn-block-fehlt-rechts": "\n WARNUNG: Block fehlt - Standardwerte (rechts)", + "vfe-warn-kein-ks-links": "\n WARNUNG: kein KS - Standardwerte (links)", + "vfe-warn-kein-ks-rechts": "\n WARNUNG: kein KS - Standardwerte (rechts)", + "vfe-warn-ks-fehlt-standard": "\n WARNUNG: KS fehlt - Standardwerte", + "vfe-warn-lisp-pfad": "\n[vf_etage] WARNUNG: Lisp-Pfad nicht ermittelbar - vf_core.lsp nicht ladbar!", + "vfl-abgebrochen-kein-ziel": "\n Abgebrochen - kein Zielpunkt gewaehlt.", + "vfl-bogen-ab3-uebergang": "\n\nVario_Bogen_ab_3 (Uebergang horizontal -> 3 Grad)", + "vfl-bogen-auf3-uebergang": "\n\nVario_Bogen_auf_3 (Uebergang 3 Grad -> horizontal)", + "vfl-gf-verteilung-ganz-einlauf": "\n 2 - Gesamte Staustrecke am Einlauf (GF1), kein GF2", + "vfl-gf-verteilung-haelfte": "\n 1 - 1/2GF am Ausgang (GF2), 1/2GF am Einlauf (GF1)", + "vfl-gf-verteilung-header": "\n\nStaustrecke (GF) - Verteilung waehlen:", + "vfl-ist-endpunkt-frage": "\n\nIst der Endpunkt der Foerderer?", + "vfl-ist-kettenende-frage": "\n\nIst das das Kettenende (ES-Element)?", + "vfl-ja-motorstation-kettenende": "\n 3 - Ja (Motorstation setzen, Kettenende definieren)", + "vfl-ja-nur-motorstation": "\n 1 - Ja (nur Motorstation setzen)", + "vfl-ja-separator-es": "\n 1 - Ja (Separator + ES-Element setzen)", + "vfl-linie-zu-kurz-simple": "\n Linie zu kurz - uebersprungen.", + "vfl-linie-zu-kurz-uebersprungen": "\n Linie zu kurz (oder entgegen der Fahrtrichtung) - uebersprungen.", + "vfl-mehrere-winkel-header": "\n\nMehrere gueltige Winkel - bitte gewuenschten Winkel waehlen:", + "vfl-modus1-beschreibung": "\nGemischte Gefaellestrecke/VarioFoerderer-Kette entlang eines frei", + "vfl-modus1-header": "\n VF-LINIENZUG - Modus 1: Manuelle Eingabe", + "vfl-naechstes-element-vf": "\n\nNaechstes Element im VarioFoerderer:", + "vfl-nein-weiterbauen": "\n 2 - Nein (weiterbauen)", + "vfl-opt-auf-ab-foerderer": "\n 3 - Auf/Ab-Foerderer (Linie mit Hoehendifferenz)", + "vfl-opt-horizontaler-foerderer": "\n 1 - Horizontaler Foerderer (Linie ohne Hoehendifferenz)", + "vfl-opt-vario-kurve": "\n 2 - Vario-Kurve (30/60/90 Grad)", + "vfl-prompt-wahl-1-2-def2": "\nIhre Wahl (1/2) [2]: ", + "vfl-prompt-wahl-1-3-def2": "\nIhre Wahl (1/2/3) [2]: ", + "vfl-prompt-wahl-1-3-def3": "\nIhre Wahl (1/2/3) [3]: ", + "vfl-sep-horizontal-info": "\n [horizontal] Separator (300 mm, 0 Grad)", + "vfs-berechnung-header": "\n BERECHNUNG FUER ALLE WINKEL (Standard)", + "vfs-block-fehlende-header": "\n Folgende Block-Dateien fehlen:", + "vfs-ergebnistabelle-header": "\n ERGEBNISTABELLE", + "vfs-extrahiere-aus": "\n Extrahiere AUS_Element Masse...", + "vfs-extrahiere-bogen": "\n Extrahiere Bogen-Masse...", + "vfs-extrahiere-ein": "\n Extrahiere EIN_Element Masse...", + "vfs-fehler-block-as90": "\n FEHLER: Block AS_Element_90_links nicht geladen!", + "vfs-fehler-block-es90": "\n FEHLER: Block ES_Element_90_links nicht geladen!", + "vfs-fehler-ks-as90": "\n FEHLER: KS_EIN/KS_AUS fehlt im AS_90!", + "vfs-fehler-ks-es90": "\n FEHLER: KS_EIN/KS_AUS fehlt im ES_90!", + "vfs-fehler-lib-nicht-init": "\n FEHLER: Bibliothek nicht korrekt initialisiert (AUS/EIN-Masse fehlen)!", + "vfs-kein-winkel-gefunden": "\n>>> KEIN passender Winkel gefunden!", + "vfs-lib-bereits-init": "\n Standard-Bibliothek bereits initialisiert.", + "vfs-lib-init-erfolg": "\n Standard-Bibliothek erfolgreich initialisiert.", + "vfs-lib-init-start": "\n Initialisiere Standard-Bibliothek...", + "vfs-status-gueltig": "GUELTIG", + "vfs-status-ungueltig": "UNGUELTIG (negative Laenge)", + "vfs-tabelle-spalten": "\n Winkel L_GF (mm) L_VF (mm) Status", + "vfs-vf-eingang-gf1-skip": "\n\n[VF-Eingang] Gefaellestrecke GF1 (uebersprungen)", + "vfs-vf-eingang-separator": "\n[VF-Eingang] Separator (300 mm, 3 Grad geneigt)", + "vfs-vf-eingang-umlenk": "\n[VF-Eingang] Umlenkstation (500 mm, 3 Grad geneigt)", + "vfs-warn-lisppfad": "\n[vf_standard] WARNUNG: Lisp-Pfad nicht ermittelbar - vf_core.lsp nicht ladbar!", + "dim-switch-modus": "\nModus umgeschaltet auf: %1", + "dim-switch-blocks": "\n DXFM_BLOCKS = %1", + "dim-switch-omniflo": "\n DXFM_OMNIFLO = %1", + "dim-batch-fertig": "\nUmwandlung auf %1 abgeschlossen: %2 GF, %3 VF neu aufgebaut (%4 bereits in Zieldimension).", + "sprache-gewechselt": "\nSprache umgeschaltet auf: %1", + "cmd-block-auswaehlen": "\nBlock auswaehlen: ", + "cmd-kein-block-ausgewaehlt": "\nKein Block ausgewaehlt.", + "cmd-kreisel-bearbeiten": "\nKreisel bearbeiten: %1", + "cmd-eckrad-bearbeiten": "\nEckrad bearbeiten: %1", + "cmd-gefaelle-bearbeiten": "\nGefaellestrecke bearbeiten: %1", + "cmd-variofoerderer-bearbeiten": "\nVarioFoerderer bearbeiten: %1", + "gf-edit-kein-gf": "Block %1 ist keine Gefaellestrecke.", + "gf-edit-nur-einfach": "Nur einfache Gefaellestrecken (ohne Bogen) koennen ueber den Dialog bearbeitet werden.\nTYP: %1", + "gf-edit-neu-aufgebaut": "\nGefaellestrecke %1 neu aufgebaut.", + "gf-vf-modul-fehlt": "VarioFoerderer-Modul nicht geladen!", + "gf-vf-gebaut": "\n-> Paralleler VarioFoerderer gebaut (2000 mm neben der Gefaellestrecke, gegenlaeufig, steigend).", + "cmd-omniflo-bearbeiten": "\nOmniflo Element bearbeiten: %1", + "cmd-attribute-bearbeiten": "\nAttribute bearbeiten: %1", + "ils-station-prompt-punkt": "\nEinfuegepunkt fuer %1 [ENTER=Ende]: ", + "ils-station-fehler-blockdatei": "\n>>> FEHLER: Blockdatei '%1.dwg' nicht gefunden (data/ils pruefen).", + "ils-station-fertig": "\n>>> %1 x %2 eingefuegt.", + "layer-prompt-ziel-layer": "\nObjekt auf dem Ziel-Layer waehlen: ", + "layer-prompt-objekt": "\nObjekt waehlen: ", + "layer-prompt-referenz-objekt": "\nReferenz-Objekt waehlen (bestimmt Typ und Layer): ", + "layer-prompt-typ-ermittlung": "\nNochmals fuer Typ-Ermittlung anklicken: ", + "layer-prompt-ausblenden": "\nLayer zum Ausblenden anklicken (Enter=Ende): ", + "layer-prompt-einfrieren": "\nLayer zum Einfrieren anklicken (Enter=Ende): ", + "layer-prompt-aktiv-bleibt": "\nObjekt auf dem Layer waehlen, der AKTIV bleibt: ", + "layer-prompt-name-loeschen": "\nLayername zum Loeschen: ", + "layer-err-kein-objekt": "Kein Objekt gewaehlt.", + "layer-err-kein-ziel-layer": "Kein Ziel-Layer gewaehlt.", + "layer-err-kein-ziel-layer-kurz": "Kein Ziel-Layer.", + "layer-err-keine-passenden-objekte": "Keine passenden Objekte gefunden.", + "layer-abgebrochen": "Abgebrochen.", + "layer-err-kein-referenz-objekt": "Kein Referenz-Objekt gewaehlt.", + "layer-err-aktiv-nicht-ausschalten": "Aktiven Layer nicht ausschalten!", + "layer-err-aktiv-nicht-einfrieren": "Aktiven Layer nicht einfrieren!", + "layer-aktiver-layer": "\nAktiver Layer: %1", + "layer-objekt-auf-layer": "\nObjekt liegt auf Layer: %1", + "layer-nur-layer-sichtbar": "\nNur Layer '%1' ist sichtbar.", + "layer-geloescht": "\nLayer '%1' geloescht.", + "layer-leerer-geloescht": "\nLeerer Layer '%1' geloescht.", + "layer-existiert-nicht": "Layer '%1' existiert nicht.", + "layer-ques-typ-wechseln": "Layer dieser %1-Objekte wechseln?", + "layer-ques-alle-loeschen": "Alle Objekte auf Layer '%1' loeschen?", + "core-start-titel": "\n***** %1 *****\n", + "core-errhan-fehler": "\nFehler: ", + "core-blockname-exists": "Blockname '%1' existiert bereits - wird uebersprungen.", + "core-dwg-not-found": "\nFEHLER: Block nicht gefunden: %1", + "exp-cfg-not-found": "\n[export] WARNUNG: %1 nicht gefunden/leer, verwende Vorgaben.", + "exp-check-ids": "\n[%1] Pruefe und vergebe IDs...", + "exp-update-hoehe-drehung": "\n[%1] Aktualisiere Hoehe/Drehung...", + "exp-collect-blocks": "\n[%1] Sammle relevante Bloecke...", + "exp-no-blocks-found": "\n[%1] Keine relevanten Bloecke gefunden.", + "exp-blocks-found": "\n[%1] %2 Bloecke gefunden.", + "exp-output-dir": "\n[%1] Ausgabeordner: %2", + "exp-file-open-error": "\n[%1] FEHLER: Kann Datei nicht oeffnen: %2", + "exp-json-written": "\n[%1] JSON geschrieben: %2", + "exp-calling-python": "\n[%1] Rufe Python auf...", + "exp-export-started": "\n[%1] Export gestartet: %2", + "exp-dxfm-lib-missing": "\n[%1] FEHLER: Umgebungsvariable DXFM_LIB ist nicht gesetzt - BricsCAD wurde vermutlich nicht ueber bin/start_briscad.bat gestartet. CSV/JSON wurden geschrieben, der Python-Aufruf entfaellt.", + "exp-python-not-found": "\n[%1] FEHLER: Python-Skript nicht gefunden: %2", + "exp-python-exe": "\n[%1] Interpreter: %2", + "exp-export-done": "\n[%1] Export fertig: %2", + "exp-python-call-failed": "\n[%1] FEHLER: Python konnte nicht gestartet werden (WScript.Shell nicht verfuegbar).", + "exp-python-error": "\n[%1] FEHLER: Python endete mit Exitcode %2. Log: %3", + "exp-python-store-hint": "\n HINWEIS: Es wurde kein echter Python-Interpreter gefunden ('python' zeigt\n unter Windows 11 auf den WindowsApps-Platzhalter). Loesung: bin/install_py.bat\n ausfuehren (legt .venv an) und BricsCAD ueber bin/start_briscad.bat neu\n starten, oder in cfg/export.cfg unter [python] interpreter= den vollen Pfad\n zur python.exe setzen.", + "exp-csv-missing": "\n[%1] FEHLER: Python meldete Erfolg, aber die CSV fehlt: %2. Log: %3", + "exp-omni-no-inserts": "\n[OMNI_UPDATE] Keine INSERT-Bloecke in der Zeichnung.", + "exp-omni-updated": "\n[OMNI_UPDATE] %1 Elemente aktualisiert (HOEHE, DREHUNG).", + "id-new-assigned": "\n[ID] Neue ID zugewiesen: %1", + "id-invalid-block": "\n[ID] FEHLER: Kein gueltiger INSERT-Block!", + "id-check-no-blocks": "\n[IDSCHECK] Keine relevanten Bloecke gefunden.", + "id-check-missing-set": "\n[IDSCHECK] Fehlende ID gesetzt: %1 (Block %2)", + "id-check-duplicate": "\n[IDSCHECK] Duplikat ID %1 -> neue ID %2 (Block %3)", + "id-check-done": "\n[IDSCHECK] Fertig. %1 Duplikate korrigiert.", + "id-check-corrected": "\n[IDSCHECK] %1 IDs korrigiert.", + "id-select-block-prompt": "\nBlock waehlen: ", + "id-generate-invalid": "\n[IDGENERATE] Kein gueltiger Block gewaehlt.", + "dialog-nicht-verfuegbar": "Dialog nicht verfuegbar.", + "dialog-einfuegepunkt-waehlen": "\nEinfuegepunkt waehlen: ", + "extcall-python-rueckgabe": "\n[SSG_LIB] Python Rueckgabe: %1", + "extcall-keine-rueckgabe": "\n[SSG_LIB] WARNUNG: Keine Rueckgabe von Python erhalten.", + "extcall-skript-nicht-gefunden": "\n[SSG_LIB] FEHLER: %1 nicht gefunden!", + "vfstart-core-nicht-gefunden": "\n[VarioFoerderer] WARNUNG: vf_core.lsp nicht gefunden - Befehle nicht verfuegbar.", + "vfstart-etage-core-nicht-gefunden": "\n[EtageVarioFoerderer] WARNUNG: vf_core.lsp nicht gefunden - Befehle nicht verfuegbar.", + "gf-seite-aus-header": "\n\nAUS-Element (AS_Element_*) - Seite waehlen:", + "gf-seite-ein-header": "\n\nEIN-Element (ES_Element_*) - Seite waehlen:", + "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]: ", + "geruest-typ-header": "\n\nGeruestoption waehlen:", + "geruest-typ-opt": "\n %1 - %2", + "geruest-typ-prompt": "\nGeruestoption (1-4) [%1]: ", + "kreisel-eckrad-geruest-frage": "Geruest fuer Einzelmodul?", + "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-alert-dialog-fehlt": "Dialog-Datei nicht gefunden:\n%1", + "gf-dlg-richtung-0": "0%1 (X+, Ost)", + "gf-dlg-richtung-90": "90%1 (Y+, Nord)", + "gf-dlg-richtung-180": "180%1 (X-, West)", + "gf-dlg-richtung-270": "270%1 (Y-, Sued)", + "gf-dlg-links": "Links", + "gf-dlg-rechts": "Rechts", + "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 : ", + "tefl-fehler-dxfm-omniflo": "\n[TEF] FEHLER: DXFM_OMNIFLO nicht gesetzt (bin/setenv.bat ausfuehren).", + "tefl-fehler-dxf-nicht-gefunden": "\n[TEF] FEHLER: Element-DXF nicht gefunden: %1", + "tefl-prompt-startpunkt": "\nStartpunkt der Foerderstrecke waehlen: ", + "tefl-prompt-endpunkt": "\nEndpunkt der Foerderstrecke waehlen: ", + "tefl-abgebrochen": "\n[TEF] Abgebrochen.", + "tefl-fehler-laenge-null": "\n[TEF] FEHLER: Start- und Endpunkt liegen zu nah beieinander.", + "tefl-fertig": "\n[TEF] %1 Element(e) eingefuegt, Streckenlaenge=%2 mm.", + "vfl-kette-titel": "\n Vario_Kette_Merge - mehrere Vario-Foerderer-Bausteine (einzeln oder bereits gewickelt) zu einem Gesamt-Block verschmelzen", + "vfl-kette-start-waehlen": "\n\nStart-Baustein der Kette waehlen (erstes Element - AS-Element oder VF_n): ", + "vfl-kette-kein-objekt": "\nKein Objekt gewaehlt - Abbruch.", + "vfl-kette-kein-vf-block": "\nGewaehltes Objekt ('%1') ist kein bekannter Vario-Kette-Baustein (AS-/ES-Element, GF-Bogen, Vario-Kurve, Umlenk-/Motorstation, Vertikalbogen, Staustrecke/Separator oder VF_n).", + "vfl-kette-start-nicht-gefunden": "\nFEHLER: Start-Baustein nicht in der Ketten-Erfassung gefunden (interner Fehler).", + "vfl-kette-start-nicht-gefunden-diag": "\nFEHLER: Start-Baustein nicht in der Ketten-Erfassung gefunden (interner Fehler).\n Diagnose: %1 Bausteine insgesamt erfasst, gewaehlter Blockname='%2', davon %3 mit gleichem Blocknamen erfasst.", + "vfl-kette-start-ohne-ks-ein": "\nFEHLER: Am gewaehlten Baustein konnte kein KS_EIN gefunden werden - Kette kann nicht verfolgt werden.", + "vfl-kette-nur-ein-baustein": "\nAb dem gewaehlten Baustein wurde kein weiterer angeschlossener VF_n-Baustein gefunden - nichts zum Zusammenfuehren.", + "vfl-kette-gefunden": "\n\nKette erkannt: %1 Baustein(e) werden zusammengefuehrt:", + "vfl-kette-luecke-warnung": "\n\n WARNUNG: Nach '%1' wurde ein visuell nahes, aber nicht sauber verbundenes VF_n ('%2') gefunden (KS-Abstand %3 mm) - Kette wurde dort beendet, dieser und alle weiteren Bausteine bleiben unangetastet.", + "vfl-kette-fertig": "\n\n>>> Fertig: neuer Gesamt-Block '%1' aus %2 Baustein(en) erstellt.", + "cmd-tro-bearbeiten": "\nTRO-Marker bearbeiten: %1", + "cmd-connection-bearbeiten": "\nVerbindung bearbeiten: %1", + "con-keine-verbindung": "Block %1 ist keine Verbindung (erwartet CONNECTION_*).", + "con-kein-tro": "Block %1 ist kein TRO-Marker - Verbindungen gehen nur zwischen TROs.", + "con-block-fehlt": "Blockdefinition %1 fehlt in dieser Zeichnung.\nZuerst tro_annotate.py mit --flow laufen lassen.", + "con-quelle-waehlen": "\nQuell-TRO waehlen: ", + "con-ziel-waehlen": "\nZiel-TRO waehlen: ", + "con-gleicher-block": "Quelle und Ziel sind derselbe Block.", + "con-gleicher-punkt": "Quelle und Ziel liegen an derselben Stelle.", + "con-dialog-fehlt": "Dialogdatei nicht gefunden:\n%1\nDXFM_DCL pruefen (setenv.bat).", + "con-block": "Block: %1 (UID %2)", + "con-richtung": "Richtung: %1 ----> %2", + "con-hinweis": "Die UID ist dauerhaft, die TRO-Kennung darf sich aendern.", + "con-id-leer": "Quell- und Ziel-UID duerfen nicht leer sein - nichts geaendert.", + "con-gleiche-id": "Quelle und Ziel duerfen nicht dieselbe UID haben.", + "con-eingefuegt": "\nVerbindung %1 ----> %2 eingefuegt (UID %3).", + "con-gespeichert": "\nVerbindung gespeichert: %1 ----> %2", + "tro-edit-kein-tro": "Block %1 ist kein TRO-Marker (erwartet TRO_*).", + "tro-edit-kein-id-attribut": "Block %1 hat kein Attribut ID - bitte neu beschriften lassen (tro_annotate.py).", + "tro-edit-dialog-fehlt": "Dialogdatei nicht gefunden:\n%1\nDXFM_DCL pruefen (setenv.bat).", + "tro-edit-modul-fehlt": "%1 nicht geladen - Attribute werden mit EATTEDIT bearbeitet.", + "tro-edit-block": "Block: %1", + "tro-edit-fb": "Funktionsbaustein: %1 UID: %2", + "tro-edit-hinweis": "Symbol und FB folgen erst beim naechsten Lauf von tro_annotate.py.", + "tro-edit-id-leer": "Die TRO-Kennung darf nicht leer sein - nichts geaendert.", + "tro-edit-gespeichert": "\nTRO gespeichert: ID = %1, TYP = %2", + "tro-edit-typ-geaendert": "\nTyp geaendert - tro_annotate.py neu laufen lassen, damit Symbol und FB passen.", + "tro-insert-kein-typ": "Keine TRO-Typen verfuegbar (tro_types.lsp fehlt) - bitte lib/tro_annotate.py --emit-lisp ausfuehren.", + "tro-insert-hinweis": "Die Blockform muss bereits in der Zeichnung vorhanden sein (aus einem frueheren Lauf von tro_annotate.py).", + "tro-insert-kein-block": "Kein Symbol fuer diesen Typ in der Zeichnung (%1) - bitte tro_annotate.py mit diesem Typ laufen lassen.", + "tro-insert-prompt-punkt": "\nEinfuegepunkt: ", + "tro-insert-eingefuegt": "\nTRO eingefuegt: ID = %1, TYP = %2" + } } diff --git a/lang/en_GB.json b/lang/en_GB.json index 6fbea5a..2ce45ec 100644 --- a/lang/en_GB.json +++ b/lang/en_GB.json @@ -1,672 +1,688 @@ { - "texts": { - "omni-alle-winkel": "all angles", - "omni-grad": " deg", - "omni-bogen-keine-gefunden": "No arcs found for %1%2.", - "omni-weiche-keine-gefunden": "No switches found for %1%2.", - "vfc-ursprung": "Origin", - "vfc-block-eingefuegt-xyzref-ksaus": "\n '%1' inserted (XY:%2 Z:%3)\n KS_AUS: X=%4 Y=%5 Z=%6", - "vfl-ja": "\n 1 - Yes", - "vfl-nein": "\n 2 - No", - "vfl-sep-vor-frage": "\n\nInsert additional separator BEFORE the horizontal section?", - "vfl-sep-nach-frage": "\n\nInsert additional separator AFTER the horizontal section?", - "vfl-sep-an-stelle-frage": "\n\nInsert additional separator at this point?", - "vf-winkel-aus-header": "\n\nOutput element (AS_Element) - choose angle:", - "vf-winkel-ein-header": "\n\nInput element (ES_Element) - choose angle:", - "vf-winkel-90": "\n 1 - 90 deg", - "vf-winkel-30": "\n 2 - 30 deg", - "vfl-gf-bogen-winkel-header": "\n\nGF arc - choose angle:", - "vfl-gf-bogen-seite-header": "\nGF arc - choose side:", - "vfl-winkel-30": "\n 1 - 30 deg", - "vfl-winkel-60": "\n 2 - 60 deg", - "vfl-winkel-90": "\n 3 - 90 deg", - "vfl-variokurve-winkel-header": "\n\nVario curve - choose angle:", - "vfl-opt1-90grad": "\n 1 - 90 deg", - "vfl-opt2-60grad": "\n 2 - 60 deg", - "vfl-opt3-30grad": "\n 3 - 30 deg", - "vfl-prompt-wahl-1-3-def1": "\nYour choice (1/2/3) [1]: ", - "vfl-variokurve-seite-header": "\nVario curve - choose side:", - "vfl-variokurve-variante-header": "\nVario curve - choose variant:", - "vfl-variante-aussen": "\n 1 - Outer", - "vfl-variante-innen": "\n 2 - Inner", - "vfl-ist-ziel-vergleich-header": "\n\n>>> ACTUAL-TARGET COMPARISON (ES element):", - "vfl-soll-xyz": "\n Target: X=%1 Y=%2 Z=%3", - "vfl-ist-xyz": "\n Actual: X=%1 Y=%2 Z=%3", - "vfl-abweichung-xyz": "\n Deviation: dX=%1 dY=%2 dZ=%3 mm", - "vfl-m3-titel": "\n VF LINE PATH - Mode 2: path + target height (finished; anchors + solver + build)", - "vfl-m3-alert-gf-modul": "Gefaellestrecke module not loaded!", - "vfl-m3-pfad-waehlen": "\n\nSelect path objects (lines/arcs):", - "vfl-m3-keine-objekte": "\nNo objects selected - aborting.", - "vfl-m3-prompt-startpunkt": "\n\nSelect chain start point (higher side): ", - "vfl-prompt-hoehe-startpunkt": "\nHeight (Z) of the start point [%1]: ", - "vfl-m3-prompt-endpunkt": "\n\nSelect chain end point (target): ", - "vfl-m3-prompt-zielhoehe": "\nTarget height (Z) of the end point [%1]: ", - "vfl-m3-fehler-nicht-sortierbar": "\nERROR: path cannot be sorted (is it connected without gaps?).", - "vfl-m3-alert-eckwinkel": "No matching arc: corner angle %1 deg is not ~30/60/90.\nPlease adjust the angles.", - "vfl-m3-seg-gerade": "\n\nSegment %1/%2: straight L=%3 mm hz=%4", - "vfl-m3-auto-vf": "\n (automatic VF - segment follows directly after a Vario curve)", - "vfl-m3-typ-gerade": "\n Type? 1 = GF (input angle) 2 = VF (bridge)", - "vfl-m3-prompt-gf-neigung": "\n GF slope in degrees [3]: ", - "vfl-m3-hinweis-gf-max": "\n Note: GF max. 3 deg - limited to 3.", - "vfl-m3-seg-bogen": "\n\nSegment %1/%2: corner/arc %3 deg %4", - "vfl-m3-typ-bogen": "\n Type? 1 = GF arc 2 = Vario curve", - "vfl-m3-variante-frage": "\n Vario curve - variant? 1 = Outer 2 = Inner", - "vfl-m3-vf-laeufe": "\n\n[M3a] VF runs found: %1", - "vfl-m3-vf-lauf-noetig": "\n[M3a] Exactly ONE VF run required (GF...VF...GF; Vario curves may lie within the run).", - "vfl-m3-vf-lauf-m3b": "\n[M3a] Several/no VF runs -> M3b later.", - "vfl-m3-vf-lauf-ohne-gerade": "\n[M3a] VF run without a VF straight - aborting.", - "vfl-m3-anker-vorschau-header": "\n M3a ANCHOR PREVIEW (rough estimate; exact values during build)", - "vfl-m3-start-hoehe": "\n Start height Z: %1 mm", - "vfl-m3-ziel-hoehe": "\n Target height Z: %1 mm", - "vfl-m3-delta-h-gesamt": "\n delta-H total: %1 mm (positive = descent)", - "vfl-m3-vf-lauf-segmente": "\n VF run: segment %1..%2", - "vfl-m3-front-anker-vorschau": "\n Front anchor Z: %1 mm (forward from AS)", - "vfl-m3-junction-anker-vorschau": "\n Junction anchor Z: %1 mm (backward from ES)", - "vfl-m3-richtung-auf": "up (rising)", - "vfl-m3-richtung-ab": "down (falling)", - "vfl-m3-richtung-horizontal": "horizontal", - "vfl-m3-richtung-auf-kurz": "Up", - "vfl-m3-richtung-ab-kurz": "Down", - "vfl-m3-bruecke-dh": "\n --> Bridge: delta-H = %1 mm over span %2 mm", - "vfl-m3-bruecke-richtung": "\n Direction: VF-%1", - "vfl-m3-vf-angetrieben": "\n (VF is powered - can RISE and FALL; sign = up/down only)", - "vfl-m3-mittlere-neigung": "\n rough mean slope over span: ~%1 deg", - "vfl-m3-warnung-zu-steil": "\n WARNING: ~slope > 51 deg -> too steep for Vario (magnitude infeasible).", - "vfl-m3-vario-bereich-ok": "\n -> within Vario range (3..51 deg), rough orientation.", - "vfl-m3-anker-hinweis": "\n (anchors above = rough preview; exact values are MEASURED during build)", - "vfl-m3-phase-b1": "\n\n>>> Phase B1: building front run (AS + GF) ...", - "vfl-m3-alert-beginnt-bogen": "Chain starts with an arc - please begin with a straight.", - "vfl-m3-kurve-front-uebersprungen": "\n >>> [M3a] Vario curve in front run - skipped.", - "vfl-m3-standard-vario-header": "\n\n --- STANDARD VARIO (climbing segment) + flat zone ---", - "vfl-m3-front-anker-gemessen": "\n Front anchor (measured): %1 mm", - "vfl-m3-junction-exakt": "\n Junction (exact): %1 mm", - "vfl-m3-kletter-info": "\n Climb height %1 mm | climbers %2 | curves %3 | short VF %4", - "vfl-m3-kein-winkel": "\n NO matching Vario angle -> infeasible (front already built).", - "vfl-m3-gf-verteilung": "\n\n GF distribution: 1 - all at inlet (GF1) 2 - 1/2 GF1 + 1/2 GF2", - "vfl-m3-vert-halb": "1/2 GF1 + 1/2 GF2", - "vfl-m3-vert-ganz": "all GF1", - "vfl-m3-vario-ergebnis": "\n -> Vario %1 (%2), L_VF %3 mm, GF total %4 mm, distribution %5 (GF2 remainder = measured fine correction)", - "vfl-m3-warnung-gf2-negativ": "\n WARNING: body climbs too little - GF2<0 (missing %1 mm). Angle too shallow; dZ not exact.", - "vfl-m3-gf2-ausgleich": "\n GF2 (measured compensation): L=%1 mm", - "vfl-m3-kurve-back-uebersprungen": "\n >>> [M3a] Vario curve in back run - skipped.", - "vfl-m3-nichts-gebaut": "\nNothing built - aborting.", - "vfl-m3-fertig-header": "\n>>> VF line path (mode 2) built! <<<", - "vfl-m3-ziel-soll": "\n Target (nominal): X=%1 Y=%2 Z=%3", - "vfl-m3-es-ist": "\n ES (actual): X=%1 Y=%2 Z=%3", - "vfl-m3-abweichung": "\n Deviation: dX=%1 dY=%2 dZ=%3 mm", - "vfl-m3-laengs-quer": "\n Along KS_AUS axis: %1 mm | across axis (should be ~0): %2 mm", - "vfl-m3-achse-hinweis": "\n (dZ=target height; across KS_AUS axis ~0 => end point lies on the axis)", - "gf-fehler-block-fehlt": "\n ERROR: block '%1' missing", - "gf-fehler-block-fehlt-ausruf": "\n ERROR: block '%1' missing!", - "gf-fehler-blockdatei-fehlt": "\n ERROR: block file not found: %1", - "gf-fehler-keine-linie": "\n Error: no line!", - "gf-laenge-null-uebersprungen": "\n (length 0 - skipped)", - "gf-prompt-linie-waehlen": "\n >> Select line: ", - "gf-status-3dlinie-z": "\n 3D line: Z_start=%1 Z_end=%2", - "gf-status-block-l-z": "\n %1 L=%2 -> Z=%3", - "gf-status-bogen-masse": "\n %1: dx=%2 dz=%3", - "gf-status-gefaellebogen": "\n Slope arc %1 hz=%2%3 -> Z=%4", - "gf-status-hzincl": "\n HzIncl %1 L=%2 hz=%3%4 v=%5%6 -> Z=%7", - "gf-status-hzks": "\n HzKS %1 hz=%2%3 v=%4%5 -> Z=%6", - "gf-status-ks-aus-z": "\n KS_AUS Z=%1", - "gf-warnung-block-fehlt-nullwerte": "\n WARNING: %1 missing - using zero values", - "gf-warnung-ks-fehlt": "\n WARNING: KS_EIN/KS_AUS missing!", - "gf-warnung-ks-fehlt-in": "\n WARNING: KS missing in '%1'", - "gf-warnung-ks-fehlt-in2": "\n WARNING: KS missing in %1", - "kreisel-abstand-ausgabe": "\n-> Distance: %1 mm", - "kreisel-beschriftung-erzeugt": "\n-> Label: %1 (height=%2mm, Arial, centered)", - "kreisel-bestehende-blockdef": "\n-> Using existing block definition: %1", - "kreisel-connect-zusammenfassung": "\n-> Distance: %1 mm Rotation: %2 deg Height: %3 Kreisel type: %4", - "kreisel-eckrad-eingefuegt": "\n-> Eckrad #%1 inserted: %2 at %3,%4 rotation=%5 height=%6", - "kreisel-edit-aktualisiert": "\nKreisel updated: Name=%1 Distance=%2 Height=%3 Rotation=%4", - "kreisel-edit-bestehend": "\n-> Existing: Distance=%1 Rotation=%2 Type=%3", - "kreisel-edit-dialog-fehlt": "Dialog not available: %1", - "kreisel-eingefuegt": "\n-> Kreisel #%1 inserted: %2 (height=%3)", - "kreisel-emsg-distanz-klein": "Distance too small! (%1 < %2)", - "kreisel-hoehe-aus-3dpunkt": "\n-> Height taken from 3D point: %1", - "kreisel-hoehe-aus-basispunkt": "\n-> Height taken from base point: %1", - "kreisel-hoehe-aus-startpunkt": "\n-> Height taken from start point: %1", - "kreisel-hoehe-von-bestehendem": "\n-> Height taken from existing Kreisel: %1", - "kreisel-insert-zusammenfassung": "\n-> Rotation: %1 Height: %2 Kreisel type: %3", - "kreisel-labelsetup-fertig": "\nNew settings: Height=%1, Colour=%2, Y offset=%3, Font=Arial", - "kreisel-neue-beschriftungsposition": "\nNew label position: X=%1 Y=%2", - "kreisel-neue-blockdef": "\n-> New block definition: %1", - "kreisel-neue-texthoehe": "\nNew text height: %1", - "kreisel-params-default-hoehe": "\nDefault height: %1", - "kreisel-params-default-laenge": "\nDefault length: %1", - "kreisel-params-durchmesser": "\nDiameter: %1", - "kreisel-params-typ": "\nKreisel type: %1", - "kreisel-prompt-abstand": "\nDistance (tangent length) <%1>: ", - "kreisel-prompt-abstand-oben": "\nDistance above Kreisel centre <%1>: ", - "kreisel-prompt-hoehe-z": "\nHeight (Z coordinate) <%1>: ", - "kreisel-prompt-neue-hoehe": "\nNew height <%1>: ", - "kreisel-prompt-neuer-abstand": "\nNew distance <%1>: ", - "kreisel-prompt-schriftfarbe": "\nFont colour (1=Red,2=Yellow,3=Green,4=Cyan,5=Blue,6=Magenta,7=White) <%1>: ", - "kreisel-prompt-schrifthoehe": "\nFont height <%1>: ", - "kreisel-prompt-texthoehe": "\nText height <%1>: ", - "kreisel-prompt-x-abstand": "\nX distance from AN8 centre <%1>: ", - "kreisel-prompt-y-abstand": "\nY distance from AN8 centre <%1>: ", - "kreisel-redraw-bestehend": "\n-> Existing: Distance=%1 Rotation=%2 Height=%3 Type=%4", - "kreisel-redraw-fertig": "\nKreisel redrawn. Distance=%1", - "kreisel-script-distanz-klein": "\n[Connect] Distance too small: %1", - "kreisel-textstil-erstellt": "\n-> Text style '%1' created with Arial", - "kreisel-typ-prompt": "\nPlease choose <%1>: ", - "omni-bogen-info-antriebsart": "\n Drive type: %1", - "omni-bogen-info-breite": "\n Width: %1", - "omni-bogen-info-kurvenwinkel": "\n Curve angle: %1", - "omni-bogen-info-laenge": "\n Length: %1", - "omni-bogen-info-profiltyp": "\n Profile type: %1", - "omni-bogen-info-radius": "\n Radius: %1", - "omni-bogen-nicht-gefunden": "\nNo arc with Sivas ID '%1' found.", - "omni-dxf-eingefuegt": "\n[OMNI] %1 inserted. Height=%2 Rotation=%3%4", - "omni-edit-aktualisiert": "\n[OMNI] Element updated: %1 Height=%2 Rotation=%3", - "omni-edit-dxf-nicht-gefunden": "DXF not found: %1", - "omni-einfuegen-info": "\n[OMNI] Inserting: %1 (%2)", - "omni-fehler-dxf-nicht-gefunden": "\n[OMNI] ERROR: DXF not found: %1", - "omni-insert-block-eingefuegt": "\n[OMNI] %1 inserted. Length=%2 mm", - "omni-laenge-ueberschritten": "The requested travel path length of %1 mm exceeds the maximum length of %2 mm of the travel path profile.\nPlease redefine!", - "omni-weiche-info-breite": "\n Width: %1", - "omni-weiche-info-kurvenrichtung": "\n Curve direction:%1", - "omni-weiche-info-kurvenwinkel": "\n Curve angle: %1", - "omni-weiche-info-laenge": "\n Length: %1", - "omni-weiche-info-profiltyp": "\n Profile type: %1", - "omni-weiche-info-schaltungstyp": "\n Switch type: %1", - "omni-weiche-info-weichentyp": "\n Type of switch: %1", - "omni-weiche-info-wklaenge": "\n WK length: %1", - "omni-weiche-nicht-gefunden": "\nNo switch with Sivas ID '%1' found.", - "vfc-3dlinie-start-ende": "\n 3D line:\n Start: X=%1 Y=%2 Z=%3\n End: X=%4 Y=%5 Z=%6", - "vfc-3dpolylinie-start-ende": "\n 3D polyline:\n Start Z=%1 End Z=%2", - "vfc-block-einfuegepunkt": "\n Block insertion point: X=%1 Y=%2 Z=%3", - "vfc-block-eingefuegt-ksaus": "\n '%1' inserted\n KS_AUS: X=%2 Y=%3 Z=%4", - "vfc-delta-l-h-richtung": "\n %1L=%2 mm %1H=%3 mm Travel direction=%4%5", - "vfc-endpunkt-xyz": "\n End point: X=%1 Y=%2 Z=%3", - "vfc-endpunkt-xyz-dxdz": "\n End point: X=%1 Y=%2 Z=%3 (dx=%4 dz=%5)", - "vfc-fahrtrichtung-ergebnis": "\n>>> Travel direction: %1%2", - "vfc-fehler-block-datei-fehlt": "\n ERROR: block file not found: %1", - "vfc-fehler-block-nicht-in-bibliothek": "\n ERROR: block '%1' not in library", - "vfc-fehler-block-nicht-in-bibliothek-abgebrochen": "\n ERROR: block '%1' not in library - cancelled", - "vfc-fehler-ks-fehlen": "\n ERROR: KS_EIN/KS_AUS missing in '%1'", - "vfc-fehler-ungueltiger-einfuegepunkt": "\n ERROR: invalid insertion point for '%1'", - "vfc-fuege-block-ein-hz": "\n Inserting block '%1'... (hz=%2%3)", - "vfc-fuege-block-ein-rotation-hz": "\n Inserting block '%1' (rotation %2%3 hz=%4%5)", - "vfc-fuege-ein-lwhz": "\n Inserting '%1' (L=%2 mm, W=%3%4 hz=%5%6)", - "vfc-ks-aus-xyz": "\n KS_AUS: X=%1 Y=%2 Z=%3", - "vfc-lade-block": "\n Loading block: %1 ...", - "vfc-laenge-uebersprungen": "\n Length=%1 mm -> skipped", - "vfc-punkt-auf-objekt": "\n Point on object: Z=%1 mm", - "vfe-as30-mass": "\n AS_30_rechts: dx=%1 mm, dz=%2 mm", - "vfe-block-fehlt-abbruch": "\n ERROR: block '%1' not in library - cancelled", - "vfe-bogen-nicht-vorhanden": "\n %1 -> arc not available", - "vfe-delta-info": "\nΔL=%1 mm ΔH=%2 mm Direction=%3", - "vfe-empfohlener-winkel": "\n>>> Recommended angle: %1", - "vfe-es30-mass": "\n ES_30_rechts: dx=%1 mm, dz=%2 mm", - "vfe-extrahiere-block-mass": "\n Extracting %1 dimensions...", - "vfe-gefaellebogen-links-mass": "\n Slope arc left: dx=%1 dz=%2 mm", - "vfe-gefaellebogen-rechts-mass": "\n Slope arc right: dx=%1 dz=%2 mm", - "vfe-gefaellebogen-seite-dx": "\n Slope arc %1: dx=%2 mm", - "vfe-hz-incl-status": "\n HzIncl %1 L=%2 hz=%3 v=%4 -> Z=%5", - "vfe-hz-rot-status": "\n HzRot %1 hz=%2 v=%3 -> Z=%4", - "vfe-hz-rotks-status": "\n HzRotKS %1 hz=%2 -> Z=%3", - "vfe-hz-scaleks-status": "\n HzScaleKS %1 %2mm hz=%3 -> Z=%4", - "vfe-ks-fehlt-startpunkt": "\n WARNING: KS missing in '%1' - using start point", - "vfe-step1-as30": "\n\n1/15: %1 (0 deg)", - "vfe-step2": "\n\n2/15: Buffer section 400mm (%1 deg hz, 3 deg vert, KS_EIN)", - "vfe-step3": "\n\n3/15: Separator (300mm, %1 deg hz, 3 deg vert)", - "vfe-step4": "\n\n4/15: %1 (start, %2 deg hz, 0 deg vert, KS_EIN)", - "vfe-step5-strecke": "\n\n5/15: Slope section (3 deg, L=%1 mm)", - "vfe-step7": "\n\n7/15: %1 (3 deg inclined)", - "vfe-step8-ab": "\n\n8/15: Slope section (%1 deg, L=%2 mm)", - "vfe-step8-auf": "\n\n8/15: Incline section (%1 deg, L=%2 mm)", - "vfe-tabelle-zeile": "\n %1 %2 mm %3 mm ", - "vfe-tabelle-zeile-fehler": "\n %1 --- --- ERROR", - "vfl-20m-hinweis": "\n >>> NOTE: conveyor longer than 20 m (%1 m) - motor station recommended!", - "vfl-block-erstellt": "\n>>> Block '%1' (%2) created and inserted.", - "vfl-fehler-rest-nicht-baubar": "\n ERROR: remainder cannot be built (too steep/too short for tail motor+GF2+separator+ES). Please continue drawing or plan flatter.", - "vfl-fuege-block-ein": "\n Inserting %1 ...", - "vfl-hinweis-gf2-minimum": "\n NOTE: calculated GF2=%1 mm < minimum %2 mm -> raised to minimum (ES therefore ends a bit further on; see actual-vs-target report).", - "vfl-horizontale-zwischenstrecke": "\n\nHorizontal intermediate section (0 deg, L=%1 mm)", - "vfl-kettenende-modus-ziel": "\n>>> Chain-end mode: target dL=%1 mm, dH=%2 mm (%3). GF2 varies with the angle.", - "vfl-prompt-hoehe-endpunkt": "\nHeight (Z) of the end point [%1]: ", - "vfl-prompt-hoehe-kettenende": "\nHeight (Z) of the chain end (ES element) [%1]: ", - "vfl-prompt-wahl-bis-n": "\nYour choice (1-%1) [1]: ", - "vfl-segment-gf-nicht-erlaubt": "\n Segment would be GF (too steep) or not buildable - not allowed within a VF unit.\n Please draw flatter/rising or end the conveyor.", - "vfl-winkel-option": "\n %1 - %2 deg (L_GF=%3 mm L_VF=%4 mm)", - "vfs-as90-mass": "\n AS_90: dx=%1 dz=%2", - "vfs-berechnung-parameter": "\nΔL=%1 mm ΔH=%2 mm Direction=%3", - "vfs-block-fehlende-item": "\n - %1", - "vfs-block-fehler-pfad": "\n ERROR: DXFM_BLOCKS = %1", - "vfs-bogen-ab-block-fehlt": "\n ERROR ab_%1: block not loaded!", - "vfs-bogen-ab-ks-fehlt": "\n ERROR ab_%1: KS missing!", - "vfs-bogen-ab-ok": "\n OK ab_%1: dx=%2 dz=%3", - "vfs-bogen-auf-block-fehlt": "\n ERROR auf_%1: block not loaded!", - "vfs-bogen-auf-ks-fehlt": "\n ERROR auf_%1: KS missing!", - "vfs-bogen-auf-ok": "\n OK auf_%1: dx=%2 dz=%3", - "vfs-empfohlener-winkel": "\n>>> Recommended angle: %1%2", - "vfs-es90-mass": "\n ES_90: dx=%1 dz=%2", - "vfs-fehler-winkel-tabelle": "\n ERROR: angle %1 not in arc table!", - "vfs-schritt-as": "\n\n1/11: %1 (hz=%2%3)", - "vfs-schritt5-bogen1": "\n\n5/11: %1 (3 deg inclined)", - "vfs-tabelle-zeile": "\n %1%2 %3 mm %4 mm ", - "vfs-tabelle-zeile-fehler": "\n %1%2 --- --- ERROR", - "vfs-vf-eingang-gf1": "\n\n[VF-Eingang] Slope section GF1 (3 deg, L=%1 mm)", - "kreisel-abbruch-befehl": "\nCommand cancelled.", - "kreisel-abgebrochen": "\nCancelled.", - "kreisel-connect-erfolgreich": "\nKreisel Connect successful!", - "kreisel-connect-header": "\n--- Define Kreisel by line (AN -> SP) ---", - "kreisel-eckrad-beruehrpunkt": "\nTangent point Eckrad (tangent): ", - "kreisel-eckrad-fehler-identisch": "\nError: tangent point and direction point are identical!", - "kreisel-eckrad-richtung": "\nDirection to circle centre: ", - "kreisel-emsg-kein-block": "No block selected!", - "kreisel-emsg-kein-kreisel-block": "Not a Kreisel block! (attribute ABSTAND missing)", - "kreisel-fehler-keine-entities": "\nError: no entities to create block!", - "kreisel-insert-fertig": "\nKreisel module inserted.", - "kreisel-params-attribute-header": "\nAttributes in block:", - "kreisel-params-header": "\n=== Kreisel parameters ===", - "kreisel-prompt-basispunkt": "\nBase point (AN side): ", - "kreisel-prompt-block-auswaehlen": "\nSelect Kreisel block: ", - "kreisel-prompt-endpunkt": "\nEnd point (SP side, outer): ", - "kreisel-prompt-rotation": "\nRotation in degrees <0>: ", - "kreisel-prompt-startpunkt": "\nStart point (AN side, outer): ", - "kreisel-quick-fertig": "\nQuick insert done.", - "kreisel-start-connect": "Kreisel Smart Connect", - "kreisel-start-eckrad": "Insert Eckrad", - "kreisel-start-edit": "Edit Kreisel", - "kreisel-start-insert": "Insert Kreisel module", - "kreisel-start-quick": "Kreisel quick insert", - "kreisel-start-redraw": "Redraw Kreisel", - "kreisel-start-script-connect": "Kreisel script connect", - "kreisel-start-script-insert": "Kreisel script insert", - "kreisel-typ-opt-pin": "\n[2] PIN", - "kreisel-typ-opt-standard": "\n[1] STANDARD (without PIN)", - "kreisel-warn-blockpfad": "\n[KreiselInsert] WARNING: block path not determinable!", - "kreisel-warn-core-fehlt": "\n[KreiselInsert] WARNING: ssg_core.lsp not found - using defaults.", - "omni-abbruch": "\nCancelled.", - "omni-abbruch-bogen": "\n[ARC] Cancelled.", - "omni-abbruch-omni": "\n[OMNI] Cancelled.", - "omni-abbruch-weiche": "\n[SWITCH] Cancelled.", - "omni-bogen-dialog-ladefehler": "Arc dialog could not be loaded.", - "omni-edit-kein-block": "No block selected!", - "omni-edit-kein-element": "No Omniflo element recognised! (ARTINR/block name not in catalog)", - "omni-edit-prompt-auswahl": "\nSelect Omniflo element: ", - "omni-fehler-dxfm-data": "\n[OMNI] ERROR: DXFM_DATA not set!", - "omni-fehler-dxfm-omniflo": "\n[OMNI] ERROR: DXFM_OMNIFLO not set!", - "omni-info-bogen-prompt": "\nEnter Sivas ID of the arc: ", - "omni-info-weiche-prompt": "\nEnter Sivas ID of the switch: ", - "omni-insert-keine-attribute": "\n[OMNI] No attributes found on source block.", - "omni-prompt-drehwinkel": "\nSpecify rotation angle: ", - "omni-prompt-einfuegepunkt": "\nSelect insertion point: ", - "omni-prompt-endpunkt-fahrstrecke": "\nSelect end point of the travel path: ", - "omni-weiche-dialog-ladefehler": "Switch dialog could not be loaded.", - "prompt-wahl-1-2-3-4": "\nYour choice (1/2/3/4) [1]: ", - "vfc-alert-keine-gueltige-linie": "No valid line selected!", - "vfc-bitte-3dlinie-foerderstrecke": "\nPlease select a 3D line for the conveyor section:", - "vfc-bks-weltkoordinaten": "\n UCS set to world coordinates.", - "vfc-eingabemodus-3dlinie": "\n 1 - Select 3D line (start and end point with height)", - "vfc-eingabemodus-header": "\n\nSelect input mode:", - "vfc-eingabemodus-werte": "\n 2 - Enter values manually", - "vfc-fahrtrichtung-0": "\n 1 - 0%1 (X axis +, East)", - "vfc-fahrtrichtung-180": "\n 3 - 180%1 (X axis -, West)", - "vfc-fahrtrichtung-270": "\n 4 - 270%1 (Y axis -, South)", - "vfc-fahrtrichtung-90": "\n 2 - 90%1 (Y axis +, North)", - "vfc-fahrtrichtung-header": "\n\nSelect travel direction:", - "vfc-fehler-keine-linie": "\n ERROR: No line or polyline selected!", - "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: ", - "vfc-modus-3dlinie-fallback": "Line", - "vfc-modus-3dlinie-header": "\n\n>>> MODE: Select 3D line <<<", - "vfc-modus-werteingabe-header": "\n\n>>> MODE: Manual value entry <<<", - "vfc-objekt-block-waehlen": "\n >> Select object (block): ", - "vfc-prompt-delta-h": "\n%1H - height difference (mm): ", - "vfc-prompt-delta-l": "\n%1L - horizontal distance (mm): ", - "vfc-prompt-startpunkt-aus": "\nSelect start point for AUS_Element: ", - "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.", - "vfs-dlg-richtung-auf": "Up", - "vfs-dlg-richtung-ab": "Down", - "vfs-dlg-winkel-horizontal": "Horizontal (GF=%1 mm, VF=%2 mm)", - "vfs-dlg-winkel-option": "%1%2 (GF=%3 mm, VF=%4 mm)", - "vfs-dlg-verteilung-1": "Even (L_GF1 = L_GF2 = L_GF/2)", - "vfs-dlg-verteilung-2": "Front minimum, rear remainder", - "vfs-dlg-verteilung-3": "Rear minimum, front remainder", - "vfs-dlg-verteilung-4": "Enter custom values", - "vfs-edit-kein-vf": "Block %1 is not a VarioFoerderer conveyor.", - "vfs-edit-keine-xdata": "VarioFoerderer %1 was not created with this dialog (Etage/Linienzug/legacy) and cannot be edited here.", - "vfs-edit-neu-aufgebaut": "\nVarioFoerderer %1 rebuilt.", - "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.", - "vfe-bib-init-erfolg": "\n Etage library successfully initialised.", - "vfe-bib-initialisiere": "\n Initialising Etage library...", - "vfe-ergebnistabelle-header": "\n RESULT TABLE (L_GF = total of both GF sections)", - "vfe-extrahiere-as30": "\n Extracting AS_30_rechts dimensions...", - "vfe-extrahiere-es30": "\n Extracting ES_30_rechts dimensions...", - "vfe-kein-winkel-gefunden": "\n>>> NO matching angle found!", - "vfe-status-gueltig": "VALID", - "vfe-status-ungueltig": "INVALID (negative length)", - "vfe-step5-skip": "\n\n5/15: L_GF1 (skipped)", - "vfe-step6": "\n\n6/15: deflection station (500mm, 3 degrees inclined)", - "vfe-step8-skip": "\n\n8/15: L_VF (skipped)", - "vfe-tabelle-spalten": "\n Angle L_GF (mm) L_VF (mm) Status", - "vfe-warn-block-as30-fehlt": "\n WARNING: block AS_Element_30_rechts missing - using defaults", - "vfe-warn-block-es30-fehlt": "\n WARNING: block ES_Element_30_rechts missing - using defaults", - "vfe-warn-block-fehlt-links": "\n WARNING: block missing - using defaults (left)", - "vfe-warn-block-fehlt-rechts": "\n WARNING: block missing - using defaults (right)", - "vfe-warn-kein-ks-links": "\n WARNING: no KS - using defaults (left)", - "vfe-warn-kein-ks-rechts": "\n WARNING: no KS - using defaults (right)", - "vfe-warn-ks-fehlt-standard": "\n WARNING: KS missing - using defaults", - "vfe-warn-lisp-pfad": "\n[vf_etage] WARNING: Lisp path not determinable - cannot load vf_core.lsp!", - "vfl-abgebrochen-kein-ziel": "\n Cancelled - no target point selected.", - "vfl-bogen-ab3-uebergang": "\n\nVario_Bogen_ab_3 (transition horizontal -> 3 degrees)", - "vfl-bogen-auf3-uebergang": "\n\nVario_Bogen_auf_3 (transition 3 degrees -> horizontal)", - "vfl-gf-verteilung-ganz-einlauf": "\n 2 - Entire buffer section at inlet (GF1), no GF2", - "vfl-gf-verteilung-haelfte": "\n 1 - 1/2 GF at outlet (GF2), 1/2 GF at inlet (GF1)", - "vfl-gf-verteilung-header": "\n\nBuffer section (GF) - choose distribution:", - "vfl-ist-endpunkt-frage": "\n\nIs this the end point of the conveyor?", - "vfl-ist-kettenende-frage": "\n\nIs this the chain end (ES element)?", - "vfl-ja-motorstation-kettenende": "\n 3 - Yes (set motor station, define chain end)", - "vfl-ja-nur-motorstation": "\n 1 - Yes (set motor station only)", - "vfl-ja-separator-es": "\n 1 - Yes (set separator + ES element)", - "vfl-linie-zu-kurz-simple": "\n Line too short - skipped.", - "vfl-linie-zu-kurz-uebersprungen": "\n Line too short (or against travel direction) - skipped.", - "vfl-mehrere-winkel-header": "\n\nSeveral valid angles - please choose the desired angle:", - "vfl-modus1-beschreibung": "\nMixed slope-section/VarioFoerderer chain along a freely", - "vfl-modus1-header": "\n VF-LINIENZUG - Mode 1: Manual entry", - "vfl-naechstes-element-vf": "\n\nNext element in the VarioFoerderer:", - "vfl-nein-weiterbauen": "\n 2 - No (continue building)", - "vfl-opt-auf-ab-foerderer": "\n 3 - Up/down conveyor (line with height difference)", - "vfl-opt-horizontaler-foerderer": "\n 1 - Horizontal conveyor (line without height difference)", - "vfl-opt-vario-kurve": "\n 2 - Vario curve (30/60/90 degrees)", - "vfl-prompt-wahl-1-2-def2": "\nYour choice (1/2) [2]: ", - "vfl-prompt-wahl-1-3-def2": "\nYour choice (1/2/3) [2]: ", - "vfl-prompt-wahl-1-3-def3": "\nYour choice (1/2/3) [3]: ", - "vfl-sep-horizontal-info": "\n [horizontal] Separator (300 mm, 0 degrees)", - "vfs-berechnung-header": "\n CALCULATION FOR ALL ANGLES (Standard)", - "vfs-block-fehlende-header": "\n The following block files are missing:", - "vfs-ergebnistabelle-header": "\n RESULT TABLE", - "vfs-extrahiere-aus": "\n Extracting AUS_Element dimensions...", - "vfs-extrahiere-bogen": "\n Extracting arc dimensions...", - "vfs-extrahiere-ein": "\n Extracting EIN_Element dimensions...", - "vfs-fehler-block-as90": "\n ERROR: block AS_Element_90_links not loaded!", - "vfs-fehler-block-es90": "\n ERROR: block ES_Element_90_links not loaded!", - "vfs-fehler-ks-as90": "\n ERROR: KS_EIN/KS_AUS missing in AS_90!", - "vfs-fehler-ks-es90": "\n ERROR: KS_EIN/KS_AUS missing in ES_90!", - "vfs-fehler-lib-nicht-init": "\n ERROR: library not correctly initialised (AUS/EIN dimensions missing)!", - "vfs-kein-winkel-gefunden": "\n>>> NO matching angle found!", - "vfs-lib-bereits-init": "\n Standard library already initialised.", - "vfs-lib-init-erfolg": "\n Standard library successfully initialised.", - "vfs-lib-init-start": "\n Initialising standard library...", - "vfs-status-gueltig": "VALID", - "vfs-status-ungueltig": "INVALID (negative length)", - "vfs-tabelle-spalten": "\n Angle L_GF (mm) L_VF (mm) Status", - "vfs-vf-eingang-gf1-skip": "\n\n[VF-Eingang] Slope section GF1 (skipped)", - "vfs-vf-eingang-separator": "\n[VF-Eingang] Separator (300 mm, 3 degrees inclined)", - "vfs-vf-eingang-umlenk": "\n[VF-Eingang] Deflection station (500 mm, 3 degrees inclined)", - "vfs-warn-lisppfad": "\n[vf_standard] WARNING: Lisp path not determinable - cannot load vf_core.lsp!", - "dim-switch-modus": "\nMode switched to: %1", - "dim-switch-blocks": "\n DXFM_BLOCKS = %1", - "dim-switch-omniflo": "\n DXFM_OMNIFLO = %1", - "dim-batch-fertig": "\nConversion to %1 complete: %2 GF, %3 VF rebuilt (%4 already in target dimension).", - "sprache-gewechselt": "\nLanguage switched to: %1", - "cmd-block-auswaehlen": "\nSelect block: ", - "cmd-kein-block-ausgewaehlt": "\nNo block selected.", - "cmd-kreisel-bearbeiten": "\nEdit Kreisel: %1", - "cmd-eckrad-bearbeiten": "\nEdit Eckrad: %1", - "cmd-gefaelle-bearbeiten": "\nEdit Gefaellestrecke: %1", - "cmd-variofoerderer-bearbeiten": "\nEdit VarioFoerderer: %1", - "gf-edit-kein-gf": "Block %1 is not a Gefaellestrecke.", - "gf-edit-nur-einfach": "Only simple Gefaellestrecken (without arcs) can be edited via the dialog.\nTYP: %1", - "gf-edit-neu-aufgebaut": "\nGefaellestrecke %1 rebuilt.", - "gf-vf-modul-fehlt": "VarioFoerderer module not loaded!", - "gf-vf-gebaut": "\n-> Parallel VarioFoerderer built (2000 mm beside the Gefaellestrecke, opposite direction, rising).", - "cmd-omniflo-bearbeiten": "\nEdit Omniflo element: %1", - "cmd-attribute-bearbeiten": "\nEdit attributes: %1", - "ils-station-prompt-punkt": "\nInsertion point for %1 [ENTER=End]: ", - "ils-station-fehler-blockdatei": "\n>>> ERROR: block file '%1.dwg' not found (check data/ils).", - "ils-station-fertig": "\n>>> %1 x %2 inserted.", - "layer-prompt-ziel-layer": "\nSelect object on the target layer: ", - "layer-prompt-objekt": "\nSelect object: ", - "layer-prompt-referenz-objekt": "\nSelect reference object (determines type and layer): ", - "layer-prompt-typ-ermittlung": "\nClick again to determine the type: ", - "layer-prompt-ausblenden": "\nClick layer to hide (Enter=End): ", - "layer-prompt-einfrieren": "\nClick layer to freeze (Enter=End): ", - "layer-prompt-aktiv-bleibt": "\nSelect object on the layer that stays ACTIVE: ", - "layer-prompt-name-loeschen": "\nLayer name to delete: ", - "layer-err-kein-objekt": "No object selected.", - "layer-err-kein-ziel-layer": "No target layer selected.", - "layer-err-kein-ziel-layer-kurz": "No target layer.", - "layer-err-keine-passenden-objekte": "No matching objects found.", - "layer-abgebrochen": "Cancelled.", - "layer-err-kein-referenz-objekt": "No reference object selected.", - "layer-err-aktiv-nicht-ausschalten": "Cannot turn off the active layer!", - "layer-err-aktiv-nicht-einfrieren": "Cannot freeze the active layer!", - "layer-aktiver-layer": "\nActive layer: %1", - "layer-objekt-auf-layer": "\nObject is on layer: %1", - "layer-nur-layer-sichtbar": "\nOnly layer '%1' is visible.", - "layer-geloescht": "\nLayer '%1' deleted.", - "layer-leerer-geloescht": "\nEmpty layer '%1' deleted.", - "layer-existiert-nicht": "Layer '%1' does not exist.", - "layer-ques-typ-wechseln": "Change layer of these %1 objects?", - "layer-ques-alle-loeschen": "Delete all objects on layer '%1'?", - "core-start-titel": "\n***** %1 *****\n", - "core-errhan-fehler": "\nError: ", - "core-blockname-exists": "Block name '%1' already exists - skipping.", - "core-dwg-not-found": "\nERROR: Block not found: %1", - "exp-cfg-not-found": "\n[export] WARNING: %1 not found/empty, using defaults.", - "exp-check-ids": "\n[%1] Checking and assigning IDs...", - "exp-update-hoehe-drehung": "\n[%1] Updating height/rotation...", - "exp-collect-blocks": "\n[%1] Collecting relevant blocks...", - "exp-no-blocks-found": "\n[%1] No relevant blocks found.", - "exp-blocks-found": "\n[%1] %2 blocks found.", - "exp-output-dir": "\n[%1] Output folder: %2", - "exp-file-open-error": "\n[%1] ERROR: Cannot open file: %2", - "exp-json-written": "\n[%1] JSON written: %2", - "exp-calling-python": "\n[%1] Calling Python...", - "exp-export-started": "\n[%1] Export started: %2", - "exp-dxfm-lib-missing": "\n[%1] ERROR: Environment variable DXFM_LIB is not set - BricsCAD was probably not started via bin/start_briscad.bat. CSV/JSON were written, the Python call is skipped.", - "exp-python-not-found": "\n[%1] ERROR: Python script not found: %2", - "exp-python-exe": "\n[%1] Interpreter: %2", - "exp-export-done": "\n[%1] Export finished: %2", - "exp-python-call-failed": "\n[%1] ERROR: Could not start Python (WScript.Shell unavailable).", - "exp-python-error": "\n[%1] ERROR: Python exited with code %2. Log: %3", - "exp-python-store-hint": "\n NOTE: No real Python interpreter was found (on Windows 11 'python' points\n to the WindowsApps placeholder). Fix: run bin/install_py.bat (creates .venv)\n and restart BricsCAD via bin/start_briscad.bat, or set the full path to\n python.exe in cfg/export.cfg under [python] interpreter=.", - "exp-csv-missing": "\n[%1] ERROR: Python reported success but the CSV is missing: %2. Log: %3", - "exp-omni-no-inserts": "\n[OMNI_UPDATE] No INSERT blocks in the drawing.", - "exp-omni-updated": "\n[OMNI_UPDATE] %1 elements updated (HEIGHT, ROTATION).", - "id-new-assigned": "\n[ID] New ID assigned: %1", - "id-invalid-block": "\n[ID] ERROR: Not a valid INSERT block!", - "id-check-no-blocks": "\n[IDSCHECK] No relevant blocks found.", - "id-check-missing-set": "\n[IDSCHECK] Missing ID set: %1 (block %2)", - "id-check-duplicate": "\n[IDSCHECK] Duplicate ID %1 -> new ID %2 (block %3)", - "id-check-done": "\n[IDSCHECK] Done. %1 duplicates corrected.", - "id-check-corrected": "\n[IDSCHECK] %1 IDs corrected.", - "id-select-block-prompt": "\nSelect block: ", - "id-generate-invalid": "\n[IDGENERATE] No valid block selected.", - "dialog-nicht-verfuegbar": "Dialog not available.", - "dialog-einfuegepunkt-waehlen": "\nSelect insertion point: ", - "extcall-python-rueckgabe": "\n[SSG_LIB] Python return value: %1", - "extcall-keine-rueckgabe": "\n[SSG_LIB] WARNING: No return value received from Python.", - "extcall-skript-nicht-gefunden": "\n[SSG_LIB] ERROR: %1 not found!", - "vfstart-core-nicht-gefunden": "\n[VarioFoerderer] WARNING: vf_core.lsp not found - commands not available.", - "vfstart-etage-core-nicht-gefunden": "\n[EtageVarioFoerderer] WARNING: vf_core.lsp not found - commands not available.", - "gf-seite-aus-header": "\n\nOutput element (AS_Element_*) - choose side:", - "gf-seite-ein-header": "\n\nInput element (ES_Element_*) - choose side:", - "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]: ", - "geruest-typ-header": "\n\nSelect scaffold option:", - "geruest-typ-opt": "\n %1 - %2", - "geruest-typ-prompt": "\nScaffold option (1-4) [%1]: ", - "kreisel-eckrad-geruest-frage": "Scaffold for single module?", - "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-alert-dialog-fehlt": "Dialog file not found:\n%1", - "gf-dlg-richtung-0": "0%1 (X+, East)", - "gf-dlg-richtung-90": "90%1 (Y+, North)", - "gf-dlg-richtung-180": "180%1 (X-, West)", - "gf-dlg-richtung-270": "270%1 (Y-, South)", - "gf-dlg-links": "Left", - "gf-dlg-rechts": "Right", - "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 : ", - "tefl-fehler-dxfm-omniflo": "\n[TEF] ERROR: DXFM_OMNIFLO not set (run bin/setenv.bat).", - "tefl-fehler-dxf-nicht-gefunden": "\n[TEF] ERROR: Element DXF not found: %1", - "tefl-prompt-startpunkt": "\nSelect start point of the conveyor path: ", - "tefl-prompt-endpunkt": "\nSelect end point of the conveyor path: ", - "tefl-abgebrochen": "\n[TEF] Cancelled.", - "tefl-fehler-laenge-null": "\n[TEF] ERROR: Start and end point are too close together.", - "tefl-fertig": "\n[TEF] %1 element(s) inserted, path length=%2 mm.", - "vfl-kette-titel": "\n Vario_Kette_Merge - merge several Vario conveyor blocks (loose or already wrapped) into one combined block", - "vfl-kette-start-waehlen": "\n\nSelect the starting block of the chain (first element - AS element or VF_n): ", - "vfl-kette-kein-objekt": "\nNo object selected - cancelled.", - "vfl-kette-kein-vf-block": "\nSelected object ('%1') is not a known Vario chain block (AS/ES element, GF bend, Vario curve, deflection/motor station, vertical bend, buffer/separator or VF_n).", - "vfl-kette-start-nicht-gefunden": "\nERROR: Starting block not found in the chain collection (internal error).", - "vfl-kette-start-nicht-gefunden-diag": "\nERROR: Starting block not found in the chain collection (internal error).\n Diagnostic: %1 blocks collected in total, selected block name='%2', %3 of those with the same block name.", - "vfl-kette-start-ohne-ks-ein": "\nERROR: No KS_EIN found on the selected block - chain cannot be followed.", - "vfl-kette-nur-ein-baustein": "\nNo further connected VF_n block was found from the selected block onward - nothing to merge.", - "vfl-kette-gefunden": "\n\nChain detected: %1 block(s) will be merged:", - "vfl-kette-luecke-warnung": "\n\n WARNING: after '%1' a visually close but not properly connected VF_n ('%2') was found (KS distance %3 mm) - the chain was ended there; this and all further blocks are left untouched.", - "vfl-kette-fertig": "\n\n>>> Done: new combined block '%1' created from %2 block(s).", - "cmd-tro-bearbeiten": "\nEdit TRO marker: %1", - "tro-edit-kein-tro": "Block %1 is not a TRO marker (expected TRO_*).", - "tro-edit-kein-id-attribut": "Block %1 has no ID attribute - please re-annotate (tro_annotate.py).", - "tro-edit-dialog-fehlt": "Dialog file not found:\n%1\nCheck DXFM_DCL (setenv.bat).", - "tro-edit-modul-fehlt": "%1 not loaded - editing attributes with EATTEDIT instead.", - "tro-edit-block": "Block: %1", - "tro-edit-fb": "Function block: %1", - "tro-edit-hinweis": "Symbol and FB follow on the next tro_annotate.py run.", - "tro-edit-id-leer": "The TRO id must not be empty - nothing changed.", - "tro-edit-gespeichert": "\nTRO saved: ID = %1, TYPE = %2", - "tro-edit-typ-geaendert": "\nType changed - re-run tro_annotate.py so symbol and FB match.", - "tro-insert-kein-typ": "No TRO types available (tro_types.lsp missing) - run lib/tro_annotate.py --emit-lisp.", - "tro-insert-hinweis": "The block shape must already exist in the drawing (from an earlier tro_annotate.py run).", - "tro-insert-kein-block": "No symbol for this type in the drawing (%1) - run tro_annotate.py with this type first.", - "tro-insert-prompt-punkt": "\nInsertion point: ", - "tro-insert-eingefuegt": "\nTRO inserted: ID = %1, TYPE = %2" - } + "texts": { + "omni-alle-winkel": "all angles", + "omni-grad": " deg", + "omni-bogen-keine-gefunden": "No arcs found for %1%2.", + "omni-weiche-keine-gefunden": "No switches found for %1%2.", + "vfc-ursprung": "Origin", + "vfc-block-eingefuegt-xyzref-ksaus": "\n '%1' inserted (XY:%2 Z:%3)\n KS_AUS: X=%4 Y=%5 Z=%6", + "vfl-ja": "\n 1 - Yes", + "vfl-nein": "\n 2 - No", + "vfl-sep-vor-frage": "\n\nInsert additional separator BEFORE the horizontal section?", + "vfl-sep-nach-frage": "\n\nInsert additional separator AFTER the horizontal section?", + "vfl-sep-an-stelle-frage": "\n\nInsert additional separator at this point?", + "vf-winkel-aus-header": "\n\nOutput element (AS_Element) - choose angle:", + "vf-winkel-ein-header": "\n\nInput element (ES_Element) - choose angle:", + "vf-winkel-90": "\n 1 - 90 deg", + "vf-winkel-30": "\n 2 - 30 deg", + "vfl-gf-bogen-winkel-header": "\n\nGF arc - choose angle:", + "vfl-gf-bogen-seite-header": "\nGF arc - choose side:", + "vfl-winkel-30": "\n 1 - 30 deg", + "vfl-winkel-60": "\n 2 - 60 deg", + "vfl-winkel-90": "\n 3 - 90 deg", + "vfl-variokurve-winkel-header": "\n\nVario curve - choose angle:", + "vfl-opt1-90grad": "\n 1 - 90 deg", + "vfl-opt2-60grad": "\n 2 - 60 deg", + "vfl-opt3-30grad": "\n 3 - 30 deg", + "vfl-prompt-wahl-1-3-def1": "\nYour choice (1/2/3) [1]: ", + "vfl-variokurve-seite-header": "\nVario curve - choose side:", + "vfl-variokurve-variante-header": "\nVario curve - choose variant:", + "vfl-variante-aussen": "\n 1 - Outer", + "vfl-variante-innen": "\n 2 - Inner", + "vfl-ist-ziel-vergleich-header": "\n\n>>> ACTUAL-TARGET COMPARISON (ES element):", + "vfl-soll-xyz": "\n Target: X=%1 Y=%2 Z=%3", + "vfl-ist-xyz": "\n Actual: X=%1 Y=%2 Z=%3", + "vfl-abweichung-xyz": "\n Deviation: dX=%1 dY=%2 dZ=%3 mm", + "vfl-m3-titel": "\n VF LINE PATH - Mode 2: path + target height (finished; anchors + solver + build)", + "vfl-m3-alert-gf-modul": "Gefaellestrecke module not loaded!", + "vfl-m3-pfad-waehlen": "\n\nSelect path objects (lines/arcs):", + "vfl-m3-keine-objekte": "\nNo objects selected - aborting.", + "vfl-m3-prompt-startpunkt": "\n\nSelect chain start point (higher side): ", + "vfl-prompt-hoehe-startpunkt": "\nHeight (Z) of the start point [%1]: ", + "vfl-m3-prompt-endpunkt": "\n\nSelect chain end point (target): ", + "vfl-m3-prompt-zielhoehe": "\nTarget height (Z) of the end point [%1]: ", + "vfl-m3-fehler-nicht-sortierbar": "\nERROR: path cannot be sorted (is it connected without gaps?).", + "vfl-m3-alert-eckwinkel": "No matching arc: corner angle %1 deg is not ~30/60/90.\nPlease adjust the angles.", + "vfl-m3-seg-gerade": "\n\nSegment %1/%2: straight L=%3 mm hz=%4", + "vfl-m3-auto-vf": "\n (automatic VF - segment follows directly after a Vario curve)", + "vfl-m3-typ-gerade": "\n Type? 1 = GF (input angle) 2 = VF (bridge)", + "vfl-m3-prompt-gf-neigung": "\n GF slope in degrees [3]: ", + "vfl-m3-hinweis-gf-max": "\n Note: GF max. 3 deg - limited to 3.", + "vfl-m3-seg-bogen": "\n\nSegment %1/%2: corner/arc %3 deg %4", + "vfl-m3-typ-bogen": "\n Type? 1 = GF arc 2 = Vario curve", + "vfl-m3-variante-frage": "\n Vario curve - variant? 1 = Outer 2 = Inner", + "vfl-m3-vf-laeufe": "\n\n[M3a] VF runs found: %1", + "vfl-m3-vf-lauf-noetig": "\n[M3a] Exactly ONE VF run required (GF...VF...GF; Vario curves may lie within the run).", + "vfl-m3-vf-lauf-m3b": "\n[M3a] Several/no VF runs -> M3b later.", + "vfl-m3-vf-lauf-ohne-gerade": "\n[M3a] VF run without a VF straight - aborting.", + "vfl-m3-anker-vorschau-header": "\n M3a ANCHOR PREVIEW (rough estimate; exact values during build)", + "vfl-m3-start-hoehe": "\n Start height Z: %1 mm", + "vfl-m3-ziel-hoehe": "\n Target height Z: %1 mm", + "vfl-m3-delta-h-gesamt": "\n delta-H total: %1 mm (positive = descent)", + "vfl-m3-vf-lauf-segmente": "\n VF run: segment %1..%2", + "vfl-m3-front-anker-vorschau": "\n Front anchor Z: %1 mm (forward from AS)", + "vfl-m3-junction-anker-vorschau": "\n Junction anchor Z: %1 mm (backward from ES)", + "vfl-m3-richtung-auf": "up (rising)", + "vfl-m3-richtung-ab": "down (falling)", + "vfl-m3-richtung-horizontal": "horizontal", + "vfl-m3-richtung-auf-kurz": "Up", + "vfl-m3-richtung-ab-kurz": "Down", + "vfl-m3-bruecke-dh": "\n --> Bridge: delta-H = %1 mm over span %2 mm", + "vfl-m3-bruecke-richtung": "\n Direction: VF-%1", + "vfl-m3-vf-angetrieben": "\n (VF is powered - can RISE and FALL; sign = up/down only)", + "vfl-m3-mittlere-neigung": "\n rough mean slope over span: ~%1 deg", + "vfl-m3-warnung-zu-steil": "\n WARNING: ~slope > 51 deg -> too steep for Vario (magnitude infeasible).", + "vfl-m3-vario-bereich-ok": "\n -> within Vario range (3..51 deg), rough orientation.", + "vfl-m3-anker-hinweis": "\n (anchors above = rough preview; exact values are MEASURED during build)", + "vfl-m3-phase-b1": "\n\n>>> Phase B1: building front run (AS + GF) ...", + "vfl-m3-alert-beginnt-bogen": "Chain starts with an arc - please begin with a straight.", + "vfl-m3-kurve-front-uebersprungen": "\n >>> [M3a] Vario curve in front run - skipped.", + "vfl-m3-standard-vario-header": "\n\n --- STANDARD VARIO (climbing segment) + flat zone ---", + "vfl-m3-front-anker-gemessen": "\n Front anchor (measured): %1 mm", + "vfl-m3-junction-exakt": "\n Junction (exact): %1 mm", + "vfl-m3-kletter-info": "\n Climb height %1 mm | climbers %2 | curves %3 | short VF %4", + "vfl-m3-kein-winkel": "\n NO matching Vario angle -> infeasible (front already built).", + "vfl-m3-gf-verteilung": "\n\n GF distribution: 1 - all at inlet (GF1) 2 - 1/2 GF1 + 1/2 GF2", + "vfl-m3-vert-halb": "1/2 GF1 + 1/2 GF2", + "vfl-m3-vert-ganz": "all GF1", + "vfl-m3-vario-ergebnis": "\n -> Vario %1 (%2), L_VF %3 mm, GF total %4 mm, distribution %5 (GF2 remainder = measured fine correction)", + "vfl-m3-warnung-gf2-negativ": "\n WARNING: body climbs too little - GF2<0 (missing %1 mm). Angle too shallow; dZ not exact.", + "vfl-m3-gf2-ausgleich": "\n GF2 (measured compensation): L=%1 mm", + "vfl-m3-kurve-back-uebersprungen": "\n >>> [M3a] Vario curve in back run - skipped.", + "vfl-m3-nichts-gebaut": "\nNothing built - aborting.", + "vfl-m3-fertig-header": "\n>>> VF line path (mode 2) built! <<<", + "vfl-m3-ziel-soll": "\n Target (nominal): X=%1 Y=%2 Z=%3", + "vfl-m3-es-ist": "\n ES (actual): X=%1 Y=%2 Z=%3", + "vfl-m3-abweichung": "\n Deviation: dX=%1 dY=%2 dZ=%3 mm", + "vfl-m3-laengs-quer": "\n Along KS_AUS axis: %1 mm | across axis (should be ~0): %2 mm", + "vfl-m3-achse-hinweis": "\n (dZ=target height; across KS_AUS axis ~0 => end point lies on the axis)", + "gf-fehler-block-fehlt": "\n ERROR: block '%1' missing", + "gf-fehler-block-fehlt-ausruf": "\n ERROR: block '%1' missing!", + "gf-fehler-blockdatei-fehlt": "\n ERROR: block file not found: %1", + "gf-fehler-keine-linie": "\n Error: no line!", + "gf-laenge-null-uebersprungen": "\n (length 0 - skipped)", + "gf-prompt-linie-waehlen": "\n >> Select line: ", + "gf-status-3dlinie-z": "\n 3D line: Z_start=%1 Z_end=%2", + "gf-status-block-l-z": "\n %1 L=%2 -> Z=%3", + "gf-status-bogen-masse": "\n %1: dx=%2 dz=%3", + "gf-status-gefaellebogen": "\n Slope arc %1 hz=%2%3 -> Z=%4", + "gf-status-hzincl": "\n HzIncl %1 L=%2 hz=%3%4 v=%5%6 -> Z=%7", + "gf-status-hzks": "\n HzKS %1 hz=%2%3 v=%4%5 -> Z=%6", + "gf-status-ks-aus-z": "\n KS_AUS Z=%1", + "gf-warnung-block-fehlt-nullwerte": "\n WARNING: %1 missing - using zero values", + "gf-warnung-ks-fehlt": "\n WARNING: KS_EIN/KS_AUS missing!", + "gf-warnung-ks-fehlt-in": "\n WARNING: KS missing in '%1'", + "gf-warnung-ks-fehlt-in2": "\n WARNING: KS missing in %1", + "kreisel-abstand-ausgabe": "\n-> Distance: %1 mm", + "kreisel-beschriftung-erzeugt": "\n-> Label: %1 (height=%2mm, Arial, centered)", + "kreisel-bestehende-blockdef": "\n-> Using existing block definition: %1", + "kreisel-connect-zusammenfassung": "\n-> Distance: %1 mm Rotation: %2 deg Height: %3 Kreisel type: %4", + "kreisel-eckrad-eingefuegt": "\n-> Eckrad #%1 inserted: %2 at %3,%4 rotation=%5 height=%6", + "kreisel-edit-aktualisiert": "\nKreisel updated: Name=%1 Distance=%2 Height=%3 Rotation=%4", + "kreisel-edit-bestehend": "\n-> Existing: Distance=%1 Rotation=%2 Type=%3", + "kreisel-edit-dialog-fehlt": "Dialog not available: %1", + "kreisel-eingefuegt": "\n-> Kreisel #%1 inserted: %2 (height=%3)", + "kreisel-emsg-distanz-klein": "Distance too small! (%1 < %2)", + "kreisel-hoehe-aus-3dpunkt": "\n-> Height taken from 3D point: %1", + "kreisel-hoehe-aus-basispunkt": "\n-> Height taken from base point: %1", + "kreisel-hoehe-aus-startpunkt": "\n-> Height taken from start point: %1", + "kreisel-hoehe-von-bestehendem": "\n-> Height taken from existing Kreisel: %1", + "kreisel-insert-zusammenfassung": "\n-> Rotation: %1 Height: %2 Kreisel type: %3", + "kreisel-labelsetup-fertig": "\nNew settings: Height=%1, Colour=%2, Y offset=%3, Font=Arial", + "kreisel-neue-beschriftungsposition": "\nNew label position: X=%1 Y=%2", + "kreisel-neue-blockdef": "\n-> New block definition: %1", + "kreisel-neue-texthoehe": "\nNew text height: %1", + "kreisel-params-default-hoehe": "\nDefault height: %1", + "kreisel-params-default-laenge": "\nDefault length: %1", + "kreisel-params-durchmesser": "\nDiameter: %1", + "kreisel-params-typ": "\nKreisel type: %1", + "kreisel-prompt-abstand": "\nDistance (tangent length) <%1>: ", + "kreisel-prompt-abstand-oben": "\nDistance above Kreisel centre <%1>: ", + "kreisel-prompt-hoehe-z": "\nHeight (Z coordinate) <%1>: ", + "kreisel-prompt-neue-hoehe": "\nNew height <%1>: ", + "kreisel-prompt-neuer-abstand": "\nNew distance <%1>: ", + "kreisel-prompt-schriftfarbe": "\nFont colour (1=Red,2=Yellow,3=Green,4=Cyan,5=Blue,6=Magenta,7=White) <%1>: ", + "kreisel-prompt-schrifthoehe": "\nFont height <%1>: ", + "kreisel-prompt-texthoehe": "\nText height <%1>: ", + "kreisel-prompt-x-abstand": "\nX distance from AN8 centre <%1>: ", + "kreisel-prompt-y-abstand": "\nY distance from AN8 centre <%1>: ", + "kreisel-redraw-bestehend": "\n-> Existing: Distance=%1 Rotation=%2 Height=%3 Type=%4", + "kreisel-redraw-fertig": "\nKreisel redrawn. Distance=%1", + "kreisel-script-distanz-klein": "\n[Connect] Distance too small: %1", + "kreisel-textstil-erstellt": "\n-> Text style '%1' created with Arial", + "kreisel-typ-prompt": "\nPlease choose <%1>: ", + "omni-bogen-info-antriebsart": "\n Drive type: %1", + "omni-bogen-info-breite": "\n Width: %1", + "omni-bogen-info-kurvenwinkel": "\n Curve angle: %1", + "omni-bogen-info-laenge": "\n Length: %1", + "omni-bogen-info-profiltyp": "\n Profile type: %1", + "omni-bogen-info-radius": "\n Radius: %1", + "omni-bogen-nicht-gefunden": "\nNo arc with Sivas ID '%1' found.", + "omni-dxf-eingefuegt": "\n[OMNI] %1 inserted. Height=%2 Rotation=%3%4", + "omni-edit-aktualisiert": "\n[OMNI] Element updated: %1 Height=%2 Rotation=%3", + "omni-edit-dxf-nicht-gefunden": "DXF not found: %1", + "omni-einfuegen-info": "\n[OMNI] Inserting: %1 (%2)", + "omni-fehler-dxf-nicht-gefunden": "\n[OMNI] ERROR: DXF not found: %1", + "omni-insert-block-eingefuegt": "\n[OMNI] %1 inserted. Length=%2 mm", + "omni-laenge-ueberschritten": "The requested travel path length of %1 mm exceeds the maximum length of %2 mm of the travel path profile.\nPlease redefine!", + "omni-weiche-info-breite": "\n Width: %1", + "omni-weiche-info-kurvenrichtung": "\n Curve direction:%1", + "omni-weiche-info-kurvenwinkel": "\n Curve angle: %1", + "omni-weiche-info-laenge": "\n Length: %1", + "omni-weiche-info-profiltyp": "\n Profile type: %1", + "omni-weiche-info-schaltungstyp": "\n Switch type: %1", + "omni-weiche-info-weichentyp": "\n Type of switch: %1", + "omni-weiche-info-wklaenge": "\n WK length: %1", + "omni-weiche-nicht-gefunden": "\nNo switch with Sivas ID '%1' found.", + "vfc-3dlinie-start-ende": "\n 3D line:\n Start: X=%1 Y=%2 Z=%3\n End: X=%4 Y=%5 Z=%6", + "vfc-3dpolylinie-start-ende": "\n 3D polyline:\n Start Z=%1 End Z=%2", + "vfc-block-einfuegepunkt": "\n Block insertion point: X=%1 Y=%2 Z=%3", + "vfc-block-eingefuegt-ksaus": "\n '%1' inserted\n KS_AUS: X=%2 Y=%3 Z=%4", + "vfc-delta-l-h-richtung": "\n %1L=%2 mm %1H=%3 mm Travel direction=%4%5", + "vfc-endpunkt-xyz": "\n End point: X=%1 Y=%2 Z=%3", + "vfc-endpunkt-xyz-dxdz": "\n End point: X=%1 Y=%2 Z=%3 (dx=%4 dz=%5)", + "vfc-fahrtrichtung-ergebnis": "\n>>> Travel direction: %1%2", + "vfc-fehler-block-datei-fehlt": "\n ERROR: block file not found: %1", + "vfc-fehler-block-nicht-in-bibliothek": "\n ERROR: block '%1' not in library", + "vfc-fehler-block-nicht-in-bibliothek-abgebrochen": "\n ERROR: block '%1' not in library - cancelled", + "vfc-fehler-ks-fehlen": "\n ERROR: KS_EIN/KS_AUS missing in '%1'", + "vfc-fehler-ungueltiger-einfuegepunkt": "\n ERROR: invalid insertion point for '%1'", + "vfc-fuege-block-ein-hz": "\n Inserting block '%1'... (hz=%2%3)", + "vfc-fuege-block-ein-rotation-hz": "\n Inserting block '%1' (rotation %2%3 hz=%4%5)", + "vfc-fuege-ein-lwhz": "\n Inserting '%1' (L=%2 mm, W=%3%4 hz=%5%6)", + "vfc-ks-aus-xyz": "\n KS_AUS: X=%1 Y=%2 Z=%3", + "vfc-lade-block": "\n Loading block: %1 ...", + "vfc-laenge-uebersprungen": "\n Length=%1 mm -> skipped", + "vfc-punkt-auf-objekt": "\n Point on object: Z=%1 mm", + "vfe-as30-mass": "\n AS_30_rechts: dx=%1 mm, dz=%2 mm", + "vfe-block-fehlt-abbruch": "\n ERROR: block '%1' not in library - cancelled", + "vfe-bogen-nicht-vorhanden": "\n %1 -> arc not available", + "vfe-delta-info": "\nΔL=%1 mm ΔH=%2 mm Direction=%3", + "vfe-empfohlener-winkel": "\n>>> Recommended angle: %1", + "vfe-es30-mass": "\n ES_30_rechts: dx=%1 mm, dz=%2 mm", + "vfe-extrahiere-block-mass": "\n Extracting %1 dimensions...", + "vfe-gefaellebogen-links-mass": "\n Slope arc left: dx=%1 dz=%2 mm", + "vfe-gefaellebogen-rechts-mass": "\n Slope arc right: dx=%1 dz=%2 mm", + "vfe-gefaellebogen-seite-dx": "\n Slope arc %1: dx=%2 mm", + "vfe-hz-incl-status": "\n HzIncl %1 L=%2 hz=%3 v=%4 -> Z=%5", + "vfe-hz-rot-status": "\n HzRot %1 hz=%2 v=%3 -> Z=%4", + "vfe-hz-rotks-status": "\n HzRotKS %1 hz=%2 -> Z=%3", + "vfe-hz-scaleks-status": "\n HzScaleKS %1 %2mm hz=%3 -> Z=%4", + "vfe-ks-fehlt-startpunkt": "\n WARNING: KS missing in '%1' - using start point", + "vfe-step1-as30": "\n\n1/15: %1 (0 deg)", + "vfe-step2": "\n\n2/15: Buffer section 400mm (%1 deg hz, 3 deg vert, KS_EIN)", + "vfe-step3": "\n\n3/15: Separator (300mm, %1 deg hz, 3 deg vert)", + "vfe-step4": "\n\n4/15: %1 (start, %2 deg hz, 0 deg vert, KS_EIN)", + "vfe-step5-strecke": "\n\n5/15: Slope section (3 deg, L=%1 mm)", + "vfe-step7": "\n\n7/15: %1 (3 deg inclined)", + "vfe-step8-ab": "\n\n8/15: Slope section (%1 deg, L=%2 mm)", + "vfe-step8-auf": "\n\n8/15: Incline section (%1 deg, L=%2 mm)", + "vfe-tabelle-zeile": "\n %1 %2 mm %3 mm ", + "vfe-tabelle-zeile-fehler": "\n %1 --- --- ERROR", + "vfl-20m-hinweis": "\n >>> NOTE: conveyor longer than 20 m (%1 m) - motor station recommended!", + "vfl-block-erstellt": "\n>>> Block '%1' (%2) created and inserted.", + "vfl-fehler-rest-nicht-baubar": "\n ERROR: remainder cannot be built (too steep/too short for tail motor+GF2+separator+ES). Please continue drawing or plan flatter.", + "vfl-fuege-block-ein": "\n Inserting %1 ...", + "vfl-hinweis-gf2-minimum": "\n NOTE: calculated GF2=%1 mm < minimum %2 mm -> raised to minimum (ES therefore ends a bit further on; see actual-vs-target report).", + "vfl-horizontale-zwischenstrecke": "\n\nHorizontal intermediate section (0 deg, L=%1 mm)", + "vfl-kettenende-modus-ziel": "\n>>> Chain-end mode: target dL=%1 mm, dH=%2 mm (%3). GF2 varies with the angle.", + "vfl-prompt-hoehe-endpunkt": "\nHeight (Z) of the end point [%1]: ", + "vfl-prompt-hoehe-kettenende": "\nHeight (Z) of the chain end (ES element) [%1]: ", + "vfl-prompt-wahl-bis-n": "\nYour choice (1-%1) [1]: ", + "vfl-segment-gf-nicht-erlaubt": "\n Segment would be GF (too steep) or not buildable - not allowed within a VF unit.\n Please draw flatter/rising or end the conveyor.", + "vfl-winkel-option": "\n %1 - %2 deg (L_GF=%3 mm L_VF=%4 mm)", + "vfs-as90-mass": "\n AS_90: dx=%1 dz=%2", + "vfs-berechnung-parameter": "\nΔL=%1 mm ΔH=%2 mm Direction=%3", + "vfs-block-fehlende-item": "\n - %1", + "vfs-block-fehler-pfad": "\n ERROR: DXFM_BLOCKS = %1", + "vfs-bogen-ab-block-fehlt": "\n ERROR ab_%1: block not loaded!", + "vfs-bogen-ab-ks-fehlt": "\n ERROR ab_%1: KS missing!", + "vfs-bogen-ab-ok": "\n OK ab_%1: dx=%2 dz=%3", + "vfs-bogen-auf-block-fehlt": "\n ERROR auf_%1: block not loaded!", + "vfs-bogen-auf-ks-fehlt": "\n ERROR auf_%1: KS missing!", + "vfs-bogen-auf-ok": "\n OK auf_%1: dx=%2 dz=%3", + "vfs-empfohlener-winkel": "\n>>> Recommended angle: %1%2", + "vfs-es90-mass": "\n ES_90: dx=%1 dz=%2", + "vfs-fehler-winkel-tabelle": "\n ERROR: angle %1 not in arc table!", + "vfs-schritt-as": "\n\n1/11: %1 (hz=%2%3)", + "vfs-schritt5-bogen1": "\n\n5/11: %1 (3 deg inclined)", + "vfs-tabelle-zeile": "\n %1%2 %3 mm %4 mm ", + "vfs-tabelle-zeile-fehler": "\n %1%2 --- --- ERROR", + "vfs-vf-eingang-gf1": "\n\n[VF-Eingang] Slope section GF1 (3 deg, L=%1 mm)", + "kreisel-abbruch-befehl": "\nCommand cancelled.", + "kreisel-abgebrochen": "\nCancelled.", + "kreisel-connect-erfolgreich": "\nKreisel Connect successful!", + "kreisel-connect-header": "\n--- Define Kreisel by line (AN -> SP) ---", + "kreisel-eckrad-beruehrpunkt": "\nTangent point Eckrad (tangent): ", + "kreisel-eckrad-fehler-identisch": "\nError: tangent point and direction point are identical!", + "kreisel-eckrad-richtung": "\nDirection to circle centre: ", + "kreisel-emsg-kein-block": "No block selected!", + "kreisel-emsg-kein-kreisel-block": "Not a Kreisel block! (attribute ABSTAND missing)", + "kreisel-fehler-keine-entities": "\nError: no entities to create block!", + "kreisel-insert-fertig": "\nKreisel module inserted.", + "kreisel-params-attribute-header": "\nAttributes in block:", + "kreisel-params-header": "\n=== Kreisel parameters ===", + "kreisel-prompt-basispunkt": "\nBase point (AN side): ", + "kreisel-prompt-block-auswaehlen": "\nSelect Kreisel block: ", + "kreisel-prompt-endpunkt": "\nEnd point (SP side, outer): ", + "kreisel-prompt-rotation": "\nRotation in degrees <0>: ", + "kreisel-prompt-startpunkt": "\nStart point (AN side, outer): ", + "kreisel-quick-fertig": "\nQuick insert done.", + "kreisel-start-connect": "Kreisel Smart Connect", + "kreisel-start-eckrad": "Insert Eckrad", + "kreisel-start-edit": "Edit Kreisel", + "kreisel-start-insert": "Insert Kreisel module", + "kreisel-start-quick": "Kreisel quick insert", + "kreisel-start-redraw": "Redraw Kreisel", + "kreisel-start-script-connect": "Kreisel script connect", + "kreisel-start-script-insert": "Kreisel script insert", + "kreisel-typ-opt-pin": "\n[2] PIN", + "kreisel-typ-opt-standard": "\n[1] STANDARD (without PIN)", + "kreisel-warn-blockpfad": "\n[KreiselInsert] WARNING: block path not determinable!", + "kreisel-warn-core-fehlt": "\n[KreiselInsert] WARNING: ssg_core.lsp not found - using defaults.", + "omni-abbruch": "\nCancelled.", + "omni-abbruch-bogen": "\n[ARC] Cancelled.", + "omni-abbruch-omni": "\n[OMNI] Cancelled.", + "omni-abbruch-weiche": "\n[SWITCH] Cancelled.", + "omni-bogen-dialog-ladefehler": "Arc dialog could not be loaded.", + "omni-edit-kein-block": "No block selected!", + "omni-edit-kein-element": "No Omniflo element recognised! (ARTINR/block name not in catalog)", + "omni-edit-prompt-auswahl": "\nSelect Omniflo element: ", + "omni-fehler-dxfm-data": "\n[OMNI] ERROR: DXFM_DATA not set!", + "omni-fehler-dxfm-omniflo": "\n[OMNI] ERROR: DXFM_OMNIFLO not set!", + "omni-info-bogen-prompt": "\nEnter Sivas ID of the arc: ", + "omni-info-weiche-prompt": "\nEnter Sivas ID of the switch: ", + "omni-insert-keine-attribute": "\n[OMNI] No attributes found on source block.", + "omni-prompt-drehwinkel": "\nSpecify rotation angle: ", + "omni-prompt-einfuegepunkt": "\nSelect insertion point: ", + "omni-prompt-endpunkt-fahrstrecke": "\nSelect end point of the travel path: ", + "omni-weiche-dialog-ladefehler": "Switch dialog could not be loaded.", + "prompt-wahl-1-2-3-4": "\nYour choice (1/2/3/4) [1]: ", + "vfc-alert-keine-gueltige-linie": "No valid line selected!", + "vfc-bitte-3dlinie-foerderstrecke": "\nPlease select a 3D line for the conveyor section:", + "vfc-bks-weltkoordinaten": "\n UCS set to world coordinates.", + "vfc-eingabemodus-3dlinie": "\n 1 - Select 3D line (start and end point with height)", + "vfc-eingabemodus-header": "\n\nSelect input mode:", + "vfc-eingabemodus-werte": "\n 2 - Enter values manually", + "vfc-fahrtrichtung-0": "\n 1 - 0%1 (X axis +, East)", + "vfc-fahrtrichtung-180": "\n 3 - 180%1 (X axis -, West)", + "vfc-fahrtrichtung-270": "\n 4 - 270%1 (Y axis -, South)", + "vfc-fahrtrichtung-90": "\n 2 - 90%1 (Y axis +, North)", + "vfc-fahrtrichtung-header": "\n\nSelect travel direction:", + "vfc-fehler-keine-linie": "\n ERROR: No line or polyline selected!", + "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: ", + "vfc-modus-3dlinie-fallback": "Line", + "vfc-modus-3dlinie-header": "\n\n>>> MODE: Select 3D line <<<", + "vfc-modus-werteingabe-header": "\n\n>>> MODE: Manual value entry <<<", + "vfc-objekt-block-waehlen": "\n >> Select object (block): ", + "vfc-prompt-delta-h": "\n%1H - height difference (mm): ", + "vfc-prompt-delta-l": "\n%1L - horizontal distance (mm): ", + "vfc-prompt-startpunkt-aus": "\nSelect start point for AUS_Element: ", + "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.", + "vfs-dlg-richtung-auf": "Up", + "vfs-dlg-richtung-ab": "Down", + "vfs-dlg-winkel-horizontal": "Horizontal (GF=%1 mm, VF=%2 mm)", + "vfs-dlg-winkel-option": "%1%2 (GF=%3 mm, VF=%4 mm)", + "vfs-dlg-verteilung-1": "Even (L_GF1 = L_GF2 = L_GF/2)", + "vfs-dlg-verteilung-2": "Front minimum, rear remainder", + "vfs-dlg-verteilung-3": "Rear minimum, front remainder", + "vfs-dlg-verteilung-4": "Enter custom values", + "vfs-edit-kein-vf": "Block %1 is not a VarioFoerderer conveyor.", + "vfs-edit-keine-xdata": "VarioFoerderer %1 was not created with this dialog (Etage/Linienzug/legacy) and cannot be edited here.", + "vfs-edit-neu-aufgebaut": "\nVarioFoerderer %1 rebuilt.", + "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.", + "vfe-bib-init-erfolg": "\n Etage library successfully initialised.", + "vfe-bib-initialisiere": "\n Initialising Etage library...", + "vfe-ergebnistabelle-header": "\n RESULT TABLE (L_GF = total of both GF sections)", + "vfe-extrahiere-as30": "\n Extracting AS_30_rechts dimensions...", + "vfe-extrahiere-es30": "\n Extracting ES_30_rechts dimensions...", + "vfe-kein-winkel-gefunden": "\n>>> NO matching angle found!", + "vfe-status-gueltig": "VALID", + "vfe-status-ungueltig": "INVALID (negative length)", + "vfe-step5-skip": "\n\n5/15: L_GF1 (skipped)", + "vfe-step6": "\n\n6/15: deflection station (500mm, 3 degrees inclined)", + "vfe-step8-skip": "\n\n8/15: L_VF (skipped)", + "vfe-tabelle-spalten": "\n Angle L_GF (mm) L_VF (mm) Status", + "vfe-warn-block-as30-fehlt": "\n WARNING: block AS_Element_30_rechts missing - using defaults", + "vfe-warn-block-es30-fehlt": "\n WARNING: block ES_Element_30_rechts missing - using defaults", + "vfe-warn-block-fehlt-links": "\n WARNING: block missing - using defaults (left)", + "vfe-warn-block-fehlt-rechts": "\n WARNING: block missing - using defaults (right)", + "vfe-warn-kein-ks-links": "\n WARNING: no KS - using defaults (left)", + "vfe-warn-kein-ks-rechts": "\n WARNING: no KS - using defaults (right)", + "vfe-warn-ks-fehlt-standard": "\n WARNING: KS missing - using defaults", + "vfe-warn-lisp-pfad": "\n[vf_etage] WARNING: Lisp path not determinable - cannot load vf_core.lsp!", + "vfl-abgebrochen-kein-ziel": "\n Cancelled - no target point selected.", + "vfl-bogen-ab3-uebergang": "\n\nVario_Bogen_ab_3 (transition horizontal -> 3 degrees)", + "vfl-bogen-auf3-uebergang": "\n\nVario_Bogen_auf_3 (transition 3 degrees -> horizontal)", + "vfl-gf-verteilung-ganz-einlauf": "\n 2 - Entire buffer section at inlet (GF1), no GF2", + "vfl-gf-verteilung-haelfte": "\n 1 - 1/2 GF at outlet (GF2), 1/2 GF at inlet (GF1)", + "vfl-gf-verteilung-header": "\n\nBuffer section (GF) - choose distribution:", + "vfl-ist-endpunkt-frage": "\n\nIs this the end point of the conveyor?", + "vfl-ist-kettenende-frage": "\n\nIs this the chain end (ES element)?", + "vfl-ja-motorstation-kettenende": "\n 3 - Yes (set motor station, define chain end)", + "vfl-ja-nur-motorstation": "\n 1 - Yes (set motor station only)", + "vfl-ja-separator-es": "\n 1 - Yes (set separator + ES element)", + "vfl-linie-zu-kurz-simple": "\n Line too short - skipped.", + "vfl-linie-zu-kurz-uebersprungen": "\n Line too short (or against travel direction) - skipped.", + "vfl-mehrere-winkel-header": "\n\nSeveral valid angles - please choose the desired angle:", + "vfl-modus1-beschreibung": "\nMixed slope-section/VarioFoerderer chain along a freely", + "vfl-modus1-header": "\n VF-LINIENZUG - Mode 1: Manual entry", + "vfl-naechstes-element-vf": "\n\nNext element in the VarioFoerderer:", + "vfl-nein-weiterbauen": "\n 2 - No (continue building)", + "vfl-opt-auf-ab-foerderer": "\n 3 - Up/down conveyor (line with height difference)", + "vfl-opt-horizontaler-foerderer": "\n 1 - Horizontal conveyor (line without height difference)", + "vfl-opt-vario-kurve": "\n 2 - Vario curve (30/60/90 degrees)", + "vfl-prompt-wahl-1-2-def2": "\nYour choice (1/2) [2]: ", + "vfl-prompt-wahl-1-3-def2": "\nYour choice (1/2/3) [2]: ", + "vfl-prompt-wahl-1-3-def3": "\nYour choice (1/2/3) [3]: ", + "vfl-sep-horizontal-info": "\n [horizontal] Separator (300 mm, 0 degrees)", + "vfs-berechnung-header": "\n CALCULATION FOR ALL ANGLES (Standard)", + "vfs-block-fehlende-header": "\n The following block files are missing:", + "vfs-ergebnistabelle-header": "\n RESULT TABLE", + "vfs-extrahiere-aus": "\n Extracting AUS_Element dimensions...", + "vfs-extrahiere-bogen": "\n Extracting arc dimensions...", + "vfs-extrahiere-ein": "\n Extracting EIN_Element dimensions...", + "vfs-fehler-block-as90": "\n ERROR: block AS_Element_90_links not loaded!", + "vfs-fehler-block-es90": "\n ERROR: block ES_Element_90_links not loaded!", + "vfs-fehler-ks-as90": "\n ERROR: KS_EIN/KS_AUS missing in AS_90!", + "vfs-fehler-ks-es90": "\n ERROR: KS_EIN/KS_AUS missing in ES_90!", + "vfs-fehler-lib-nicht-init": "\n ERROR: library not correctly initialised (AUS/EIN dimensions missing)!", + "vfs-kein-winkel-gefunden": "\n>>> NO matching angle found!", + "vfs-lib-bereits-init": "\n Standard library already initialised.", + "vfs-lib-init-erfolg": "\n Standard library successfully initialised.", + "vfs-lib-init-start": "\n Initialising standard library...", + "vfs-status-gueltig": "VALID", + "vfs-status-ungueltig": "INVALID (negative length)", + "vfs-tabelle-spalten": "\n Angle L_GF (mm) L_VF (mm) Status", + "vfs-vf-eingang-gf1-skip": "\n\n[VF-Eingang] Slope section GF1 (skipped)", + "vfs-vf-eingang-separator": "\n[VF-Eingang] Separator (300 mm, 3 degrees inclined)", + "vfs-vf-eingang-umlenk": "\n[VF-Eingang] Deflection station (500 mm, 3 degrees inclined)", + "vfs-warn-lisppfad": "\n[vf_standard] WARNING: Lisp path not determinable - cannot load vf_core.lsp!", + "dim-switch-modus": "\nMode switched to: %1", + "dim-switch-blocks": "\n DXFM_BLOCKS = %1", + "dim-switch-omniflo": "\n DXFM_OMNIFLO = %1", + "dim-batch-fertig": "\nConversion to %1 complete: %2 GF, %3 VF rebuilt (%4 already in target dimension).", + "sprache-gewechselt": "\nLanguage switched to: %1", + "cmd-block-auswaehlen": "\nSelect block: ", + "cmd-kein-block-ausgewaehlt": "\nNo block selected.", + "cmd-kreisel-bearbeiten": "\nEdit Kreisel: %1", + "cmd-eckrad-bearbeiten": "\nEdit Eckrad: %1", + "cmd-gefaelle-bearbeiten": "\nEdit Gefaellestrecke: %1", + "cmd-variofoerderer-bearbeiten": "\nEdit VarioFoerderer: %1", + "gf-edit-kein-gf": "Block %1 is not a Gefaellestrecke.", + "gf-edit-nur-einfach": "Only simple Gefaellestrecken (without arcs) can be edited via the dialog.\nTYP: %1", + "gf-edit-neu-aufgebaut": "\nGefaellestrecke %1 rebuilt.", + "gf-vf-modul-fehlt": "VarioFoerderer module not loaded!", + "gf-vf-gebaut": "\n-> Parallel VarioFoerderer built (2000 mm beside the Gefaellestrecke, opposite direction, rising).", + "cmd-omniflo-bearbeiten": "\nEdit Omniflo element: %1", + "cmd-attribute-bearbeiten": "\nEdit attributes: %1", + "ils-station-prompt-punkt": "\nInsertion point for %1 [ENTER=End]: ", + "ils-station-fehler-blockdatei": "\n>>> ERROR: block file '%1.dwg' not found (check data/ils).", + "ils-station-fertig": "\n>>> %1 x %2 inserted.", + "layer-prompt-ziel-layer": "\nSelect object on the target layer: ", + "layer-prompt-objekt": "\nSelect object: ", + "layer-prompt-referenz-objekt": "\nSelect reference object (determines type and layer): ", + "layer-prompt-typ-ermittlung": "\nClick again to determine the type: ", + "layer-prompt-ausblenden": "\nClick layer to hide (Enter=End): ", + "layer-prompt-einfrieren": "\nClick layer to freeze (Enter=End): ", + "layer-prompt-aktiv-bleibt": "\nSelect object on the layer that stays ACTIVE: ", + "layer-prompt-name-loeschen": "\nLayer name to delete: ", + "layer-err-kein-objekt": "No object selected.", + "layer-err-kein-ziel-layer": "No target layer selected.", + "layer-err-kein-ziel-layer-kurz": "No target layer.", + "layer-err-keine-passenden-objekte": "No matching objects found.", + "layer-abgebrochen": "Cancelled.", + "layer-err-kein-referenz-objekt": "No reference object selected.", + "layer-err-aktiv-nicht-ausschalten": "Cannot turn off the active layer!", + "layer-err-aktiv-nicht-einfrieren": "Cannot freeze the active layer!", + "layer-aktiver-layer": "\nActive layer: %1", + "layer-objekt-auf-layer": "\nObject is on layer: %1", + "layer-nur-layer-sichtbar": "\nOnly layer '%1' is visible.", + "layer-geloescht": "\nLayer '%1' deleted.", + "layer-leerer-geloescht": "\nEmpty layer '%1' deleted.", + "layer-existiert-nicht": "Layer '%1' does not exist.", + "layer-ques-typ-wechseln": "Change layer of these %1 objects?", + "layer-ques-alle-loeschen": "Delete all objects on layer '%1'?", + "core-start-titel": "\n***** %1 *****\n", + "core-errhan-fehler": "\nError: ", + "core-blockname-exists": "Block name '%1' already exists - skipping.", + "core-dwg-not-found": "\nERROR: Block not found: %1", + "exp-cfg-not-found": "\n[export] WARNING: %1 not found/empty, using defaults.", + "exp-check-ids": "\n[%1] Checking and assigning IDs...", + "exp-update-hoehe-drehung": "\n[%1] Updating height/rotation...", + "exp-collect-blocks": "\n[%1] Collecting relevant blocks...", + "exp-no-blocks-found": "\n[%1] No relevant blocks found.", + "exp-blocks-found": "\n[%1] %2 blocks found.", + "exp-output-dir": "\n[%1] Output folder: %2", + "exp-file-open-error": "\n[%1] ERROR: Cannot open file: %2", + "exp-json-written": "\n[%1] JSON written: %2", + "exp-calling-python": "\n[%1] Calling Python...", + "exp-export-started": "\n[%1] Export started: %2", + "exp-dxfm-lib-missing": "\n[%1] ERROR: Environment variable DXFM_LIB is not set - BricsCAD was probably not started via bin/start_briscad.bat. CSV/JSON were written, the Python call is skipped.", + "exp-python-not-found": "\n[%1] ERROR: Python script not found: %2", + "exp-python-exe": "\n[%1] Interpreter: %2", + "exp-export-done": "\n[%1] Export finished: %2", + "exp-python-call-failed": "\n[%1] ERROR: Could not start Python (WScript.Shell unavailable).", + "exp-python-error": "\n[%1] ERROR: Python exited with code %2. Log: %3", + "exp-python-store-hint": "\n NOTE: No real Python interpreter was found (on Windows 11 'python' points\n to the WindowsApps placeholder). Fix: run bin/install_py.bat (creates .venv)\n and restart BricsCAD via bin/start_briscad.bat, or set the full path to\n python.exe in cfg/export.cfg under [python] interpreter=.", + "exp-csv-missing": "\n[%1] ERROR: Python reported success but the CSV is missing: %2. Log: %3", + "exp-omni-no-inserts": "\n[OMNI_UPDATE] No INSERT blocks in the drawing.", + "exp-omni-updated": "\n[OMNI_UPDATE] %1 elements updated (HEIGHT, ROTATION).", + "id-new-assigned": "\n[ID] New ID assigned: %1", + "id-invalid-block": "\n[ID] ERROR: Not a valid INSERT block!", + "id-check-no-blocks": "\n[IDSCHECK] No relevant blocks found.", + "id-check-missing-set": "\n[IDSCHECK] Missing ID set: %1 (block %2)", + "id-check-duplicate": "\n[IDSCHECK] Duplicate ID %1 -> new ID %2 (block %3)", + "id-check-done": "\n[IDSCHECK] Done. %1 duplicates corrected.", + "id-check-corrected": "\n[IDSCHECK] %1 IDs corrected.", + "id-select-block-prompt": "\nSelect block: ", + "id-generate-invalid": "\n[IDGENERATE] No valid block selected.", + "dialog-nicht-verfuegbar": "Dialog not available.", + "dialog-einfuegepunkt-waehlen": "\nSelect insertion point: ", + "extcall-python-rueckgabe": "\n[SSG_LIB] Python return value: %1", + "extcall-keine-rueckgabe": "\n[SSG_LIB] WARNING: No return value received from Python.", + "extcall-skript-nicht-gefunden": "\n[SSG_LIB] ERROR: %1 not found!", + "vfstart-core-nicht-gefunden": "\n[VarioFoerderer] WARNING: vf_core.lsp not found - commands not available.", + "vfstart-etage-core-nicht-gefunden": "\n[EtageVarioFoerderer] WARNING: vf_core.lsp not found - commands not available.", + "gf-seite-aus-header": "\n\nOutput element (AS_Element_*) - choose side:", + "gf-seite-ein-header": "\n\nInput element (ES_Element_*) - choose side:", + "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]: ", + "geruest-typ-header": "\n\nSelect scaffold option:", + "geruest-typ-opt": "\n %1 - %2", + "geruest-typ-prompt": "\nScaffold option (1-4) [%1]: ", + "kreisel-eckrad-geruest-frage": "Scaffold for single module?", + "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-alert-dialog-fehlt": "Dialog file not found:\n%1", + "gf-dlg-richtung-0": "0%1 (X+, East)", + "gf-dlg-richtung-90": "90%1 (Y+, North)", + "gf-dlg-richtung-180": "180%1 (X-, West)", + "gf-dlg-richtung-270": "270%1 (Y-, South)", + "gf-dlg-links": "Left", + "gf-dlg-rechts": "Right", + "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 : ", + "tefl-fehler-dxfm-omniflo": "\n[TEF] ERROR: DXFM_OMNIFLO not set (run bin/setenv.bat).", + "tefl-fehler-dxf-nicht-gefunden": "\n[TEF] ERROR: Element DXF not found: %1", + "tefl-prompt-startpunkt": "\nSelect start point of the conveyor path: ", + "tefl-prompt-endpunkt": "\nSelect end point of the conveyor path: ", + "tefl-abgebrochen": "\n[TEF] Cancelled.", + "tefl-fehler-laenge-null": "\n[TEF] ERROR: Start and end point are too close together.", + "tefl-fertig": "\n[TEF] %1 element(s) inserted, path length=%2 mm.", + "vfl-kette-titel": "\n Vario_Kette_Merge - merge several Vario conveyor blocks (loose or already wrapped) into one combined block", + "vfl-kette-start-waehlen": "\n\nSelect the starting block of the chain (first element - AS element or VF_n): ", + "vfl-kette-kein-objekt": "\nNo object selected - cancelled.", + "vfl-kette-kein-vf-block": "\nSelected object ('%1') is not a known Vario chain block (AS/ES element, GF bend, Vario curve, deflection/motor station, vertical bend, buffer/separator or VF_n).", + "vfl-kette-start-nicht-gefunden": "\nERROR: Starting block not found in the chain collection (internal error).", + "vfl-kette-start-nicht-gefunden-diag": "\nERROR: Starting block not found in the chain collection (internal error).\n Diagnostic: %1 blocks collected in total, selected block name='%2', %3 of those with the same block name.", + "vfl-kette-start-ohne-ks-ein": "\nERROR: No KS_EIN found on the selected block - chain cannot be followed.", + "vfl-kette-nur-ein-baustein": "\nNo further connected VF_n block was found from the selected block onward - nothing to merge.", + "vfl-kette-gefunden": "\n\nChain detected: %1 block(s) will be merged:", + "vfl-kette-luecke-warnung": "\n\n WARNING: after '%1' a visually close but not properly connected VF_n ('%2') was found (KS distance %3 mm) - the chain was ended there; this and all further blocks are left untouched.", + "vfl-kette-fertig": "\n\n>>> Done: new combined block '%1' created from %2 block(s).", + "cmd-tro-bearbeiten": "\nEdit TRO marker: %1", + "cmd-connection-bearbeiten": "\nEdit connection: %1", + "con-keine-verbindung": "Block %1 is not a connection (expected CONNECTION_*).", + "con-kein-tro": "Block %1 is not a TRO marker - connections only run between TROs.", + "con-block-fehlt": "Block definition %1 is missing in this drawing.\nRun tro_annotate.py with --flow first.", + "con-quelle-waehlen": "\nSelect source TRO: ", + "con-ziel-waehlen": "\nSelect target TRO: ", + "con-gleicher-block": "Source and target are the same block.", + "con-gleicher-punkt": "Source and target are at the same position.", + "con-dialog-fehlt": "Dialog file not found:\n%1\nCheck DXFM_DCL (setenv.bat).", + "con-block": "Block: %1 (UID %2)", + "con-richtung": "Direction: %1 ----> %2", + "con-hinweis": "The UID is permanent, the TRO id may change.", + "con-id-leer": "Source and target UID must not be empty - nothing changed.", + "con-gleiche-id": "Source and target must not share the same UID.", + "con-eingefuegt": "\nConnection %1 ----> %2 inserted (UID %3).", + "con-gespeichert": "\nConnection saved: %1 ----> %2", + "tro-edit-kein-tro": "Block %1 is not a TRO marker (expected TRO_*).", + "tro-edit-kein-id-attribut": "Block %1 has no ID attribute - please re-annotate (tro_annotate.py).", + "tro-edit-dialog-fehlt": "Dialog file not found:\n%1\nCheck DXFM_DCL (setenv.bat).", + "tro-edit-modul-fehlt": "%1 not loaded - editing attributes with EATTEDIT instead.", + "tro-edit-block": "Block: %1", + "tro-edit-fb": "Function block: %1 UID: %2", + "tro-edit-hinweis": "Symbol and FB follow on the next tro_annotate.py run.", + "tro-edit-id-leer": "The TRO id must not be empty - nothing changed.", + "tro-edit-gespeichert": "\nTRO saved: ID = %1, TYPE = %2", + "tro-edit-typ-geaendert": "\nType changed - re-run tro_annotate.py so symbol and FB match.", + "tro-insert-kein-typ": "No TRO types available (tro_types.lsp missing) - run lib/tro_annotate.py --emit-lisp.", + "tro-insert-hinweis": "The block shape must already exist in the drawing (from an earlier tro_annotate.py run).", + "tro-insert-kein-block": "No symbol for this type in the drawing (%1) - run tro_annotate.py with this type first.", + "tro-insert-prompt-punkt": "\nInsertion point: ", + "tro-insert-eingefuegt": "\nTRO inserted: ID = %1, TYPE = %2" + } } diff --git a/menu/SSG_LIB.mnu b/menu/SSG_LIB.mnu index 47774c5..d1ef45b 100644 --- a/menu/SSG_LIB.mnu +++ b/menu/SSG_LIB.mnu @@ -130,6 +130,10 @@ [Marker einfuegen]^C^C(ssg-ensure "Tro_Edit") TRO_INSERT [Marker bearbeiten]^C^C(ssg-ensure "Tro_Edit") TRO_EDIT [<-Bearbeiten (Auto)]^C^C(ssg-ensure "SSG_LIB_Commands") SSG_BLOCKEDIT +[->Connections] +[Verbindung einfuegen]^C^C(ssg-ensure "Connection_Edit") CONNECTION_INSERT +[Verbindung bearbeiten]^C^C(ssg-ensure "Connection_Edit") CONNECTION_EDIT +[<-Bearbeiten (Auto)]^C^C(ssg-ensure "SSG_LIB_Commands") SSG_BLOCKEDIT [->Export] [Export Sivas]^C^C(ssg-ensure "count_sep_scan") ZAEHLE_SEP_SCAN (ssg-ensure "export") EXPORTSIVAS [<-Export CSV]^C^C(ssg-ensure "export") EXPORTCSV @@ -167,5 +171,6 @@ [Gefaellestrecke bearbeiten](ssg-ensure "Gefaellestrecke") GEFAELLESTRECKE_EDIT [VarioFoerderer bearbeiten](ssg-ensure "VarioFoerderer") VARIOFOERDERER_EDIT [TRO-Marker bearbeiten](ssg-ensure "Tro_Edit") TRO_EDIT +[Verbindung bearbeiten](ssg-ensure "Connection_Edit") CONNECTION_EDIT [--] [SSG Bearbeiten (Auto)](ssg-ensure "SSG_LIB_Commands") SSG_BLOCKEDIT