;------------------------------------------------------------------------;
; Bügelplätze zeichnen  - TYP 9 -                                        ;
; -----------------------------------------------------------------------;
; 08.11.93 / 13.6.98                                                     ;
;------------------------------------------------------------------------;
(defun Dbox (/ Dat)
  (setq Dat (load_dialog (strcat lw "/acadsst/module/b_typ9.dcl")))
  (if (not (new_dialog "b_typ9" Dat)) (exit))
  (set_tile "L1"      m_L1)
  (set_tile "L2"      m_L2)
  (set_tile "L3"      m_L3)
  (set_tile "K0"      m_K0)
  (set_tile "ART"     m_ART)
  (SetDia)
  (ACTION_TILE "ART"  "(zeig_dia)")
  (action_tile "accept" "(SetPara) (done_dialog)")
  (action_tile "cancel" "(exit) (done_dialog)")
  (start_dialog)
  (unload_dialog Dat)
)

(defun SetDia()
  (setq breite (dimx_tile "anzeige"))
  (setq hoehe  (dimy_tile "anzeige"))
  (start_image "anzeige")
  (FILL_IMAGE 0 0 breite hoehe -18)
  (if (= m_ART "ART_1")  ; Nr 1
    (slide_image 0 0 breite hoehe "arbplz(btyp09_1)")
  )
  (if (= m_ART "ART_2")  ; Nr 2
    (slide_image 0 0 breite hoehe "arbplz(btyp09_2)")
  )
  (if (= m_ART "ART_3")  ; Nr 3
    (slide_image 0 0 breite hoehe "arbplz(btyp09_3)")
  )
  (end_image)
)

(defun zeig_dia()
  (setq m_ART (get_tile "ART"))
  (SetDia)
)

(defun SetPara ()
  (setq m_L1       (get_tile "L1")     ; Breite
	  m_K0       (get_tile "K0")     ; Anzahl Plätze
	  m_ART      (get_tile "ART")    ; Art
	  m_L2       (get_tile "L2")     ; TiefeStreckenabstand
	  m_L3       (get_tile "L3")     ; Streckenabstand
  )
)

(defun datain()  
  (setq L1     (atoi m_L1))               ; Breite
  (setq K0     (atoi m_K0))               ; Anzahl Plätze
  (setq ART    (atoi (substr m_ART 5 1))) ; Art
  (setq L2     (atoi m_L2))               ; Tiefe
  (setq L3     (atoi m_L3))               ; Streckenabstand
  ;----------------------------------------------------------------------;
  ; >>>>>> Eingabeteil <<<<<<                                            ;
  ;----------------------------------------------------------------------;
  (setq P0 (getpoint "\nUntere linke Ecke definieren: "))
  (initget (+ 2 4))
  ;----------------------------------------------------------------------;
  ; >>>>>> Prfung ob die Grenzwerte eingehalten sind <<<<<<             ;
  ; >>>>>> in Abh„ngigkeit von der Bgelplatzart      <<<<<<             ;
  ;----------------------------------------------------------------------;
  (If
       (or (= ART 1) (= ART 2))
       (while (or (< L1 2500) (> L1 4000))      
       (initget (+ 1 2 4))
       (setq L1 (getreal "\nBreite eingeben [2500-4000]: "))
       )
  )
  (If
       (= Art 3)
       (while (or (< L1 2800) (> L1 4000))      
       (initget (+ 1 2 4))
       (setq L1 (getreal "\nBreite eingeben [2800-4000]: "))
       )
  )

  (while (or (< L2 2300) (> L2 4000))      
  (initget (+ 1 2 4))
  (setq L2 (getint "\nTiefe eingeben [2300-4000]: "))
  )

  (while (or (< L3 700) (> L3 1500))      
  (initget (+ 1 2 4))
  (setq L3 (getint "\nStreckenabstand eingeben [700-1500]: "))
  )
)

(defun punkte()
  ;-----------------------------------------------------------------------;
  ; >>>>>> Konstruktionspunkte definieren <<<<<<                          ;
  ;-----------------------------------------------------------------------;
  (cond
    ((= ART 1)
      (setq P1 (list (+ (car p0) (+ L1 L3))           (cadr p0)))
      (setq P2 (list (+ (car p0) L3)                  (+ (cadr p0) L2)))
      (setq P3 (list (+ (car p2) (+ L1 L3))           (cadr p2)))
      (setq P4 (list (- (car p1) 800)                 (cadr p1)))
      (setq P5 (list (car p1)                         (+ (cadr p1) 800)))
      (setq P6 (list (car p1)                         (+ (cadr p1) (- L2 450))))
      (setq P7 (list (car p2)                         (- (cadr p2) (- L2 450))))
      (setq P8 (list (car p2)                         (- (cadr p2) 800)))
      (setq P9 (list (+ (car p2) 800)                 (cadr p2)))
      (setq P10 (list (+ (car p0) 100)                (- (cadr p0) 100))) 
      (setq P11 (list (- (car p3) 100)                (+ (cadr p3) 100)))
      (setq P12 (list (car p1)                        (+ (cadr p1) (+ (/ (- L2 450) 2) 187.5))))
      (setq P13 (list (- (car p1) (- (/ (+ L1 L3) 3) 187.5)) (cadr p0)))
      (setq P14 (list (+ (car p2) (+ (/ (+ L1 L3) 3) 187.5)) (cadr p2))) 
      (setq P15 (list (car p2)                        (- (cadr p2) (- (/ (- L2 450) 2) 187.5))))
      (setq P16 (list (- (car p1) 400)                (+ (cadr p1) (- L2 1200))))
      (setq P17 (list (- (car p16) 700)               (+ (cadr p16) 560)))
      (setq P18 (list (- (car p3) (+ (/ (+ L1 L3) 3))) (cadr p3)))
      (setq P19 (list (+ (car p0) (+ (/ (+ L1 L3) 3))) (cadr p0))) 
      (setq P20 (list (- (car p6) 100)                (- (cadr p6) 300)))
      (setq P21 (list (+ (car p2) 870)                (- (cadr p2) 750))) 
    )
    ((= ART 2)
      (setq P1 (list (+ (car p0) 800)                 (cadr p0)))
      (setq P2 (list (+ (car p1) L1)                  (+ (cadr p1) L2)))
      (setq P3 (list (+ (car p2) (+ L1 L3))           (cadr p2)))
      (setq P4 (list (+ (car p0) (+ L1 L3))           (cadr p0)))
      (setq P5 (list (car p1)                         (+ (cadr p1) 800)))
      (setq P6 (list (car p1)                         (+ (cadr p1) (- L2 450))))
      (setq P7 (list (car p2)                         (- (cadr p2) (- L2 450))))
      (setq P8 (list (car p2)                         (- (cadr p2) 800)))
      (setq P9 (list (+ (car p2) 800)                 (cadr p2)))
      (setq P10 (list (+ (car p0) 100)                (- (cadr p0) 100))) 
      (setq P11 (list (- (car p3) 100)                (+ (cadr p3) 100)))
      (setq P12 (list (car p1)                        (+ (cadr p1) (- (/ (- L2 450) 2) 187.5))))
      (setq P13 (list (- (car p4) (- (/ (+ L1 L3) 3) 187.5)) (cadr p4)))
      (setq P14 (list (+ (car p2) (- (/ (+ L1 L3) 3) 187.5)) (cadr p2))) 
      (setq P15 (list (car p2)                        (- (cadr p2) (+ (/ (- L2 450) 2) 187.5))))
      (setq P16 (list (- (car p2) 400)                (+ (cadr p1) (- L2 1200))))
      (setq P17 (list (- (car p16) 700)               (+ (cadr p16) 560)))
      (setq P18 (list (- (car p3) (+ (/ (+ L1 L3) 3))) (cadr p3)))
      (setq P19 (list (+ (car p0) (+ (/ (+ L1 L3) 3))) (cadr p0))) 
      (setq P20 (list (- (car p2) 100)                (- (cadr p2) 700)))
      (setq P21 (list (+ (car p6) 800)                (- (cadr p6) 500))) 
    )
    ((= ART 3)
      (setq P1 (list (+ (car p0) (+ L1 L3))           (cadr p0)))
      (setq P2 (list (+ (car p0) L3)                  (+ (cadr p0) L2)))
      (setq P3 (list (+ (car p2) (+ L1 L3))           (cadr p2)))
      (setq P4 (list (- (car p1) 800)                 (cadr p1)))
      (setq P5 (list (car p1)                         (+ (cadr p1) 800)))
      (setq P6 (list (car p1)                         (+ (cadr p1) (- L2 450))))
      (setq P7 (list (car p2)                         (- (cadr p2) (- L2 450))))
      (setq P8 (list (car p2)                         (- (cadr p2) 800)))
      (setq P9 (list (+ (car p2) 800)                 (cadr p2)))
      (setq P10 (list (+ (car p0) 100)                (- (cadr p0) 100))) 
      (setq P11 (list (- (car p3) 100)                (+ (cadr p3) 100)))
      (setq P12 (list (car p1)                        (+ (cadr p1) (- (/ (- L2 450) 2) 187.5))))
      (setq P13 (list (- (car p1) (- (/ (+ L1 L3) 3) 187.5)) (cadr p0)))
      (setq P14 (list (+ (car p2) (+ (/ (+ L1 L3) 3) 187.5)) (cadr p2))) 
      (setq P15 (list (car p2)                        (- (cadr p2) (+ (/ (- L2 450) 2) 187.5))))
      (setq P16 (list (- (car p1) 400)                (+ (cadr p1) (- L2 1750))))
      (setq P17 (list (- (car p16) 900)               (+ (cadr p16) 960)))
      (setq P18 (list (- (car p3) (+ (/ (+ L1 L3) 3))) (cadr p3)))
      (setq P19 (list (+ (car p0) (+ (/ (+ L1 L3) 3))) (cadr p0))) 
      (setq P20 (list (+ (car p2) 250)                (- (cadr p2) 900)))
      (setq P21 (list (- (car p6) 720)                (- (cadr p6) 550))) 
    )
  )
)

(defun geometrie()
  ;-----------------------------------------------------------------------;
  ; >>>>>> Bl”cke einfgen  <<<<<<                                        ;
  ;-----------------------------------------------------------------------;
  (command "_layer" "_m" "L-2" "_c" "2" "" "")
  (command "_insert" (strcat lw "/acadsst/layout/w90650l8") P1 "" "" "")
  (setq auswahl-satz (ssget "_L"))
  (command "_insert" (strcat lw "/acadsst/layout/w90650l8") P2 "" "" "180")
  (ssadd (entlast) auswahl-satz)
  (command "_insert" (strcat lw "/acadsst/layout/endp") P6 "" "" "90")
  (ssadd (entlast) auswahl-satz)
  (command "_insert" (strcat lw "/acadsst/layout/endp") P7 "" "" "90")
  (ssadd (entlast) auswahl-satz)
  (command "_line" p0 p4 "")
  (ssadd (entlast) auswahl-satz)
  (command "_line" p9 p3 "")
  (ssadd (entlast) auswahl-satz)
  (command "_line" p5 p6 "")
  (ssadd (entlast) auswahl-satz)
  (command "_line" p7 p8 "")
  (ssadd (entlast) auswahl-satz)

  ;-----------------------------------------------------------------------;
  ; >>>>>> Pfeile + Maschinen setzen <<<<<<                               ;
  ;-----------------------------------------------------------------------;
  (command "_layer" "_m" "Z-1" "_c" "1" "" "")
  (cond
    ((= ART 1)
      (command "_insert" (strcat lw "/acadsst/zier2d/pf0_l") p12 "" "" "-90")
      (ssadd (entlast) auswahl-satz)
      (command "_insert" (strcat lw "/acadsst/zier2d/pf0_l") p13 "" "" "180")
      (ssadd (entlast) auswahl-satz)
      (command "_insert" (strcat lw "/acadsst/zier2d/pf0_v") p14 "" "" "180")
      (ssadd (entlast) auswahl-satz)
      (command "_insert" (strcat lw "/acadsst/zier2d/pf0_v") p15 "" "" "-90")
      (ssadd (entlast) auswahl-satz)
      (command "_insert" (strcat lw "/acadsst/zier2d/maus") p17 "" "" "180")
      (ssadd (entlast) auswahl-satz)
      (command "_insert" (strcat lw "/acadsst/zier2d/vario14") p16 "" "" "90")
      (ssadd (entlast) auswahl-satz)
      (command "_insert" (strcat lw "/acadsst/zier2d/buegel") p18 "" "" "-90")
      (ssadd (entlast) auswahl-satz)
      (command "_insert" (strcat lw "/acadsst/zier2d/buegel") p19 "" "" "90")
      (ssadd (entlast) auswahl-satz)
      (command "_insert" (strcat lw "/acadsst/zier2d/pfeil") p20 "" "" "200")
      (ssadd (entlast) auswahl-satz)
      (command "_insert" (strcat lw "/acadsst/zier2d/pfeil") p21 "" "" "200")
      (ssadd (entlast) auswahl-satz)
    )
    ((= ART 2)
      (command "_insert" (strcat lw "/acadsst/zier2d/pf0_v") p12 "" "" "90")
      (ssadd (entlast) auswahl-satz)
      (command "_insert" (strcat lw "/acadsst/zier2d/pf0_v") p13 "" "" "")
      (ssadd (entlast) auswahl-satz)
      (command "_insert" (strcat lw "/acadsst/zier2d/pf0_l") p14 "" "" "")
      (ssadd (entlast) auswahl-satz)
      (command "_insert" (strcat lw "/acadsst/zier2d/pf0_l") p15 "" "" "90")
      (ssadd (entlast) auswahl-satz)
      (command "_insert" (strcat lw "/acadsst/zier2d/maus") p17 "" "" "180")
      (ssadd (entlast) auswahl-satz)
      (command "_insert" (strcat lw "/acadsst/zier2d/vario14") p16 "" "" "90")
      (ssadd (entlast) auswahl-satz)
      (command "_insert" (strcat lw "/acadsst/zier2d/buegel") p18 "" "" "90")
      (ssadd (entlast) auswahl-satz)
      (command "_insert" (strcat lw "/acadsst/zier2d/buegel") p19 "" "" "-90")
      (ssadd (entlast) auswahl-satz)
      (command "_insert" (strcat lw "/acadsst/zier2d/pfeil") p20 "" "" "200")
      (ssadd (entlast) auswahl-satz)
      (command "_insert" (strcat lw "/acadsst/zier2d/pfeil") p21 "" "" "200")
      (ssadd (entlast) auswahl-satz)
    )
    ((= ART 3)
      (command "_insert" (strcat lw "/acadsst/zier2d/pf0_v") p12 "" "" "90")
      (ssadd (entlast) auswahl-satz)
      (command "_insert" (strcat lw "/acadsst/zier2d/pf0_v") p13 "" "" "")
      (ssadd (entlast) auswahl-satz)
      (command "_insert" (strcat lw "/acadsst/zier2d/pf0_l") p14 "" "" "")
      (ssadd (entlast) auswahl-satz)
      (command "_insert" (strcat lw "/acadsst/zier2d/pf0_l") p15 "" "" "90")
      (ssadd (entlast) auswahl-satz)
      (command "_insert" (strcat lw "/acadsst/zier2d/maus") p17 "" "" "180")
      (ssadd (entlast) auswahl-satz)
      (command "_insert" (strcat lw "/acadsst/zier2d/dobli-fw") p16 "" "" "180")
      (ssadd (entlast) auswahl-satz)
      (command "_insert" (strcat lw "/acadsst/zier2d/buegelr") p18 "" "" "90")
      (ssadd (entlast) auswahl-satz)
      (command "_insert" (strcat lw "/acadsst/zier2d/buegelr") p19 "" "" "-90")
      (ssadd (entlast) auswahl-satz)
      (command "_insert" (strcat lw "/acadsst/zier2d/pfeil") p20 "" "" "")
      (ssadd (entlast) auswahl-satz)
      (command "_insert" (strcat lw "/acadsst/zier2d/pfeil") p21 "" "" "30")
      (ssadd (entlast) auswahl-satz)
    )
  )
  (If (> K0 1)
      (command "_array" auswahl-satz "" "_r" "1" K0 (itoa (+ L1 L3)))
  )
) 

;-------------------------------------------------------------------------;
; >>>>>> Programm <<<<<<                                                  ;
;-------------------------------------------------------------------------;
(defun c:b_typ9 (/ L1 L2 L3 KO ART P1 P2 P3 P4 P5 P6 P7 P8 P9 P10 P11 P12 P13 P14 P15 P16 P17 P18 P19 P20 P21) 
  (setvar "limcheck" 0)
  (prompt "**** Bügelplatz TYP 9 ****")
  (if (null m_L1)    (setq m_L1       "2500"   ))     ; Breite
  (if (null m_L2)    (setq m_L2       "2300"   ))     ; Tiefe
  (if (null m_L3)    (setq m_L3       "800"    ))     ; Streckenabstand
  (if (null m_K0)    (setq m_K0       "1"      ))     ; Anzahl der Plätze
  (if (null m_ART)   (setq m_ART      "ART_1"  ))     ; Art
  (setq auswahl-satz nil)
  (Dbox)
  (prompt "")
  (datain)
  (punkte)
  (geometrie)
)
;-------------------------------------------------------------------------;
; >>>>>> Ende <<<<<<                                                      ;
;-------------------------------------------------------------------------;