diff --git a/Lisp/Gefaellestrecke.lsp b/Lisp/Gefaellestrecke.lsp index 2b7fd6f..f75db80 100644 --- a/Lisp/Gefaellestrecke.lsp +++ b/Lisp/Gefaellestrecke.lsp @@ -1321,7 +1321,9 @@ ;; delta-l-gf bereits vor der Zusammenfassung berechnet - ;; Block mit allen Attributen erstellen + ;; Block mit allen Attributen erstellen. Geruest fuer Einzelmodul/ + ;; Geruestoption sind in diesem Linienzug-Ablauf (Modus 3, keine DCL- + ;; Eingabe) nicht abfragbar - bleiben auf Schema-Default. (gf-block-erstellen "gruppe" as-seite gf-nummer (caddr startpunkt) @@ -1336,7 +1338,7 @@ bR90 bR60 bR30 startpunkt last-ent nach-aus-pt entry-hz (caddr (nth first-idx segmente)) - es-seite) + es-seite "0" "Schoenenberger Geruest") (princ "\n\n=========================================") (princ (ssg-text "gf-status-fertig")) @@ -1435,9 +1437,11 @@ bogen-L90 bogen-L60 bogen-L30 bogen-R90 bogen-R60 bogen-R30 startpunkt last-ent nach-aus-pt entry-hz L-first-seg - es-seite / + es-seite geruest-einzelmodul geruest-typ / gf-bname gf-ss ent gf-insert typ-str anzahl-gf gf-winkel-str i gf-g10z gf-korr-dz gf-osmode-alt) + (if (null geruest-einzelmodul) (setq geruest-einzelmodul "0")) + (if (null geruest-typ) (setq geruest-typ (ssg-geruest-idx-to-typ (ssg-geruest-typ-to-idx nil)))) ;; Beschriftung: Mitte der ersten Geraden, 400mm senkrecht versetzt (gf-make-label gf-nummer hoehe-von hoehe-bis deltaH deltaL L-gf-str winkel n-separator nach-aus-pt entry-hz L-first-seg) @@ -1521,6 +1525,8 @@ (cons "GF_Bogen_R_30" (itoa bogen-R30)) (cons "ANZAHL_SEPARATOR" (itoa n-separator)) (cons "ANZAHL_SCANNER" (itoa n-scanner)) + (cons "GERUEST_EINZELMODUL" geruest-einzelmodul) + (cons "GERUEST_TYP" geruest-typ) ) ) ;; Aufsteigende, eindeutige ID vergeben (wie beim Kreisel), falls verfuegbar. @@ -1536,8 +1542,10 @@ ;; deltaL-total: gesamte Horizontaldistanz (fuer DELTA_L-Attribut) ;; hz: Fahrtrichtung in Grad (0=Ost, 90=Nord, 180=West, 270=Sued) +;; geruest-einzelmodul/geruest-typ: an gf-block-erstellen durchgereicht (Attribute +;; GERUEST_EINZELMODUL/GERUEST_TYP, siehe *ssg-geruest-optionen* in ssg_core.lsp) (defun gefaellestrecke-einfuegen (L_stau winkel startpunkt as-seite es-seite hz deltaL-total - as-winkel es-winkel / + as-winkel es-winkel geruest-einzelmodul geruest-typ / as-block es-block endpunkt gf-nummer last-ent rad-hz rad-v xu-incl ein-hz rad-ein xu-ein @@ -1637,7 +1645,7 @@ 1 0 0 0 0 0 0 0 startpunkt last-ent nach-aus-pt (float hz) (float L_stau) - es-seite)) + es-seite geruest-einzelmodul geruest-typ)) ;; Edit-Metadaten (Fahrtrichtung, Gefaellewinkel, Element-Winkel) als XDATA ;; auf das GF_N-INSERT schreiben, damit GEFAELLESTRECKE_EDIT die Strecke @@ -1665,15 +1673,18 @@ ;; um die Angabe der Einfuegehoehe (Z). ;; prefill: Assoziationsliste zur Vorbelegung (fuer GEFAELLESTRECKE_EDIT) mit ;; Schluesseln "deltaL" "winkel" "hz" "as-seite" "es-seite" "einfuegehoehe" -;; "as-winkel" "es-winkel" - oder nil fuer Neuanlage (Modus 1) mit Defaults. +;; "as-winkel" "es-winkel" "geruest-einzelmodul" "geruest-typ" - oder nil +;; fuer Neuanlage (Modus 1) mit Defaults. ;; Rueckgabe: (deltaL winkel hz-winkel as-seite es-seite einfuegehoehe -;; as-winkel es-winkel) +;; as-winkel es-winkel geruest-einzelmodul geruest-typ) ;; oder nil bei Abbruch / fehlendem Dialog. (defun gf-dialog-eingabe ( prefill hoehe-vorbelegung / dcl-pfad dat ergebnis dlg-deltal dlg-hoehe dlg-winkel dlg-richtung dlg-aus dlg-ein dlg-aus-winkel dlg-ein-winkel - hz-winkel as-seite es-seite as-winkel es-winkel) + dlg-geruest-einzelmodul dlg-geruest-typ + hz-winkel as-seite es-seite as-winkel es-winkel + geruest-einzelmodul geruest-typ) (setq dcl-pfad (strcat (getenv "DXFM_DCL") "/gefaellestrecke.dcl")) (setq dat (load_dialog dcl-pfad)) (if (not (new_dialog "gefaellestrecke" dat)) @@ -1740,6 +1751,14 @@ (set_tile "ein_seite" (if (and prefill (equal (cdr (assoc "es-seite" prefill)) "rechts")) "1" "0")) + (set_tile "geruest_einzelmodul" + (if (and prefill (equal (cdr (assoc "geruest-einzelmodul" prefill)) "1")) "1" "0")) + (start_list "geruest_typ") + (foreach opt *ssg-geruest-optionen* (add_list opt)) + (end_list) + (set_tile "geruest_typ" + (itoa (ssg-geruest-typ-to-idx (if prefill (cdr (assoc "geruest-typ" prefill)) nil)))) + ;; Actions (action_tile "accept" (strcat @@ -1751,6 +1770,8 @@ "(setq dlg-aus (get_tile \"aus_seite\"))" "(setq dlg-ein-winkel (get_tile \"ein_winkel\"))" "(setq dlg-ein (get_tile \"ein_seite\"))" + "(setq dlg-geruest-einzelmodul (get_tile \"geruest_einzelmodul\"))" + "(setq dlg-geruest-typ (get_tile \"geruest_typ\"))" "(done_dialog 1)" ) ) @@ -1776,6 +1797,8 @@ (setq es-seite (if (= dlg-ein "1") "rechts" "links")) (setq as-winkel (if (= dlg-aus-winkel "1") "30" "90")) (setq es-winkel (if (= dlg-ein-winkel "1") "30" "90")) + (setq geruest-einzelmodul dlg-geruest-einzelmodul) + (setq geruest-typ (ssg-geruest-idx-to-typ (atoi dlg-geruest-typ))) (list (atof dlg-deltal) (atof dlg-winkel) @@ -1784,7 +1807,9 @@ es-seite (atof dlg-hoehe) as-winkel - es-winkel) + es-winkel + geruest-einzelmodul + geruest-typ) ) (t nil) ) @@ -1800,7 +1825,8 @@ ;; wurde (Modus 1) - dann entfaellt die zusaetzliche Konsolen-Rueckfrage. ;; Modus 2 (reine Konsoleneingabe, kein Dialog) uebergibt nil/weglassen. (defun gf-modus12-abschluss (deltaL winkel hz-winkel as-seite es-seite startpunkt - as-winkel es-winkel dialog-bestaetigt / + as-winkel es-winkel dialog-bestaetigt + geruest-einzelmodul geruest-typ / rad sep-x L_stau antwort) (if (null as-winkel) (setq as-winkel "90")) (if (null es-winkel) (setq es-winkel "90")) @@ -1838,7 +1864,8 @@ ;; Bestaetigung - entfaellt, wenn bereits per Dialog-OK bestaetigt (Modus 1) (setq antwort (if dialog-bestaetigt "1" (getstring (ssg-text "gf-prompt-einfuegen")))) (if (not (= antwort "2")) - (gefaellestrecke-einfuegen L_stau (fix winkel) startpunkt as-seite es-seite hz-winkel deltaL as-winkel es-winkel) + (gefaellestrecke-einfuegen L_stau (fix winkel) startpunkt as-seite es-seite hz-winkel deltaL as-winkel es-winkel + geruest-einzelmodul geruest-typ) (princ (ssg-text "gf-status-abgebrochen")) ) ) @@ -1847,7 +1874,7 @@ ;; setzen, L_stau berechnen und einfuegen - ohne Zusammenfassung/Rueckfrage. ;; Rueckgabe: (ename deltaH deltaL) von gefaellestrecke-einfuegen oder nil. (defun gf-rebuild (deltaL winkel hz-winkel as-seite es-seite startpunkt - as-winkel es-winkel / + as-winkel es-winkel geruest-einzelmodul geruest-typ / rad sep-x L_stau) (if (null as-winkel) (setq as-winkel "90")) (if (null es-winkel) (setq es-winkel "90")) @@ -1863,7 +1890,8 @@ nil ) (gefaellestrecke-einfuegen - L_stau (fix winkel) startpunkt as-seite es-seite hz-winkel deltaL as-winkel es-winkel) + L_stau (fix winkel) startpunkt as-seite es-seite hz-winkel deltaL as-winkel es-winkel + geruest-einzelmodul geruest-typ) ) ) @@ -1908,7 +1936,7 @@ as-seite es-seite gf-as-winkel gf-es-winkel line-points startpunkt endpunkt differenz deltaX deltaY startpunkt-fuer-einfuegen hz-winkel - dlg-werte) + dlg-werte gf-geruest-einzelmodul gf-geruest-typ) (princ "\n=========================================") (princ (ssg-text "gf-banner-titel")) @@ -1991,9 +2019,12 @@ (setq antwort (getstring (ssg-text "prompt-wahl-1-2"))) (setq es-seite (if (= antwort "2") "rechts" "links")) - ;; Gemeinsamer Abschluss (Masse, Laenge, Zusammenfassung, Einfuegen) + ;; Gemeinsamer Abschluss (Masse, Laenge, Zusammenfassung, Einfuegen). + ;; Geruest fuer Einzelmodul/Geruestoption sind in Modus 2 (reine + ;; Konsoleneingabe, kein Dialog) nicht abfragbar - bleiben auf Default. (gf-modus12-abschluss deltaL winkel hz-winkel as-seite es-seite - startpunkt-fuer-einfuegen gf-as-winkel gf-es-winkel) + startpunkt-fuer-einfuegen gf-as-winkel gf-es-winkel nil + "0" "Schoenenberger Geruest") ) ;; Modus 1: Manuelle Eingabe via DCL-Dialog @@ -2016,7 +2047,9 @@ as-seite (nth 3 dlg-werte) es-seite (nth 4 dlg-werte) gf-as-winkel (nth 6 dlg-werte) - gf-es-winkel (nth 7 dlg-werte)) + gf-es-winkel (nth 7 dlg-werte) + gf-geruest-einzelmodul (nth 8 dlg-werte) + gf-geruest-typ (nth 9 dlg-werte)) ;; Einfuegehoehe = Dialogwert (nth 5), der mit der gepickten Hoehe ;; vorbelegt wurde. So gewinnt die gepickte Hoehe standardmaessig, ;; bleibt aber im Dialog editierbar. Nur diese Z-Hoehe zaehlt (X/Y @@ -2032,7 +2065,8 @@ (setq winkel (ssg-cfg-or "gefaelle" "default_winkel" 3.0))) ;; Dialog-OK wurde bereits bestaetigt - keine zusaetzliche Rueckfrage (gf-modus12-abschluss deltaL winkel hz-winkel as-seite es-seite - startpunkt-fuer-einfuegen gf-as-winkel gf-es-winkel T) + startpunkt-fuer-einfuegen gf-as-winkel gf-es-winkel T + gf-geruest-einzelmodul gf-geruest-typ) ) ) ) @@ -2097,8 +2131,11 @@ (caddr gf-start))) ;; VF bauen; Rueckgabe (vf-insert vf-endpunkt), vf-endpunkt = tatsaechl. ;; ES-KS_AUS als Weltpunkt (aus vfs-es-teil/insert-block-by-ks). + ;; Geruest fuer Einzelmodul/Geruestoption sind fuer diesen automatisch + ;; nebenan gebauten VF nicht abfragbar - bleiben auf Schema-Default. (setq vf-erg (vfs-standard-dialog-berechnen-einfuegen - (vf-next-number) deltaL deltaH "Auf" vf-start hz-vf vf-seite nil)) + (vf-next-number) deltaL deltaH "Auf" vf-start hz-vf vf-seite nil + "0" "Schoenenberger Geruest")) (setq vf-insert (car vf-erg) vf-endpunkt (cadr vf-erg)) ;; Selbstkorrektur: fertigen VF-Block so verschieben, dass sein ;; tatsaechliches ES-KS_AUS exakt auf ziel-es faellt (analog GF_n-Move; @@ -2187,7 +2224,9 @@ (cons "es-seite" (cond ((cdr (assoc "SEITE_ES" attribs))) ("links"))) (cons "einfuegehoehe" z-start) (cons "as-winkel" as-winkel) - (cons "es-winkel" es-winkel))) + (cons "es-winkel" es-winkel) + (cons "geruest-einzelmodul" (cond ((cdr (assoc "GERUEST_EINZELMODUL" attribs))) ("0"))) + (cons "geruest-typ" (cdr (assoc "GERUEST_TYP" attribs))))) ;; AS-Seite + untere Hoehe fuer den optionalen parallelen VF-Bau (setq as-seite (cond ((cdr (assoc "SEITE_AS" attribs))) ("links"))) @@ -2213,7 +2252,8 @@ (nth 0 dlg-werte) (nth 1 dlg-werte) (nth 2 dlg-werte) (nth 3 dlg-werte) (nth 4 dlg-werte) (list (car startpunkt) (cadr startpunkt) (nth 5 dlg-werte)) - (nth 6 dlg-werte) (nth 7 dlg-werte)) + (nth 6 dlg-werte) (nth 7 dlg-werte) + (nth 8 dlg-werte) (nth 9 dlg-werte)) (princ (ssg-textf "gf-edit-neu-aufgebaut" (list bname))) ) ) diff --git a/Lisp/KreiselInsert.lsp b/Lisp/KreiselInsert.lsp index 8dc5b46..588f226 100644 --- a/Lisp/KreiselInsert.lsp +++ b/Lisp/KreiselInsert.lsp @@ -87,6 +87,7 @@ ("ANZAHL_SCANNER" "0") ("ANZAHL_RAMPEN" "0") ("GERUEST_EINZELMODUL" "0") + ("GERUEST_TYP" "Schoenenberger Geruest") ("DREHRICHTUNG" "UZS") ("DREHUNG" "0") ("NUMMER" "0")) @@ -102,6 +103,8 @@ ("DREHUNG" "0") ("NUMMER" "0") ("HOEHE" "0") + ("GERUEST_EINZELMODUL" "0") + ("GERUEST_TYP" "Schoenenberger Geruest") ("ID" "")) ) @@ -869,6 +872,7 @@ dcl-pfad dat ergebnis dlg-name dlg-abstand dlg-hoehe dlg-ausrichtung dlg-drehrichtung dlg-kreiselart dlg-geruest-einzelmodul + dlg-geruest-typ newAbstand newRotation ausrichtLabels) ;; Implied Selection VOR ssg-start pruefen (ssg-start hebt Selektion auf) @@ -966,6 +970,11 @@ (set_tile "geruest_einzelmodul" (if (equal (cdr (assoc "GERUEST_EINZELMODUL" attribs)) "1") "1" "0")) + (start_list "geruest_typ") + (foreach opt *ssg-geruest-optionen* (add_list opt)) + (end_list) + (set_tile "geruest_typ" (itoa (ssg-geruest-typ-to-idx (cdr (assoc "GERUEST_TYP" attribs))))) + ;; Actions (action_tile "accept" (strcat @@ -976,6 +985,7 @@ "(setq dlg-drehrichtung (get_tile \"drehrichtung\"))" "(setq dlg-kreiselart (get_tile \"kreiselart\"))" "(setq dlg-geruest-einzelmodul (get_tile \"geruest_einzelmodul\"))" + "(setq dlg-geruest-typ (get_tile \"geruest_typ\"))" "(done_dialog 1)" ) ) @@ -1004,6 +1014,8 @@ (assoc "DREHRICHTUNG" attribs) attribs)) (setq attribs (subst (cons "GERUEST_EINZELMODUL" dlg-geruest-einzelmodul) (assoc "GERUEST_EINZELMODUL" attribs) attribs)) + (setq attribs (subst (cons "GERUEST_TYP" (ssg-geruest-idx-to-typ (atoi dlg-geruest-typ))) + (assoc "GERUEST_TYP" attribs) attribs)) ;; Alten Block loeschen (command "_.ERASE" ent "") @@ -1051,7 +1063,8 @@ ;; 4. Hoehe aus Z-Koordinate oder manuell ;; -------------------------------------------- (defun c:ILS_Eckrad ( / ptTangent ptDir dx dy dist ux uy radius - centerPt rotation hoehe) + centerPt rotation hoehe + geruest-einzelmodul geruest-typ) (dbgf "c:ILS_Eckrad") ;; 1. Beruehrpunkt (Tangentenpunkt) @@ -1106,8 +1119,14 @@ ) (dbg 'hoehe) - ;; 5. Einfuegen (centerPt ist der Kreismittelpunkt) - (ils-eckrad-insert (list (car centerPt) (cadr centerPt) hoehe) rotation nil) + ;; 5. Geruest fuer Einzelmodul + Geruestoption abfragen + (setq geruest-einzelmodul (if (ssg-ques (ssg-text "kreisel-eckrad-geruest-frage") nil) "0" "1")) + (setq geruest-typ (ssg-ask-geruest-typ)) + + ;; 6. Einfuegen (centerPt ist der Kreismittelpunkt) + (ils-eckrad-insert (list (car centerPt) (cadr centerPt) hoehe) rotation + (list (cons "GERUEST_EINZELMODUL" geruest-einzelmodul) + (cons "GERUEST_TYP" geruest-typ))) (dbgreturn nil) ) diff --git a/Lisp/vf_core.lsp b/Lisp/vf_core.lsp index b99b859..88e39f1 100644 --- a/Lisp/vf_core.lsp +++ b/Lisp/vf_core.lsp @@ -1073,8 +1073,11 @@ (defun vf-block-erstellen (anlage-typ seite vf-nummer n-scanner hoehe-von hoehe-bis deltaH deltaL L_VF L_GF1 L_GF2 richtung best-winkel startpunkt lastEnt hz + geruest-einzelmodul geruest-typ / vf-bname vf-ss vf-e vf-insert montagehoehe-m attdef-ypos L_GF_m-str) (if (null hz) (setq hz 0.0)) + (if (null geruest-einzelmodul) (setq geruest-einzelmodul "0")) + (if (null geruest-typ) (setq geruest-typ (ssg-geruest-idx-to-typ (ssg-geruest-typ-to-idx nil)))) ;; Beschriftungstext erzeugen (vf-make-label vf-nummer hoehe-von hoehe-bis deltaH deltaL L_VF L_GF1 L_GF2 richtung best-winkel 2 n-scanner startpunkt hz) @@ -1145,6 +1148,8 @@ (cons "VF_WINKEL" (itoa best-winkel)) (cons "ANZAHL_SEPARATOR" "2") (cons "ANZAHL_SCANNER" (itoa n-scanner)) + (cons "GERUEST_EINZELMODUL" geruest-einzelmodul) + (cons "GERUEST_TYP" geruest-typ) ) ) ;; Typ-spezifische Bogen-Zaehler (Etage: 2x Gefaellebogen je Seite) @@ -1447,10 +1452,14 @@ (list deltaL deltaH richtung best-winkel L_GF1 L_GF2 L_VF startpunkt seite hz)) ;; Gemeinsame VF_*-Block-Erstellung + ;; Geruest fuer Einzelmodul/Geruestoption sind in diesem interaktiven + ;; Konsolen-Ablauf (Etage/Linienzug) nicht abfragbar - bleiben auf + ;; Schema-Default (analog Kreisel: nur ueber Dialog editierbar). (setq vf-insert (vf-block-erstellen anlage-typ seite vf-nummer n-scanner hoehe-von hoehe-bis deltaH deltaL L_VF L_GF1 L_GF2 - richtung best-winkel startpunkt lastEnt hz)) + richtung best-winkel startpunkt lastEnt hz + "0" "Schoenenberger Geruest")) ;; Standard-Bloecke aus dem interaktiven Konsolen-Ablauf ebenfalls mit der ;; SSG_VF_EDIT-XDATA markieren - sie sind (wie die Dialog-Variante) aus diff --git a/Lisp/vf_standard.lsp b/Lisp/vf_standard.lsp index cb7b4a8..b25990d 100644 --- a/Lisp/vf_standard.lsp +++ b/Lisp/vf_standard.lsp @@ -709,15 +709,18 @@ ;; ============================================================ ;; Basis-Eingabe (Dialog 1): deltaL, deltaH, Richtung, Einfuegehoehe, -;; Fahrtrichtung, Seite. +;; Fahrtrichtung, Seite, Geruest fuer Einzelmodul, Geruestoption. ;; prefill: Assoziationsliste zur Vorbelegung (fuer VARIOFOERDERER_EDIT) mit ;; Schluesseln "deltaL" "deltaH" "richtung" "einfuegehoehe" "hz" "seite" -;; - oder nil fuer Neuanlage mit Defaults. -;; Rueckgabe: (deltaL deltaH richtung einfuegehoehe hz seite) oder nil bei Abbruch. +;; "geruest-einzelmodul" "geruest-typ" - oder nil fuer Neuanlage mit Defaults. +;; Rueckgabe: (deltaL deltaH richtung einfuegehoehe hz seite +;; geruest-einzelmodul geruest-typ) oder nil bei Abbruch. (defun vfs-dialog-eingabe-basis (prefill / dcl-pfad dat ergebnis dlg-deltal dlg-deltah dlg-richtung dlg-hoehe dlg-fahrtrichtung dlg-seite - deltaL deltaH richtung hz seite z-start) + dlg-geruest-einzelmodul dlg-geruest-typ + deltaL deltaH richtung hz seite z-start + geruest-einzelmodul geruest-typ) (setq dcl-pfad (strcat (getenv "DXFM_DCL") "/variofoerderer.dcl")) (setq dat (load_dialog dcl-pfad)) (if (not (new_dialog "variofoerderer_basis" dat)) @@ -763,6 +766,14 @@ (set_tile "seite" (if (and prefill (equal (cdr (assoc "seite" prefill)) "links")) "1" "0")) + (set_tile "geruest_einzelmodul" + (if (and prefill (equal (cdr (assoc "geruest-einzelmodul" prefill)) "1")) "1" "0")) + (start_list "geruest_typ") + (foreach opt *ssg-geruest-optionen* (add_list opt)) + (end_list) + (set_tile "geruest_typ" + (itoa (ssg-geruest-typ-to-idx (if prefill (cdr (assoc "geruest-typ" prefill)) nil)))) + ;; Actions (action_tile "accept" (strcat @@ -772,6 +783,8 @@ "(setq dlg-hoehe (get_tile \"einfuegehoehe\"))" "(setq dlg-fahrtrichtung (get_tile \"fahrtrichtung\"))" "(setq dlg-seite (get_tile \"seite\"))" + "(setq dlg-geruest-einzelmodul (get_tile \"geruest_einzelmodul\"))" + "(setq dlg-geruest-typ (get_tile \"geruest_typ\"))" "(done_dialog 1)" ) ) @@ -792,7 +805,9 @@ ((= dlg-fahrtrichtung "3") 270.0) (t 0.0))) (setq seite (if (= dlg-seite "1") "links" "rechts")) - (list deltaL deltaH richtung z-start hz seite) + (setq geruest-einzelmodul dlg-geruest-einzelmodul) + (setq geruest-typ (ssg-geruest-idx-to-typ (atoi dlg-geruest-typ))) + (list deltaL deltaH richtung z-start hz seite geruest-einzelmodul geruest-typ) ) nil ) @@ -944,7 +959,7 @@ ;; winkel-prefill: Vorbelegung fuer vfs-dialog-winkel-verteilung oder nil. ;; ============================================================ (defun vfs-standard-dialog-berechnen-einfuegen (vf-nummer deltaL deltaH richtung startpunkt hz seite - winkel-prefill / + winkel-prefill geruest-einzelmodul geruest-typ / ergebnis ergebnis-liste gueltige-winkel horizontal-info winkelwahl best-winkel L_GF L_VF L_GF1 L_GF2 verteilung-modus n-scanner hoehe-von hoehe-bis lastEnt vf-insert vf-endpunkt staustrecke-basis) @@ -1003,7 +1018,8 @@ (setq vf-insert (vf-block-erstellen "standard" seite vf-nummer n-scanner hoehe-von hoehe-bis deltaH deltaL L_VF L_GF1 L_GF2 - richtung best-winkel startpunkt lastEnt hz)) + richtung best-winkel startpunkt lastEnt hz + geruest-einzelmodul geruest-typ)) (if vf-insert (vfs-xdata-schreiben vf-insert hz)) (princ "\n=========================================") ) @@ -1018,7 +1034,8 @@ ;; Neuanlage (Menue/Konsole -> Dialog): Startpunkt (X/Y) picken, Basis-Dialog, ;; dann gemeinsame Berechnung/Winkel-Dialog/Einfuegung. (defun vfs-standard-dialog-ablauf (vf-nummer / eingabe deltaL deltaH richtung - z-start hz seite startpunkt startpunkt-xy) + z-start hz seite startpunkt startpunkt-xy + geruest-einzelmodul geruest-typ) (setq startpunkt-xy (getpoint (ssg-text "vfc-prompt-startpunkt-aus"))) (if (null startpunkt-xy) (setq startpunkt-xy '(0 0 0))) @@ -1031,9 +1048,12 @@ richtung (nth 2 eingabe) z-start (nth 3 eingabe) hz (nth 4 eingabe) - seite (nth 5 eingabe)) + seite (nth 5 eingabe) + geruest-einzelmodul (nth 6 eingabe) + geruest-typ (nth 7 eingabe)) (setq startpunkt (list (car startpunkt-xy) (cadr startpunkt-xy) z-start)) - (vfs-standard-dialog-berechnen-einfuegen vf-nummer deltaL deltaH richtung startpunkt hz seite nil) + (vfs-standard-dialog-berechnen-einfuegen vf-nummer deltaL deltaH richtung startpunkt hz seite nil + geruest-einzelmodul geruest-typ) ) ) ) @@ -1052,7 +1072,8 @@ (defun c:VARIOFOERDERER_EDIT ( / ss ent ed bname startpunkt attribs xd deltaL deltaH richtung z-start hz seite eingabe vf-nummer best-winkel-attr L_GF_m-teile - prefill-basis prefill-winkel) + prefill-basis prefill-winkel + geruest-einzelmodul geruest-typ) ;; Implied Selection VOR ssg-start pruefen (ssg-start hebt Selektion auf) (setq ss (ssget "I")) (if (and ss (= (sslength ss) 1) @@ -1091,7 +1112,9 @@ (setq prefill-basis (list (cons "deltaL" deltaL) (cons "deltaH" deltaH) (cons "richtung" richtung) - (cons "einfuegehoehe" z-start) (cons "hz" hz) (cons "seite" seite))) + (cons "einfuegehoehe" z-start) (cons "hz" hz) (cons "seite" seite) + (cons "geruest-einzelmodul" (cond ((cdr (assoc "GERUEST_EINZELMODUL" attribs))) ("0"))) + (cons "geruest-typ" (cdr (assoc "GERUEST_TYP" attribs))))) (setq eingabe (vfs-dialog-eingabe-basis prefill-basis)) (if (null eingabe) @@ -1102,7 +1125,9 @@ richtung (nth 2 eingabe) z-start (nth 3 eingabe) hz (nth 4 eingabe) - seite (nth 5 eingabe)) + seite (nth 5 eingabe) + geruest-einzelmodul (nth 6 eingabe) + geruest-typ (nth 7 eingabe)) (setq startpunkt (list (car startpunkt) (cadr startpunkt) z-start)) ;; Vorbelegung Winkel/Verteilung: bestehenden Winkel vorschlagen, L_GF- @@ -1118,7 +1143,7 @@ (entdel ent) (setq vf-nummer (vf-next-number)) (vfs-standard-dialog-berechnen-einfuegen vf-nummer deltaL deltaH richtung - startpunkt hz seite prefill-winkel) + startpunkt hz seite prefill-winkel geruest-einzelmodul geruest-typ) (princ (ssg-textf "vfs-edit-neu-aufgebaut" (list bname))) ) ) diff --git a/dcl/gefaellestrecke.dcl b/dcl/gefaellestrecke.dcl index 880b169..5cd791b 100644 --- a/dcl/gefaellestrecke.dcl +++ b/dcl/gefaellestrecke.dcl @@ -85,6 +85,20 @@ gefaellestrecke : dialog { } } + : boxed_column { + label = "Geruest"; + + : toggle { + key = "geruest_einzelmodul"; + label = "Geruest fuer Einzelmodul"; + } + : popup_list { + key = "geruest_typ"; + label = "Geruestoption:"; + width = 30; + } + } + } ok_cancel; diff --git a/dcl/kreisel_edit.dcl b/dcl/kreisel_edit.dcl index 82801b7..896c24d 100644 --- a/dcl/kreisel_edit.dcl +++ b/dcl/kreisel_edit.dcl @@ -52,6 +52,12 @@ kreisel_edit : dialog { label = "Geruest fuer Einzelmodul"; } + : popup_list { + key = "geruest_typ"; + label = "Geruestoption:"; + width = 30; + } + } ok_cancel; diff --git a/dcl/variofoerderer.dcl b/dcl/variofoerderer.dcl index 86b213f..eac7765 100644 --- a/dcl/variofoerderer.dcl +++ b/dcl/variofoerderer.dcl @@ -61,6 +61,20 @@ variofoerderer_basis : dialog { } } + : boxed_column { + label = "Geruest"; + + : toggle { + key = "geruest_einzelmodul"; + label = "Geruest fuer Einzelmodul"; + } + : popup_list { + key = "geruest_typ"; + label = "Geruestoption:"; + width = 30; + } + } + } ok_cancel; diff --git a/lang/de_DE.json b/lang/de_DE.json index 11cb1e4..dda368e 100644 --- a/lang/de_DE.json +++ b/lang/de_DE.json @@ -523,6 +523,10 @@ "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!", diff --git a/lang/en_GB.json b/lang/en_GB.json index 4a2f1b3..b851d19 100644 --- a/lang/en_GB.json +++ b/lang/en_GB.json @@ -523,6 +523,10 @@ "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!", diff --git a/tests/test_foerderer.lsp b/tests/test_foerderer.lsp index be88005..fbc89ad 100644 --- a/tests/test_foerderer.lsp +++ b/tests/test_foerderer.lsp @@ -106,7 +106,8 @@ (vf-block-erstellen "standard" seite vf-nummer 0 hoehe-von hoehe-bis deltaH deltaL L_VF L_GF1 L_GF2 - richtung best-winkel startpunkt lastEnt 0.0) + richtung best-winkel startpunkt lastEnt 0.0 + "0" "Schoenenberger Geruest") ;; lastEnt hinter den SEQEND des VF-Blocks schieben. ;; Ohne diesen Schritt wuerde entnext vom INSERT-Entity ;; in die ATTRIB-Kette des gerade erstellten VF-Blocks diff --git a/tests/test_gefaellestrecke.lsp b/tests/test_gefaellestrecke.lsp index d0dc5fc..a061e7a 100644 --- a/tests/test_gefaellestrecke.lsp +++ b/tests/test_gefaellestrecke.lsp @@ -285,7 +285,7 @@ bR90 bR60 bR30 startpunkt last-ent nach-aus-pt entry-hz (caddr (nth first-idx segmente)) - es-seite)) + es-seite "0" "Schoenenberger Geruest")) gf-ins ) ) @@ -383,7 +383,7 @@ (setq gf-ins (car (gefaellestrecke-einfuegen test-L_stau test-winkel (list 0 0 test-z-start) - "links" "links" 0.0 test-deltaL "90" "90"))) + "links" "links" 0.0 test-deltaL "90" "90" "0" "Schoenenberger Geruest"))) (if gf-ins (progn (setq attribs (ssg-attrib-read gf-ins)) @@ -415,7 +415,7 @@ (setq gf-ins (car (gefaellestrecke-einfuegen test-L_stau test-winkel (list 15000 0 test-z-start) - "links" "links" 90.0 test-deltaL "90" "90"))) + "links" "links" 90.0 test-deltaL "90" "90" "0" "Schoenenberger Geruest"))) (if gf-ins (progn (setq attribs (ssg-attrib-read gf-ins)) @@ -447,7 +447,7 @@ (setq gf-ins (car (gefaellestrecke-einfuegen test-L_stau test-winkel (list 0 -15000 test-z-start) - "links" "links" 180.0 test-deltaL "90" "90"))) + "links" "links" 180.0 test-deltaL "90" "90" "0" "Schoenenberger Geruest"))) (if gf-ins (progn (setq attribs (ssg-attrib-read gf-ins)) @@ -479,7 +479,7 @@ (setq gf-ins (car (gefaellestrecke-einfuegen test-L_stau test-winkel (list 15000 -15000 test-z-start) - "links" "links" 270.0 test-deltaL "90" "90"))) + "links" "links" 270.0 test-deltaL "90" "90" "0" "Schoenenberger Geruest"))) (if gf-ins (progn (setq attribs (ssg-attrib-read gf-ins)) @@ -529,7 +529,7 @@ (princ (strcat "\n\n M2_hz000: Start=(0,-35000," (rtos test-z-start 2 0) ") ...")) (setq ergebnis (gefaellestrecke-einfuegen - test-L_stau test-winkel m2-start "links" "links" 0.0 test-deltaL "90" "90")) + test-L_stau test-winkel m2-start "links" "links" 0.0 test-deltaL "90" "90" "0" "Schoenenberger Geruest")) (setq gf-ins (car ergebnis)) (if gf-ins (progn @@ -735,7 +735,7 @@ (setq gf-ins (car (gefaellestrecke-einfuegen w30-lstau test-winkel (list 30000 0 test-z-start) - "links" "links" 0.0 test-deltaL "30" "30"))) + "links" "links" 0.0 test-deltaL "30" "30" "0" "Schoenenberger Geruest"))) (if gf-ins (progn (setq attribs (ssg-attrib-read gf-ins))