diff --git a/Lisp/OmniModulInsert.lsp b/Lisp/OmniModulInsert.lsp index 00a4273..8378d99 100644 --- a/Lisp/OmniModulInsert.lsp +++ b/Lisp/OmniModulInsert.lsp @@ -408,32 +408,156 @@ ;; ============================================================ -;; OMNIFLO MODUL-BEFEHLE (Dummy-Implementierungen) +;; OMNIFLO BOGEN-DIALOG +;; Generischer Dialog fuer Bogen-Auswahl nach Winkel +;; ============================================================ + + +;; --- Detail-Felder im Dialog aktualisieren --- +;; Wird bei Dropdown-Aenderung aufgerufen (action_tile callback) +(defun omni:bogen-dlg-update (idx-str / idx eintrag wkl) + (setq idx (atoi idx-str)) + (setq eintrag (nth idx *OMNI-DLG-BOEGEN*)) + (if eintrag + (progn + (set_tile "val_sivasnr" + (omni:sivasid-to-str (omni:val eintrag "Sivasnr"))) + (setq wkl (omni:val eintrag "KurvenWinkel")) + (set_tile "val_winkel" + (if (= (type wkl) 'INT) (strcat (itoa wkl) " Grad") + (strcat (rtos wkl 2 1) " Grad") + ) + ) + (set_tile "val_radius" + (itoa (fix (omni:val eintrag "Radius")))) + (set_tile "val_breite" + (itoa (fix (omni:val eintrag "Breite")))) + (set_tile "val_laenge" + (itoa (fix (omni:val eintrag "Länge")))) + ) + ) +) + + +;; --- Bogen-Auswahl-Dialog oeffnen --- +;; winkel = KurvenWinkel (90, 67.5, 45, 22.5, 180) +;; Rueckgabe: gewaehlter Bogen-Eintrag (alist) oder nil bei Abbruch +(defun omni:bogen-dialog (winkel / dcl-pfad dat boegen-liste + profil-liste ergebnis) + (if (null *OMNI-BOEGEN*) (omni:load-data)) + + ;; Boegen nach Winkel filtern + (setq boegen-liste (omni:filter *OMNI-BOEGEN* "KurvenWinkel" winkel)) + (if (null boegen-liste) + (progn + (alert (strcat "Keine Boegen fuer " + (if (= (type winkel) 'INT) (itoa winkel) (rtos winkel 2 1)) + " Grad gefunden.")) + nil + ) + (progn + ;; In globaler Variable fuer Dialog-Callbacks speichern + (setq *OMNI-DLG-BOEGEN* boegen-liste) + + ;; ProfilTyp-Liste fuer Dropdown aufbauen + (setq profil-liste + (mapcar '(lambda (e) (cdr (assoc "ProfilTyp" e))) boegen-liste)) + + ;; DCL laden + (setq dcl-pfad (strcat (getenv "DXFM_DCL") "/omniflo_boegen.dcl")) + (setq dat (load_dialog dcl-pfad)) + (if (not (new_dialog "omniflo_boegen" dat)) + (progn (alert "Bogen-Dialog konnte nicht geladen werden.") nil) + (progn + ;; Dropdown befuellen + (start_list "bogenart") + (mapcar 'add_list profil-liste) + (end_list) + (set_tile "bogenart" "0") + + ;; Startwerte anzeigen + (omni:bogen-dlg-update "0") + + ;; Callback bei Dropdown-Aenderung + (action_tile "bogenart" "(omni:bogen-dlg-update $value)") + + ;; OK/Abbrechen + (action_tile "accept" + "(setq ergebnis (atoi (get_tile \"bogenart\"))) (done_dialog 1)") + (action_tile "cancel" "(done_dialog 0)") + + (start_dialog) + (unload_dialog dat) + + ;; Gewaehlten Eintrag zurueckgeben + (if ergebnis + (nth ergebnis *OMNI-DLG-BOEGEN*) + nil + ) + ) + ) + ) + ) +) + + +;; ============================================================ +;; OMNIFLO MODUL-BEFEHLE ;; ============================================================ ;; --- Omniflo / Boegen --- -(defun c:OMNI_APB_630_90 () - (princ "\n[DUMMY] APB 110 R 630/90 800/800 (821104033)") +(defun c:OMNI_APB_630_90 ( / eintrag) + (setq eintrag (omni:bogen-dialog 90)) + (if eintrag + (princ (strcat "\n[BOGEN] Gewaehlt: " + (omni:val eintrag "ProfilTyp") " (SivasNr: " + (omni:sivasid-to-str (omni:val eintrag "Sivasnr")) ")")) + (princ "\n[BOGEN] Abgebrochen.") + ) (princ) ) -(defun c:OMNI_APB_550_675 () - (princ "\n[DUMMY] APB 110 R 550/67.5 432 (821104027)") +(defun c:OMNI_APB_550_675 ( / eintrag) + (setq eintrag (omni:bogen-dialog 67.5)) + (if eintrag + (princ (strcat "\n[BOGEN] Gewaehlt: " + (omni:val eintrag "ProfilTyp") " (SivasNr: " + (omni:sivasid-to-str (omni:val eintrag "Sivasnr")) ")")) + (princ "\n[BOGEN] Abgebrochen.") + ) (princ) ) -(defun c:OMNI_APB_630_45 () - (princ "\n[DUMMY] APB 110 R 630/45 400 (821104031)") +(defun c:OMNI_APB_630_45 ( / eintrag) + (setq eintrag (omni:bogen-dialog 45)) + (if eintrag + (princ (strcat "\n[BOGEN] Gewaehlt: " + (omni:val eintrag "ProfilTyp") " (SivasNr: " + (omni:sivasid-to-str (omni:val eintrag "Sivasnr")) ")")) + (princ "\n[BOGEN] Abgebrochen.") + ) (princ) ) -(defun c:OMNI_APB_550_225 () - (princ "\n[DUMMY] APB 110 R 550/22.5 84 (821104025)") +(defun c:OMNI_APB_550_225 ( / eintrag) + (setq eintrag (omni:bogen-dialog 22.5)) + (if eintrag + (princ (strcat "\n[BOGEN] Gewaehlt: " + (omni:val eintrag "ProfilTyp") " (SivasNr: " + (omni:sivasid-to-str (omni:val eintrag "Sivasnr")) ")")) + (princ "\n[BOGEN] Abgebrochen.") + ) (princ) ) -(defun c:OMNI_APB_650_180 () - (princ "\n[DUMMY] APB 110 R 650/180 L=150 (821104043)") +(defun c:OMNI_APB_650_180 ( / eintrag) + (setq eintrag (omni:bogen-dialog 180)) + (if eintrag + (princ (strcat "\n[BOGEN] Gewaehlt: " + (omni:val eintrag "ProfilTyp") " (SivasNr: " + (omni:sivasid-to-str (omni:val eintrag "Sivasnr")) ")")) + (princ "\n[BOGEN] Abgebrochen.") + ) (princ) ) diff --git a/bin/setenv.bat b/bin/setenv.bat index efde649..ca21b64 100644 --- a/bin/setenv.bat +++ b/bin/setenv.bat @@ -19,6 +19,7 @@ set "DXFM_CFG=%DXFMAKRO%\cfg" set "DXFM_LOG=%DXFMAKRO%\log" set "DXFM_BLOCKS=%DXFMAKRO%\Blocks" set "DXFM_LISP=%DXFMAKRO%\Lisp" +set "DXFM_DCL=%DXFMAKRO%\dcl" set "DXFM_RESULTS=%DXFMAKRO%\results" set BRISCAD="C:\Program Files\Bricsys\BricsCAD V25 de_DE\bricscad.exe" diff --git a/dcl/omniflo_boegen.dcl b/dcl/omniflo_boegen.dcl new file mode 100644 index 0000000..c4830b1 --- /dev/null +++ b/dcl/omniflo_boegen.dcl @@ -0,0 +1,54 @@ +// ============================================================ +// omniflo_boegen.dcl - Bogen-Auswahl Dialog fuer Omniflo +// Zeigt gefilterte Boegen nach Winkel mit Details an. +// ============================================================ + +omniflo_boegen : dialog { + label = "Omniflo Bogen Auswahl"; + + : row { + : popup_list { + key = "bogenart"; + label = "Bogenart:"; + width = 42; + } + : edit_box { + key = "val_sivasnr"; + label = "SivasNr:"; + width = 22; + is_enabled = false; + } + } + + : row { + : edit_box { + key = "val_winkel"; + label = "Winkel:"; + width = 16; + is_enabled = false; + } + : edit_box { + key = "val_radius"; + label = "Radius:"; + width = 16; + is_enabled = false; + } + } + + : row { + : edit_box { + key = "val_breite"; + label = "Breite:"; + width = 16; + is_enabled = false; + } + : edit_box { + key = "val_laenge"; + label = "Laenge:"; + width = 16; + is_enabled = false; + } + } + + ok_cancel; +} diff --git a/menu/SSG_LIB.mnu b/menu/SSG_LIB.mnu index 42bcfb6..5684915 100644 --- a/menu/SSG_LIB.mnu +++ b/menu/SSG_LIB.mnu @@ -39,32 +39,32 @@ [<-ILS Schliessen]^C^C [->Omniflo] [->Boegen] -[APB 110 R 630/90 800/800 (821104033)]^C^COMNI_APB_630_90 -[APB 110 R 550/67.5 432 (821104027)]^C^COMNI_APB_550_675 -[APB 110 R 630/45 400 (821104031)]^C^COMNI_APB_630_45 -[APB 110 R 550/22.5 84 (821104025)]^C^COMNI_APB_550_225 -[<-APB 110 R 650/180 L=150 (821104043)]^C^COMNI_APB_650_180 +[90]^C^COMNI_APB_630_90 +[67.5]^C^COMNI_APB_550_675 +[45]^C^COMNI_APB_630_45 +[22.5]^C^COMNI_APB_550_225 +[<-180 ]^C^COMNI_APB_650_180 [->Aluprofil Gerade] [<-AP 110]^C^COMNI_AP110 [->Weiche 90 Grad] -[Einfach 90 700/700 links M (834372027)]^C^COMNI_W90_Einfach -[Doppel 90 700/700 M (834372109)]^C^COMNI_W90_Doppel -[<-Dreiwege 90 700/700 M (834372209)]^C^COMNI_W90_Dreiwege +[Einfach 90 700/700 links M]^C^COMNI_W90_Einfach +[Doppel 90 700/700 M]^C^COMNI_W90_Doppel +[<-Dreiwege 90 700/700 M]^C^COMNI_W90_Dreiwege [->Weiche 45 Grad] -[Einfach 45 350/700 links M (834372001)]^C^COMNI_W45_Einfach -[Doppel 45 350/700 M (834372100)]^C^COMNI_W45_Doppel -[<-Dreiwege 45 350/700 M (834372200)]^C^COMNI_W45_Dreiwege +[Einfach 45 350/700 links M]^C^COMNI_W45_Einfach +[Doppel 45 350/700 M]^C^COMNI_W45_Doppel +[<-Dreiwege 45 350/700 M]^C^COMNI_W45_Dreiwege [->Weichen Parallel] -[Einfach Parallel 200/750 links M (834372047)]^C^COMNI_WP_Einfach -[Doppel Parallel 200/750 M (834372115)]^C^COMNI_WP_Doppel -[<-Dreiwege Parallel 200/750 M (834372215)]^C^COMNI_WP_Dreiwege +[Einfach Parallel 200/750 links M]^C^COMNI_WP_Einfach +[Doppel Parallel 200/750 M]^C^COMNI_WP_Doppel +[<-Dreiwege Parallel 200/750 M]^C^COMNI_WP_Dreiwege [->Weichenkoerper] -[Weichenkoerper Einfach 22.5 links M (834342011)]^C^COMNI_WK_Einfach -[Weichenkoerper Doppel 22.5 M (834342100)]^C^COMNI_WK_Doppel -[<-Weichenkoerper Dreiwege 22.5 M (834342200)]^C^COMNI_WK_Dreiwege +[Weichenkoerper Einfach 22.5 links M]^C^COMNI_WK_Einfach +[Weichenkoerper Doppel 22.5 M]^C^COMNI_WK_Doppel +[<-Weichenkoerper Dreiwege 22.5 M]^C^COMNI_WK_Dreiwege [->Weichenkombinationen] -[Delta 1400/700 M (834372400)]^C^COMNI_WKomb_Delta -[<-Star 1400/1400 M (834372420)]^C^COMNI_WKomb_Star +[Delta 1400/700 M]^C^COMNI_WKomb_Delta +[<-Star 1400/1400 M]^C^COMNI_WKomb_Star [->TEF Elemente] [Umlenkspannst. rechts fuer TEF links]^C^COMNI_TEF_UmlenkR [Umlenkspannst. links fuer TEF rechts]^C^COMNI_TEF_UmlenkL