Merge origin/master: i18n-System (de/en) + 30-Grad-AS/ES-Elemente zusammenfuehren
Lokaler Stand (Modus-3 Randwert-Solver, 30/90-AS/ES, Kreisel-Attribute) mit dem Remote-Stand (Internationalisierung ssg-text, neue Bloecke, Sivas-Export) vereint. Konfliktaufloesung: - vf_linienzug.lsp: Nicht-interaktive -block-Kerne (fuer Pfad-Modi) behalten, interaktive Abfragen (GF-Bogen, Vario-Kurve, ES-Seite) auf ssg-text umgestellt. Kein doppelter defun mehr. - Gefaellestrecke.lsp: 30/90-Winkelabfrage mit den i18n-Seiten-Prompts kombiniert; gefaellestrecke-einfuegen-Aufruf mit as-/es-winkel. - vf_core.lsp: vf-frage-element-winkel nimmt jetzt einen i18n-Header-Key (vf-winkel-aus-header / vf-winkel-ein-header) statt festem Text. - lang/de_DE.json + en_GB.json: neue Keys vf-winkel-aus/ein-header, vf-winkel-90/30; gf-seite-Header ohne irrefuehrendes "_90_". - export_sivas.py: ANZAHL_SEPARATOR/ANZAHL_SCANNER mit N_*-Fallback plus Remote-Umsortierung; doppelte "Kreiselart"-Zeile entfernt. - AS_Element_30_links/rechts.dwg + Separator_SP.dwg (3D): Remote-Version (Attribut-Stand) uebernommen. Die KS_AUS-Geometrie-Korrektur der 30-Grad- AS-Elemente wird danach in BricsCAD nachgezogen. Offen (Folge-Commit): die Modus-Treiber in vf_linienzug.lsp (vf-linienzug-modus / -modus2 / -modus3) sind noch nicht i18n (ca. 110 Strings). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
+128
-143
@@ -253,14 +253,14 @@
|
||||
(setq block-datei (strcat block-pfad blockname ".dwg"))
|
||||
(if (findfile block-datei)
|
||||
(progn
|
||||
(princ (strcat "\n Lade Block: " blockname " ..."))
|
||||
(princ (ssg-textf "vfc-lade-block" (list blockname)))
|
||||
(setq temp-obj (vla-InsertBlock modelspace
|
||||
(vlax-3D-point '(0 0 0))
|
||||
block-datei 1.0 1.0 1.0 0))
|
||||
(vla-Delete temp-obj)
|
||||
(princ " OK")
|
||||
(princ (ssg-text "vfc-status-ok"))
|
||||
)
|
||||
(princ (strcat "\n FEHLER: Block-Datei nicht gefunden: " block-datei))
|
||||
(princ (ssg-textf "vfc-fehler-block-datei-fehlt" (list block-datei)))
|
||||
)
|
||||
)
|
||||
)
|
||||
@@ -341,7 +341,7 @@
|
||||
;; ============================================================
|
||||
(defun get-3d-point-from-object (msg / ent obj pt variant)
|
||||
(princ msg)
|
||||
(princ "\n >> Objekt (Block) waehlen: ")
|
||||
(princ (ssg-text "vfc-objekt-block-waehlen"))
|
||||
(setq ent (entsel))
|
||||
(if ent
|
||||
(progn
|
||||
@@ -350,17 +350,17 @@
|
||||
(progn
|
||||
(setq variant (vla-get-InsertionPoint obj))
|
||||
(setq pt (vlax-safearray->list (vlax-variant-value variant)))
|
||||
(princ (strcat "\n Block-Einfuegepunkt: X=" (rtos (car pt) 2 3)
|
||||
" Y=" (rtos (cadr pt) 2 3) " Z=" (rtos (caddr pt) 2 3)))
|
||||
(princ (ssg-textf "vfc-block-einfuegepunkt"
|
||||
(list (rtos (car pt) 2 3) (rtos (cadr pt) 2 3) (rtos (caddr pt) 2 3))))
|
||||
)
|
||||
(progn
|
||||
(setq pt (cadr ent))
|
||||
(princ (strcat "\n Punkt auf Objekt: Z=" (rtos (caddr pt) 2 2) " mm"))
|
||||
(princ (ssg-textf "vfc-punkt-auf-objekt" (list (rtos (caddr pt) 2 2))))
|
||||
)
|
||||
)
|
||||
)
|
||||
(progn
|
||||
(princ "\n Kein Objekt gewaehlt.")
|
||||
(princ (ssg-text "vfc-kein-objekt-gewaehlt"))
|
||||
(setq pt nil)
|
||||
)
|
||||
)
|
||||
@@ -369,7 +369,7 @@
|
||||
|
||||
(defun get-line-start-end-points (msg / ent obj obj-name start-pt end-pt)
|
||||
(princ msg)
|
||||
(princ "\n >> 3D-Linie oder Polylinie waehlen: ")
|
||||
(princ (ssg-text "vfc-linie-polylinie-waehlen"))
|
||||
(setq ent (entsel))
|
||||
(if ent
|
||||
(progn
|
||||
@@ -381,29 +381,24 @@
|
||||
(vlax-variant-value (vla-get-StartPoint obj))))
|
||||
(setq end-pt (vlax-safearray->list
|
||||
(vlax-variant-value (vla-get-EndPoint obj))))
|
||||
(princ (strcat "\n 3D-Linie:"
|
||||
"\n Start: X=" (rtos (car start-pt) 2 2)
|
||||
" Y=" (rtos (cadr start-pt) 2 2)
|
||||
" Z=" (rtos (caddr start-pt) 2 2)
|
||||
"\n Ende: X=" (rtos (car end-pt) 2 2)
|
||||
" Y=" (rtos (cadr end-pt) 2 2)
|
||||
" Z=" (rtos (caddr end-pt) 2 2)))
|
||||
(princ (ssg-textf "vfc-3dlinie-start-ende"
|
||||
(list (rtos (car start-pt) 2 2) (rtos (cadr start-pt) 2 2) (rtos (caddr start-pt) 2 2)
|
||||
(rtos (car end-pt) 2 2) (rtos (cadr end-pt) 2 2) (rtos (caddr end-pt) 2 2))))
|
||||
)
|
||||
((= obj-name "AcDbPolyline")
|
||||
(setq start-pt (vlax-curve-getStartPoint obj))
|
||||
(setq end-pt (vlax-curve-getEndPoint obj))
|
||||
(princ (strcat "\n 3D-Polylinie:"
|
||||
"\n Start Z=" (rtos (caddr start-pt) 2 2)
|
||||
" Ende Z=" (rtos (caddr end-pt) 2 2)))
|
||||
(princ (ssg-textf "vfc-3dpolylinie-start-ende"
|
||||
(list (rtos (caddr start-pt) 2 2) (rtos (caddr end-pt) 2 2))))
|
||||
)
|
||||
(t
|
||||
(princ "\n FEHLER: Keine Linie oder Polylinie ausgewaehlt!")
|
||||
(princ (ssg-text "vfc-fehler-keine-linie"))
|
||||
(setq start-pt nil end-pt nil)
|
||||
)
|
||||
)
|
||||
)
|
||||
(progn
|
||||
(princ "\n Kein Objekt gewaehlt.")
|
||||
(princ (ssg-text "vfc-kein-objekt-gewaehlt"))
|
||||
(setq start-pt nil end-pt nil)
|
||||
)
|
||||
)
|
||||
@@ -443,18 +438,18 @@
|
||||
rad-h chv shv ein-x ein-y ein-z dx-loc dy-loc dz-loc offset ausgang)
|
||||
(if (or (null einfuegepunkt) (not (listp einfuegepunkt)))
|
||||
(progn
|
||||
(princ (strcat "\n FEHLER: Ungueltiger Einfuegepunkt fuer '" blockname "'"))
|
||||
(princ (ssg-textf "vfc-fehler-ungueltiger-einfuegepunkt" (list blockname)))
|
||||
(exit)
|
||||
)
|
||||
)
|
||||
(ensure-block-loaded blockname)
|
||||
(if (not (tblsearch "BLOCK" blockname))
|
||||
(progn
|
||||
(princ (strcat "\n FEHLER: Block '" blockname "' nicht in Bibliothek - abgebrochen"))
|
||||
(princ (ssg-textf "vfc-fehler-block-nicht-in-bibliothek-abgebrochen" (list blockname)))
|
||||
(exit)
|
||||
)
|
||||
)
|
||||
(princ (strcat "\n Fuege Block '" blockname "' ein... (hz=" (rtos (float hz) 2 1) (chr 176) ")"))
|
||||
(princ (ssg-textf "vfc-fuege-block-ein-hz" (list blockname (rtos (float hz) 2 1) (chr 176))))
|
||||
(setq rad-h (* (float hz) (/ pi 180.0)))
|
||||
(setq chv (cos rad-h) shv (sin rad-h))
|
||||
;; KS_EIN/KS_AUS ueber eigenes Temp-Objekt am Ursprung ermitteln (nicht am
|
||||
@@ -499,13 +494,12 @@
|
||||
(+ (car einfuegepunkt) (- (* chv dx-loc) (* shv dy-loc)))
|
||||
(+ (cadr einfuegepunkt) (+ (* shv dx-loc) (* chv dy-loc)))
|
||||
(+ (caddr einfuegepunkt) dz-loc)))
|
||||
(princ (strcat "\n KS_AUS: X=" (rtos (car ausgang) 2 2)
|
||||
" Y=" (rtos (cadr ausgang) 2 2)
|
||||
" Z=" (rtos (caddr ausgang) 2 2)))
|
||||
(princ (ssg-textf "vfc-ks-aus-xyz"
|
||||
(list (rtos (car ausgang) 2 2) (rtos (cadr ausgang) 2 2) (rtos (caddr ausgang) 2 2))))
|
||||
ausgang
|
||||
)
|
||||
(progn
|
||||
(princ "\n WARNUNG: KS_EIN/KS_AUS nicht gefunden!")
|
||||
(princ (ssg-text "vfc-warnung-ks-nicht-gefunden"))
|
||||
einfuegepunkt
|
||||
)
|
||||
)
|
||||
@@ -523,7 +517,7 @@
|
||||
(ensure-block-loaded blockname)
|
||||
(if (not (tblsearch "BLOCK" blockname))
|
||||
(progn
|
||||
(princ (strcat "\n FEHLER: Block '" blockname "' nicht in Bibliothek"))
|
||||
(princ (ssg-textf "vfc-fehler-block-nicht-in-bibliothek" (list blockname)))
|
||||
(exit)))
|
||||
;; Ziel-Rahmen auspacken
|
||||
(setq P-t (car target-frame)
|
||||
@@ -543,7 +537,7 @@
|
||||
(setq ks-aus-raw (cadr (assoc "KS_AUS" ks-data)))
|
||||
(if (not (and ks-ein-raw ks-aus-raw))
|
||||
(progn
|
||||
(princ (strcat "\n FEHLER: KS_EIN/KS_AUS fehlen in '" blockname "'"))
|
||||
(princ (ssg-textf "vfc-fehler-ks-fehlen" (list blockname)))
|
||||
(exit)))
|
||||
;; Block am Ursprung einfuegen (Rotation=0, Massstab=1) - dieses Objekt
|
||||
;; bleibt tatsaechlich in der Zeichnung.
|
||||
@@ -583,10 +577,8 @@
|
||||
(setq xu-out (mat3-mul-vec3 R xu-aus)
|
||||
yu-out (mat3-mul-vec3 R yu-aus)
|
||||
zu-out (mat3-mul-vec3 R zu-aus))
|
||||
(princ (strcat "\n '" blockname "' eingefuegt"
|
||||
"\n KS_AUS: X=" (rtos (car P-out) 2 2)
|
||||
" Y=" (rtos (cadr P-out) 2 2)
|
||||
" Z=" (rtos (caddr P-out) 2 2)))
|
||||
(princ (ssg-textf "vfc-block-eingefuegt-ksaus"
|
||||
(list blockname (rtos (car P-out) 2 2) (rtos (cadr P-out) 2 2) (rtos (caddr P-out) 2 2))))
|
||||
(list P-out xu-out yu-out zu-out))
|
||||
|
||||
;; Fuegt Block ein: Orientierung wie insert-block-ks-to-ks (KS_EIN-Achsen werden
|
||||
@@ -613,7 +605,7 @@
|
||||
(ensure-block-loaded blockname)
|
||||
(if (not (tblsearch "BLOCK" blockname))
|
||||
(progn
|
||||
(princ (strcat "\n FEHLER: Block '" blockname "' nicht in Bibliothek"))
|
||||
(princ (ssg-textf "vfc-fehler-block-nicht-in-bibliothek" (list blockname)))
|
||||
(exit)))
|
||||
;; Ziel-Rahmen auspacken
|
||||
(setq P-t (car target-frame)
|
||||
@@ -633,7 +625,7 @@
|
||||
(setq ks-aus-raw (cadr (assoc "KS_AUS" ks-data)))
|
||||
(if (not (and ks-ein-raw ks-aus-raw))
|
||||
(progn
|
||||
(princ (strcat "\n FEHLER: KS_EIN/KS_AUS fehlen in '" blockname "'"))
|
||||
(princ (ssg-textf "vfc-fehler-ks-fehlen" (list blockname)))
|
||||
(exit)))
|
||||
;; Block am Ursprung einfuegen (Rotation=0, Massstab=1) - dieses Objekt
|
||||
;; bleibt tatsaechlich in der Zeichnung.
|
||||
@@ -681,11 +673,11 @@
|
||||
(setq xu-out (mat3-mul-vec3 R xu-aus)
|
||||
yu-out (mat3-mul-vec3 R yu-aus)
|
||||
zu-out (mat3-mul-vec3 R zu-aus))
|
||||
(princ (strcat "\n '" blockname "' eingefuegt (XY:" (if xy-ref xy-ref "Ursprung")
|
||||
" Z:" (if z-ref z-ref "Ursprung") ")"
|
||||
"\n KS_AUS: X=" (rtos (car P-out) 2 2)
|
||||
" Y=" (rtos (cadr P-out) 2 2)
|
||||
" Z=" (rtos (caddr P-out) 2 2)))
|
||||
(princ (ssg-textf "vfc-block-eingefuegt-xyzref-ksaus"
|
||||
(list blockname
|
||||
(if xy-ref xy-ref (ssg-text "vfc-ursprung"))
|
||||
(if z-ref z-ref (ssg-text "vfc-ursprung"))
|
||||
(rtos (car P-out) 2 2) (rtos (cadr P-out) 2 2) (rtos (caddr P-out) 2 2))))
|
||||
(list P-out xu-out yu-out zu-out))
|
||||
|
||||
;; ============================================================
|
||||
@@ -752,9 +744,13 @@
|
||||
nil))))
|
||||
|
||||
;; 30/90-Wahl fuer ein AS/ES-Element. Rueckgabe: "30" oder "90" (Vorgabe 90).
|
||||
(defun vf-frage-element-winkel (label)
|
||||
(princ (strcat "\n\n" label " - Winkel: 1 - 90 Grad 2 - 30 Grad"))
|
||||
(if (= (getstring "\nIhre Wahl (1/2) [1]: ") "2") "30" "90"))
|
||||
;; headerkey: i18n-Key fuer die Kopfzeile ("vf-winkel-aus-header" oder
|
||||
;; "vf-winkel-ein-header"). Rueckgabe: "30" oder "90" (Default 90).
|
||||
(defun vf-frage-element-winkel (headerkey)
|
||||
(princ (ssg-text headerkey))
|
||||
(princ (ssg-text "vf-winkel-90"))
|
||||
(princ (ssg-text "vf-winkel-30"))
|
||||
(if (= (getstring (ssg-text "prompt-wahl-1-2")) "2") "30" "90"))
|
||||
|
||||
;; AS-/ES-Masse-Globals (aus-dx/dy/dz bzw. ein-dx/dy/dz) fuer die gewaehlte
|
||||
;; Winkel-/Seiten-Variante neu setzen (fuer berechne-alle-winkel, GF-Winkel,
|
||||
@@ -772,20 +768,19 @@
|
||||
rad-v rad-h chv shv cvv svv matrix block-obj endpunkt scale)
|
||||
(if (<= laenge 0.1)
|
||||
(progn
|
||||
(princ (strcat "\n Laenge=" (rtos laenge 2 2) " mm -> uebersprungen"))
|
||||
(princ (ssg-textf "vfc-laenge-uebersprungen" (list (rtos laenge 2 2))))
|
||||
startpunkt
|
||||
)
|
||||
(progn
|
||||
(ensure-block-loaded blockname)
|
||||
(if (not (tblsearch "BLOCK" blockname))
|
||||
(progn
|
||||
(princ (strcat "\n FEHLER: Block '" blockname "' nicht in Bibliothek - abgebrochen"))
|
||||
(princ (ssg-textf "vfc-fehler-block-nicht-in-bibliothek-abgebrochen" (list blockname)))
|
||||
(exit)
|
||||
)
|
||||
)
|
||||
(princ (strcat "\n Fuege '" blockname "' ein"
|
||||
" (L=" (rtos laenge 2 2) " mm, W=" (itoa winkel) (chr 176)
|
||||
" hz=" (rtos (float hz) 2 1) (chr 176) ")"))
|
||||
(princ (ssg-textf "vfc-fuege-ein-lwhz"
|
||||
(list blockname (rtos laenge 2 2) (itoa winkel) (chr 176) (rtos (float hz) 2 1) (chr 176))))
|
||||
(setq scale (/ laenge (ssg-cfg-or "vario" "skalierung_basis" 1000.0)))
|
||||
(setq rad-v (* (float winkel) (/ pi 180.0)))
|
||||
(setq rad-h (* (float hz) (/ pi 180.0)))
|
||||
@@ -807,9 +802,8 @@
|
||||
(+ (car startpunkt) (* laenge chv cvv))
|
||||
(+ (cadr startpunkt) (* laenge shv cvv))
|
||||
(+ (caddr startpunkt) (* laenge (- svv)))))
|
||||
(princ (strcat "\n Endpunkt: X=" (rtos (car endpunkt) 2 2)
|
||||
" Y=" (rtos (cadr endpunkt) 2 2)
|
||||
" Z=" (rtos (caddr endpunkt) 2 2)))
|
||||
(princ (ssg-textf "vfc-endpunkt-xyz"
|
||||
(list (rtos (car endpunkt) 2 2) (rtos (cadr endpunkt) 2 2) (rtos (caddr endpunkt) 2 2))))
|
||||
endpunkt
|
||||
)
|
||||
)
|
||||
@@ -837,20 +831,19 @@
|
||||
dx dz ins-pt endpunkt)
|
||||
(if (or (null startpunkt) (not (listp startpunkt)))
|
||||
(progn
|
||||
(princ (strcat "\n FEHLER: Ungueltiger Einfuegepunkt fuer '" blockname "'"))
|
||||
(princ (ssg-textf "vfc-fehler-ungueltiger-einfuegepunkt" (list blockname)))
|
||||
startpunkt
|
||||
)
|
||||
(progn
|
||||
(ensure-block-loaded blockname)
|
||||
(if (not (tblsearch "BLOCK" blockname))
|
||||
(progn
|
||||
(princ (strcat "\n FEHLER: Block '" blockname "' nicht in Bibliothek - abgebrochen"))
|
||||
(princ (ssg-textf "vfc-fehler-block-nicht-in-bibliothek-abgebrochen" (list blockname)))
|
||||
(exit)
|
||||
)
|
||||
)
|
||||
(princ (strcat "\n Fuege Block '" blockname "' ein"
|
||||
" (Rotation " (itoa winkel) (chr 176)
|
||||
" hz=" (rtos (float hz) 2 1) (chr 176) ")"))
|
||||
(princ (ssg-textf "vfc-fuege-block-ein-rotation-hz"
|
||||
(list blockname (itoa winkel) (chr 176) (rtos (float hz) 2 1) (chr 176))))
|
||||
(setq rad-v (* winkel (/ pi 180.0)))
|
||||
(setq rad-h (* (float hz) (/ pi 180.0)))
|
||||
(setq chv (cos rad-h) shv (sin rad-h) cvv (cos rad-v) svv (sin rad-v))
|
||||
@@ -906,10 +899,9 @@
|
||||
(+ (car startpunkt) (+ (* dx chv cvv) (* dz chv svv)))
|
||||
(+ (cadr startpunkt) (+ (* dx shv cvv) (* dz shv svv)))
|
||||
(+ (caddr startpunkt) (+ (* dx (- svv)) (* dz cvv)))))
|
||||
(princ (strcat "\n Endpunkt: X=" (rtos (car endpunkt) 2 2)
|
||||
" Y=" (rtos (cadr endpunkt) 2 2)
|
||||
" Z=" (rtos (caddr endpunkt) 2 2)
|
||||
" (dx=" (rtos dx 2 1) " dz=" (rtos dz 2 1) ")"))
|
||||
(princ (ssg-textf "vfc-endpunkt-xyz-dxdz"
|
||||
(list (rtos (car endpunkt) 2 2) (rtos (cadr endpunkt) 2 2) (rtos (caddr endpunkt) 2 2)
|
||||
(rtos dx 2 1) (rtos dz 2 1))))
|
||||
endpunkt
|
||||
)
|
||||
)
|
||||
@@ -920,24 +912,24 @@
|
||||
;; ============================================================
|
||||
(defun vf-eingabe-abfragen ( / eingabe-modus line-points startpunkt endpunkt differenz
|
||||
deltaL deltaH deltaX deltaY richtung antwort hz-winkel)
|
||||
(princ "\n\nEingabemodus waehlen:")
|
||||
(princ "\n 1 - 3D-Linie auswaehlen (Start- und Endpunkt mit Hoehe)")
|
||||
(princ "\n 2 - Werte manuell eingeben")
|
||||
(setq antwort (getstring "\nIhre Wahl (1/2): "))
|
||||
(princ (ssg-text "vfc-eingabemodus-header"))
|
||||
(princ (ssg-text "vfc-eingabemodus-3dlinie"))
|
||||
(princ (ssg-text "vfc-eingabemodus-werte"))
|
||||
(setq antwort (getstring (ssg-text "vfc-prompt-wahl-1-2-ohne-default")))
|
||||
(cond
|
||||
((= antwort "1") (setq eingabe-modus "Linie"))
|
||||
((= antwort "2") (setq eingabe-modus "Wert"))
|
||||
(t (setq eingabe-modus "Linie") (princ "\nModus: 3D-Linie"))
|
||||
(t (setq eingabe-modus "Linie") (princ (ssg-text "vfc-modus-3dlinie-fallback")))
|
||||
)
|
||||
(if (= eingabe-modus "Linie")
|
||||
(progn
|
||||
(princ "\n\n>>> MODUS: 3D-Linie auswaehlen <<<")
|
||||
(princ (ssg-text "vfc-modus-3dlinie-header"))
|
||||
(command "BKS" "W")
|
||||
(princ "\n BKS auf Weltkoordinaten gesetzt.")
|
||||
(princ (ssg-text "vfc-bks-weltkoordinaten"))
|
||||
(setq line-points
|
||||
(get-line-start-end-points "\nBitte 3D-Linie fuer die Foerderstrecke auswaehlen:"))
|
||||
(get-line-start-end-points (ssg-text "vfc-bitte-3dlinie-foerderstrecke")))
|
||||
(if (null line-points)
|
||||
(progn (alert "Keine gueltige Linie ausgewaehlt!") (exit))
|
||||
(progn (alert (ssg-text "vfc-alert-keine-gueltige-linie")) (exit))
|
||||
)
|
||||
(setq startpunkt (car line-points)
|
||||
endpunkt (cadr line-points))
|
||||
@@ -949,20 +941,19 @@
|
||||
;; Fahrtrichtung aus der Linie ableiten (0=Ost, 90=Nord, ...)
|
||||
(setq hz-winkel
|
||||
(* (angle '(0.0 0.0) (list (car differenz) (cadr differenz))) (/ 180.0 pi)))
|
||||
(princ (strcat "\n △L=" (rtos deltaL 2 2) " mm"
|
||||
" △H=" (rtos deltaH 2 2) " mm"
|
||||
" Fahrtrichtung=" (rtos hz-winkel 2 1) grad-zeichen))
|
||||
(princ (ssg-textf "vfc-delta-l-h-richtung"
|
||||
(list (chr 916) (rtos deltaL 2 2) (rtos deltaH 2 2) (rtos hz-winkel 2 1) grad-zeichen)))
|
||||
(if (>= deltaH 0)
|
||||
(progn (setq richtung "Auf") (princ "\n Foerderrichtung: AUF"))
|
||||
(progn (setq richtung "Auf") (princ (ssg-text "vfc-foerderrichtung-auf")))
|
||||
(progn (setq richtung "Ab") (setq deltaH (abs deltaH))
|
||||
(princ "\n Foerderrichtung: AB"))
|
||||
(princ (ssg-text "vfc-foerderrichtung-ab")))
|
||||
)
|
||||
)
|
||||
(progn
|
||||
(princ "\n\n>>> MODUS: Manuelle Werteingabe <<<")
|
||||
(setq deltaL (getreal "\n△L - Horizontale Distanz (mm): "))
|
||||
(princ (ssg-text "vfc-modus-werteingabe-header"))
|
||||
(setq deltaL (getreal (ssg-textf "vfc-prompt-delta-l" (list (chr 916)))))
|
||||
(if (null deltaL) (setq deltaL 15000))
|
||||
(setq deltaH (getreal "\n△H - Hoehenunterschied (mm): "))
|
||||
(setq deltaH (getreal (ssg-textf "vfc-prompt-delta-h" (list (chr 916)))))
|
||||
(if (null deltaH) (setq deltaH 3000))
|
||||
;; Foerderrichtung bleibt eine einfache Auf/Ab-Frage - die horizontale
|
||||
;; Zwischenstrecke ist geometrisch NUR bei "Ab" ueberhaupt erreichbar
|
||||
@@ -970,25 +961,25 @@
|
||||
;; erst SPAETER, nach Bibliotheks-Init, als Zusatzoption in der
|
||||
;; Winkel-Auswahl angeboten (siehe c:VarioFoerderer) - einheitlich fuer
|
||||
;; Werteingabe UND 3D-Linie.
|
||||
(princ "\nFoerderrichtung:\n 1 - AUF\n 2 - AB")
|
||||
(setq antwort (getstring "\nIhre Wahl (1/2): "))
|
||||
(princ (ssg-text "vfc-foerderrichtung-menu"))
|
||||
(setq antwort (getstring (ssg-text "vfc-prompt-wahl-1-2-ohne-default")))
|
||||
(if (= antwort "2") (setq richtung "Ab") (setq richtung "Auf"))
|
||||
(setq startpunkt (getpoint "\nStartpunkt fuer AUS_Element waehlen: "))
|
||||
(setq startpunkt (getpoint (ssg-text "vfc-prompt-startpunkt-aus")))
|
||||
(if (null startpunkt) (setq startpunkt '(0 0 0)))
|
||||
;; Horizontale Fahrtrichtung waehlen (analog Gefaellestrecke Modus 1)
|
||||
(princ "\n\nFahrtrichtung waehlen:")
|
||||
(princ "\n 1 - 0° (X-Achse +, Ost)")
|
||||
(princ "\n 2 - 90° (Y-Achse +, Nord)")
|
||||
(princ "\n 3 - 180° (X-Achse -, West)")
|
||||
(princ "\n 4 - 270° (Y-Achse -, Sued)")
|
||||
(setq antwort (getstring "\nIhre Wahl (1/2/3/4) [1]: "))
|
||||
(princ (ssg-text "vfc-fahrtrichtung-header"))
|
||||
(princ (ssg-textf "vfc-fahrtrichtung-0" (list grad-zeichen)))
|
||||
(princ (ssg-textf "vfc-fahrtrichtung-90" (list grad-zeichen)))
|
||||
(princ (ssg-textf "vfc-fahrtrichtung-180" (list grad-zeichen)))
|
||||
(princ (ssg-textf "vfc-fahrtrichtung-270" (list grad-zeichen)))
|
||||
(setq antwort (getstring (ssg-text "prompt-wahl-1-2-3-4")))
|
||||
(cond
|
||||
((= antwort "2") (setq hz-winkel 90.0))
|
||||
((= antwort "3") (setq hz-winkel 180.0))
|
||||
((= antwort "4") (setq hz-winkel 270.0))
|
||||
(t (setq hz-winkel 0.0))
|
||||
)
|
||||
(princ (strcat "\n>>> Fahrtrichtung: " (rtos hz-winkel 2 1) grad-zeichen))
|
||||
(princ (ssg-textf "vfc-fahrtrichtung-ergebnis" (list (rtos hz-winkel 2 1) grad-zeichen)))
|
||||
)
|
||||
)
|
||||
(list deltaL deltaH richtung startpunkt hz-winkel eingabe-modus)
|
||||
@@ -1016,7 +1007,7 @@
|
||||
(setq L_GF_str (strcat (rtos (/ L_GF1 1000.0) 2 3) "," (rtos (/ L_GF2 1000.0) 2 3)))
|
||||
(setq label-txt
|
||||
(strcat "VF" (itoa vf-nummer)
|
||||
": von " (itoa (fix hoehe-von)) "mm bis " (itoa (fix hoehe-bis)) "mm, "
|
||||
(ssg-textf "vfc-label-von-bis" (list (itoa (fix hoehe-von)) (itoa (fix hoehe-bis))))
|
||||
delta-sym "H=" (itoa (fix deltaH)) "mm; "
|
||||
delta-sym "L=" (itoa (fix deltaL)) "mm; "
|
||||
"VF:" L_VF_str "m; GF:" L_GF_str "m; "
|
||||
@@ -1159,9 +1150,9 @@
|
||||
;; Aufsteigende, eindeutige ID vergeben (wie beim Kreisel), falls verfuegbar.
|
||||
(if (car (atoms-family 1 '("SSG-ID-GENERATE")))
|
||||
(ssg-id-generate vf-insert))
|
||||
(princ (strcat "\n>>> Block '" vf-bname "' erstellt und eingefuegt."))
|
||||
(princ (ssg-textf "vfc-block-erstellt-eingefuegt" (list vf-bname)))
|
||||
)
|
||||
(princ "\n>>> FEHLER: Keine Entities fuer Block gefunden!")
|
||||
(princ (ssg-text "vfc-fehler-keine-entities"))
|
||||
)
|
||||
)
|
||||
|
||||
@@ -1207,13 +1198,13 @@
|
||||
staustrecke-basis)
|
||||
|
||||
(princ "\n=========================================")
|
||||
(princ "\n VARIOFOERDERER GENERATOR v26.0")
|
||||
(princ (ssg-text "vfc-banner-titel"))
|
||||
(princ "\n=========================================")
|
||||
|
||||
;; 1. Typ aus Registry waehlen
|
||||
(if (null *vf-typ-registry*)
|
||||
(progn
|
||||
(alert "Keine Typen registriert!\nvf_standard.lsp und vf_etage.lsp pruefen.")
|
||||
(alert (ssg-text "vfc-alert-keine-typen"))
|
||||
(exit)
|
||||
)
|
||||
)
|
||||
@@ -1221,19 +1212,19 @@
|
||||
(if (and *vf-vorauswahl-typ* (assoc *vf-vorauswahl-typ* *vf-typ-registry*))
|
||||
(progn
|
||||
(setq typ-eintr (assoc *vf-vorauswahl-typ* *vf-typ-registry*))
|
||||
(princ (strcat "\n>>> Typ vorgewaehlt: " *vf-vorauswahl-typ*))
|
||||
(princ (ssg-textf "vfc-typ-vorgewaehlt" (list *vf-vorauswahl-typ*)))
|
||||
(setq *vf-vorauswahl-typ* nil)
|
||||
)
|
||||
(progn
|
||||
(setq *vf-vorauswahl-typ* nil)
|
||||
(princ "\n\nAnlagen-Typ waehlen:")
|
||||
(princ (ssg-text "vfc-anlagen-typ-header"))
|
||||
(setq idx 1)
|
||||
(foreach eintr *vf-typ-registry*
|
||||
(princ (strcat "\n " (itoa idx) " - " (nth 3 eintr)))
|
||||
(princ (ssg-textf "vfc-typ-option" (list idx (nth 3 eintr))))
|
||||
(setq idx (1+ idx))
|
||||
)
|
||||
(setq wahl (getint (strcat "\nIhre Wahl (1-"
|
||||
(itoa (length *vf-typ-registry*)) ") [1]: ")))
|
||||
(setq wahl (getint (ssg-textf "vfc-prompt-wahl-1-n"
|
||||
(list (length *vf-typ-registry*)))))
|
||||
(if (or (null wahl) (< wahl 1) (> wahl (length *vf-typ-registry*)))
|
||||
(setq wahl 1))
|
||||
(setq typ-eintr (nth (1- wahl) *vf-typ-registry*))
|
||||
@@ -1242,7 +1233,7 @@
|
||||
(setq anlage-typ (nth 0 typ-eintr))
|
||||
(setq berechne-fn (nth 1 typ-eintr))
|
||||
(setq einfuege-fn (nth 2 typ-eintr))
|
||||
(princ (strcat "\n>>> Typ: " anlage-typ))
|
||||
(princ (ssg-textf "vfc-typ-gewaehlt" (list anlage-typ)))
|
||||
|
||||
;; Sonderfall "linienzug": eigener Befehlsablauf (interaktive Mehrsegment-
|
||||
;; Kette mit gemischten GF/VF-Segmenten), passt nicht in das berechne-fn/
|
||||
@@ -1267,7 +1258,7 @@
|
||||
|
||||
;; 2. VF-Nummer automatisch ermitteln
|
||||
(setq vf-nummer (vf-next-number))
|
||||
(princ (strcat "\n>>> Naechste VF-Nummer: VF" (itoa vf-nummer)))
|
||||
(princ (ssg-textf "vfc-naechste-vf-nummer" (list (itoa vf-nummer))))
|
||||
|
||||
;; 3. Gemeinsame Eingabe (deltaL, deltaH, richtung, startpunkt) - richtung
|
||||
;; steht bei beiden Eingabemodi (Werteingabe UND 3D-Linie) bereits fest.
|
||||
@@ -1280,12 +1271,12 @@
|
||||
eingabe-modus (nth 5 eingabe))
|
||||
|
||||
;; 4. Seite-Auswahl (vor Berechnung, weil Etage-Typ sie fuer Geometrie braucht)
|
||||
(princ "\n\nSeite waehlen:")
|
||||
(princ "\n 1 - Rechts")
|
||||
(princ "\n 2 - Links")
|
||||
(setq antwort (getstring "\nIhre Wahl (1/2) [1]: "))
|
||||
(princ (ssg-text "vfc-seite-header"))
|
||||
(princ (ssg-text "vfc-seite-rechts"))
|
||||
(princ (ssg-text "vfc-seite-links"))
|
||||
(setq antwort (getstring (ssg-text "prompt-wahl-1-2")))
|
||||
(if (= antwort "2") (setq seite "links") (setq seite "rechts"))
|
||||
(princ (strcat "\n>>> Seite: " seite))
|
||||
(princ (ssg-textf "vfc-seite-gewaehlt" (list seite)))
|
||||
|
||||
;; 5. Typ-spezifische Berechnung (init + Winkelsuche)
|
||||
(setq ergebnis (apply berechne-fn (list deltaL deltaH richtung seite)))
|
||||
@@ -1304,7 +1295,7 @@
|
||||
(setq ergebnis-liste
|
||||
(append ergebnis-liste
|
||||
(list (list 0 (car horizontal-info) (cadr horizontal-info) T))))
|
||||
(princ "\n\n>>> Hinweis: Ein horizontale Variofoerderer ( 0°) ist bei diesem △L/△H zusaetzlich moeglich!")
|
||||
(princ (ssg-textf "vfc-hinweis-horizontal-moeglich" (list (chr 176) (chr 916))))
|
||||
)
|
||||
(setq horizontal-info nil)
|
||||
)
|
||||
@@ -1324,9 +1315,8 @@
|
||||
ergebnis-liste)))
|
||||
(if (null gueltige-winkel)
|
||||
(progn
|
||||
(alert (strcat "Kein passender Winkel gefunden!\n"
|
||||
"△L=" (rtos deltaL 2 0) " mm, △H="
|
||||
(rtos deltaH 2 0) " mm, Richtung=" richtung))
|
||||
(alert (ssg-textf "vfc-alert-kein-winkel"
|
||||
(list (chr 916) (rtos deltaL 2 0) (rtos deltaH 2 0) richtung)))
|
||||
(exit)
|
||||
)
|
||||
)
|
||||
@@ -1340,29 +1330,27 @@
|
||||
(setq eintrag (assoc best-winkel ergebnis-liste))
|
||||
(setq L_GF (nth 1 eintrag) L_VF (nth 2 eintrag))
|
||||
(if (= best-winkel 0)
|
||||
(princ "\n\n>>> Einzige gueltige Variante: Horizontale Variofoerderer")
|
||||
(princ (strcat "\n\n>>> Einziger gueltiger Winkel: "
|
||||
(itoa best-winkel) (chr 176)))
|
||||
(princ (ssg-text "vfc-einzige-variante-horizontal"))
|
||||
(princ (ssg-textf "vfc-einziger-winkel" (list (itoa best-winkel) (chr 176))))
|
||||
)
|
||||
)
|
||||
(progn
|
||||
(princ "\n\nMehrere gueltige Winkel verfuegbar. Bitte waehlen:")
|
||||
(princ (ssg-text "vfc-mehrere-winkel-header"))
|
||||
(setq idx 1)
|
||||
(foreach w gueltige-winkel
|
||||
(setq eintrag (assoc w ergebnis-liste))
|
||||
(if (= w 0)
|
||||
(princ (strcat "\n " (itoa idx) " - Horizontale Variofoerderer (0"
|
||||
(chr 176) ")"
|
||||
" (L_GF=" (rtos (nth 1 eintrag) 2 1)
|
||||
" mm, L_VF=" (rtos (nth 2 eintrag) 2 1) " mm)"))
|
||||
(princ (strcat "\n " (itoa idx) " - " (itoa w) (chr 176)
|
||||
" (L_GF=" (rtos (nth 1 eintrag) 2 1)
|
||||
" mm, L_VF=" (rtos (nth 2 eintrag) 2 1) " mm)"))
|
||||
(princ (ssg-textf "vfc-winkel-option-horizontal"
|
||||
(list idx (chr 176)
|
||||
(rtos (nth 1 eintrag) 2 1) (rtos (nth 2 eintrag) 2 1))))
|
||||
(princ (ssg-textf "vfc-winkel-option"
|
||||
(list idx (itoa w) (chr 176)
|
||||
(rtos (nth 1 eintrag) 2 1) (rtos (nth 2 eintrag) 2 1))))
|
||||
)
|
||||
(setq idx (1+ idx))
|
||||
)
|
||||
(setq wahl (getint (strcat "Winkel waehlen (1-"
|
||||
(itoa (length gueltige-winkel)) ") [1]: ")))
|
||||
(setq wahl (getint (ssg-textf "vfc-prompt-winkel-waehlen"
|
||||
(list (length gueltige-winkel)))))
|
||||
(if (or (null wahl) (< wahl 1) (> wahl (length gueltige-winkel)))
|
||||
(setq wahl 1))
|
||||
(setq best-winkel (nth (1- wahl) gueltige-winkel))
|
||||
@@ -1372,22 +1360,20 @@
|
||||
)
|
||||
(princ "\n\n=========================================")
|
||||
(if (= best-winkel 0)
|
||||
(princ (strcat "\n>>> Horizontale Variofoerderer"
|
||||
" L_GF: " (rtos L_GF 2 2) " mm"
|
||||
" L_VF: " (rtos L_VF 2 2) " mm"))
|
||||
(princ (strcat "\n>>> Winkel: " (itoa best-winkel) (chr 176)
|
||||
" L_GF: " (rtos L_GF 2 2) " mm"
|
||||
" L_VF: " (rtos L_VF 2 2) " mm"))
|
||||
(princ (ssg-textf "vfc-zus-horizontal"
|
||||
(list (rtos L_GF 2 2) (rtos L_VF 2 2))))
|
||||
(princ (ssg-textf "vfc-zus-winkel"
|
||||
(list (itoa best-winkel) (chr 176) (rtos L_GF 2 2) (rtos L_VF 2 2))))
|
||||
)
|
||||
(princ "\n=========================================")
|
||||
|
||||
;; 9. L_GF Verteilung
|
||||
(princ "\n\nVerteilung der Gefaellestrecken (vorne/hinten):")
|
||||
(princ "\n 1 - Gleichmaessig (L_GF1 = L_GF2 = L_GF/2)")
|
||||
(princ "\n 2 - Vorne Minimum, hinten Rest")
|
||||
(princ "\n 3 - Hinten Minimum, vorne Rest")
|
||||
(princ "\n 4 - Eigene Werte eingeben")
|
||||
(setq verteilung-modus (getstring "\nIhre Wahl (1/2/3/4) [1]: "))
|
||||
(princ (ssg-text "vfc-gf-verteilung-header"))
|
||||
(princ (ssg-text "vfc-gf-verteilung-1"))
|
||||
(princ (ssg-text "vfc-gf-verteilung-2"))
|
||||
(princ (ssg-text "vfc-gf-verteilung-3"))
|
||||
(princ (ssg-text "vfc-gf-verteilung-4"))
|
||||
(setq verteilung-modus (getstring (ssg-text "prompt-wahl-1-2-3-4")))
|
||||
(if (= verteilung-modus "") (setq verteilung-modus "1"))
|
||||
(cond
|
||||
((= verteilung-modus "1")
|
||||
@@ -1399,23 +1385,22 @@
|
||||
(setq L_GF2 (float staustrecke-basis))
|
||||
(setq L_GF1 (max 0.0 (- L_GF (float staustrecke-basis)))))
|
||||
((= verteilung-modus "4")
|
||||
(setq L_GF1 (getreal (strcat "\nL_GF1 vorne (mm) ["
|
||||
(rtos (/ L_GF 2.0) 2 2) "]: ")))
|
||||
(setq L_GF1 (getreal (ssg-textf "vfc-prompt-lgf1-vorne"
|
||||
(list (rtos (/ L_GF 2.0) 2 2)))))
|
||||
(if (null L_GF1) (setq L_GF1 (/ L_GF 2.0)))
|
||||
(setq L_GF2 (max 0.0 (- L_GF L_GF1)))
|
||||
(princ (strcat "\n L_GF2 hinten: " (rtos L_GF2 2 2) " mm")))
|
||||
(princ (ssg-textf "vfc-lgf2-hinten" (list (rtos L_GF2 2 2)))))
|
||||
(t (setq L_GF1 (/ L_GF 2.0) L_GF2 (/ L_GF 2.0)))
|
||||
)
|
||||
(princ (strcat "\n>>> L_GF1=" (rtos L_GF1 2 2)
|
||||
" mm L_GF2=" (rtos L_GF2 2 2) " mm"))
|
||||
(princ (ssg-textf "vfc-zus-lgf" (list (rtos L_GF1 2 2) (rtos L_GF2 2 2))))
|
||||
|
||||
;; Scanner-Anzahl wird nicht mehr abgefragt (Attribut ANZAHL_SCANNER bleibt 0).
|
||||
(setq n-scanner 0)
|
||||
|
||||
;; 11. Bestaetigung
|
||||
(princ "\n\nMoechten Sie die Foerderanlage einfuegen?")
|
||||
(princ "\n 1 - Ja, Module einfuegen\n 2 - Nein, abbrechen")
|
||||
(setq antwort (getstring "\nIhre Wahl (1/2): "))
|
||||
(princ (ssg-text "vfc-einfuegen-frage"))
|
||||
(princ (ssg-text "vfc-einfuegen-optionen"))
|
||||
(setq antwort (getstring (ssg-text "vfc-prompt-wahl-1-2-ohne-default")))
|
||||
|
||||
(if (= antwort "1")
|
||||
(progn
|
||||
@@ -1440,7 +1425,7 @@
|
||||
|
||||
(princ "\n=========================================")
|
||||
)
|
||||
(princ "\nVorgang abgebrochen.")
|
||||
(princ (ssg-text "vfc-vorgang-abgebrochen"))
|
||||
)
|
||||
nil
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user