;-----------------------------------------------------------------;
; ASI                                                             ;
;-----------------------------------------------------------------;
; 16.7.2008                                                       ;
;-----------------------------------------------------------------;
(defun Dbox (/ Dat)
  (setq Dat (load_dialog (strcat lw "/acadsst/steuerg/ASI.DCL")))
  (if (not (new_dialog "ASI" Dat)) (exit))

  (set_tile "DWG_NAME" m_DWG_NAME); Blockname
  (set_tile "FAKT"           m_FAKT)
  
  (mode_tile "anzeige" 0)
  (SetDia)
  (ACTION_TILE "DWG_NAME" "(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)
  
  (cond 
    ((= m_DWG_NAME "0")        
      (slide_image 0 0 breite hoehe "steuerg(90000001)")
    )
    ((= m_DWG_NAME "1")       
      (slide_image 0 0 breite hoehe "steuerg(90000002)")
    )
    ((= m_DWG_NAME "2")        
      (slide_image 0 0 breite hoehe "steuerg(90000003)")
    )
    ((= m_DWG_NAME "3")        
      (slide_image 0 0 breite hoehe "steuerg(90000004)")
    )
    ((= m_DWG_NAME "4")       
      (slide_image 0 0 breite hoehe "steuerg(90000005)")
    )
    ((= m_DWG_NAME "5")       
      (slide_image 0 0 breite hoehe "steuerg(90000006)")  ; LED Leuchte
    )
  )  ; end cond
  (end_image)
)

(defun zeig_dia()
  (setq WINKEL1 0)
  (setq m_DWG_NAME         (get_tile "DWG_NAME"))
  (setq m_FAKT             (get_tile "FAKT"))
  (SetDia)
)

(defun setpara()
  (setq m_FAKT          (get_tile "FAKT"))
  (setq FAKTO           (atof m_FAKT))
  (setq ANZ_CHARACT 0)
)

(defun datain ()  
  (setq dummy nil)
)

(defun geometrie()
  (cond
    ((= m_DWG_NAME "0")
      (setq BL_NAME "790000001") ;ASI KOMPAKT K60 4E/4A M12 KPL.
			(setq BEZEICHNUNG "ASI KOMPAKT K60 4E/4A M12 KPL.")
    )
    ((= m_DWG_NAME "1")
      (setq BL_NAME "790000002") ;ASI KOMPAKT F90 4E/4A IP20 KPL.
			(setq BEZEICHNUNG "ASI KOMPAKT F90 4E/4A IP20 KPL.")
    )
    ((= m_DWG_NAME "2")
      (setq BL_NAME "790000003") ;ASI NOT-AUS IN 1 FACH GEHÄUSE KPL.
			(setq BEZEICHNUNG "ASI NOT-AUS IN 1 FACH GEHÄUSE KPL.")
    )
    ((= m_DWG_NAME "3")
      (setq BL_NAME "790000004") ;ASI-TABLEAU MIT 2 BEFEHLSSTELLEN KPL.
			(setq BEZEICHNUNG "ASI-TABLEAU MIT 2 BEFEHLSSTELLEN KPL.")
    )
    ((= m_DWG_NAME "4")        
      (setq BL_NAME "790000005") ;ASI-TABLEAU MIT 1 BEFEHLSSTELLEN KPL.
			(setq BEZEICHNUNG "ASI-TABLEAU MIT 1 BEFEHLSSTELLEN KPL.")
    )
    ((= m_DWG_NAME "5")        
      (setq BL_NAME "790000006") 
			(setq BEZEICHNUNG "LED LEUCHTE <STÖRUNG-TROUBLE> KPL.")
    )
  )  ; end cond

	(setq AUSWAHL-SATZ-ROTATE nil)	; wird am Ende ROTATE
	(setq AUSWAHL-SATZ nil)					; Blockbildung

  (setq P0  (getpoint "\nPick insert point: "))
  (setvar "osmode" 0)  
  (bl-name P0) ;--> Block-Name definieren -> Rückgabe: element-name    

	;<<< Schalter einfügen    
	(command "_layer" "_m" "ASI" "_c" "7" "" "")
	(command "_insert" (strcat lw "/acadsst/steuerg/" BL_NAME) P0 "1" "" "") 
  (setq AUSWAHL-SATZ-ROTATE (ssget "_L"))	

  (cond
    ((= m_DWG_NAME "0")					;790000001-ASI KOMPAKT K60 4E/4A M12 KPL.
    )
    ((= m_DWG_NAME "1")					;790000002-ASI KOMPAKT F90 4E/4A IP20 KPL.
    )
    ((= m_DWG_NAME "2")					;790000003-ASI NOT-AUS IN 1 FACH GEHÄUSE KPL.
      (IO_ZEICHNEN P0 "EINGANG" "6" "S0000" "EMERGENCY STOP" "A1+Kx-Axxx" )
      (setq P0 (list (+ (car p0) (* FAKTO 0)) (- (cadr p0) (* FAKTO 330)) (caddr p0)))
      (IO_ZEICHNEN P0 "EINGANG" "6" "S0000" "EMERGENCY STOP" "A1+Kx-Axxx")
    )
    ((= m_DWG_NAME "3")					;790000004-ASI-TABLEAU MIT 2 BEFEHLSSTELLEN KPL.
      (IO_ZEICHNEN P0 "EINGANG" "6" "S0000" "RESTART AFTER TROUBLE" "A1+Kx-Axxx")
      (setq P0 (list (+ (car p0) (* FAKTO 0)) (- (cadr p0) (* FAKTO 330)) (caddr p0)))
      (IO_ZEICHNEN P0 "OUTPUT" "3" "H0000" "RESTART AFTER TROUBLE" "A1+Kx-Axxx")    
      (setq P0 (list (+ (car p0) (* FAKTO 1170)) (+ (cadr p0) (* FAKTO 330)) (caddr p0)))
      (IO_ZEICHNEN P0 "EINGANG" "6" "S0000" "TRAVELTIME ERROR" "A1+Kx-Axxx")
      (setq P0 (list (+ (car p0) (* FAKTO 0)) (- (cadr p0) (* FAKTO 330)) (caddr p0)))
      (IO_ZEICHNEN P0 "OUTPUT" "3" "H0000" "TRAVELTIME ERROR" "A1+Kx-Axxx")
    )
    ((= m_DWG_NAME "4")        ;790000005-ASI-TABLEAU MIT 1 BEFEHLSSTELLEN KPL.
      (IO_ZEICHNEN P0 "EINGANG" "6" "S0000" "TRAIN REQUEST" "A1+Kx-Axxx")
      (setq P0 (list (+ (car p0) (* FAKTO 0)) (- (cadr p0) (* FAKTO 330)) (caddr p0)))
      (IO_ZEICHNEN P0 "OUTPUT" "3" "H0000" "TRAIN REQUEST" "A1+Kx-Axxx")    
    )
    ((= m_DWG_NAME "5")        ;790000006-LED LEUCHTE KPL.
      (IO_ZEICHNEN P0 "OUTPUT" "3" "H0000" "TROUBLE/WARNING" "A1+Kx-Axxx")    
    )
  )  ; end cond

	(command "_rotate" AUSWAHL-SATZ-ROTATE "" P0 pause)
	
)

(defun IO_ZEICHNEN (P0 IO_EBENE IO_FARBE IO_ADRESSE IO_BEZEICHNUNG IO_VERWENDUNG)
	;<<< IO Einfügen

	(setq P10  (list (+ (car p0) (+ (* FAKTO 1170)) (* 150 ANZ_CHARACT)) (+ (cadr p0) (* FAKTO 0))   (caddr p0)))
	(setq P11  (list (+ (car p0) (+ (* FAKTO 1170)) (* 150 ANZ_CHARACT)) (- (cadr p0) (* FAKTO 330)) (caddr p0)))
	(setq P12  (list (+ (car p0) (* FAKTO 0))       (- (cadr p0) (* FAKTO 330))                      (caddr p0)))
	(setq P13  (list (+ (car p0) (* FAKTO 340))     (+ (cadr p0) (* FAKTO 0))                        (caddr p0)))
	(setq P14  (list (+ (car p0) (* FAKTO 340))     (- (cadr p0) (* FAKTO 330))                      (caddr p0)))
	(setq P15  (list (+ (car p12)(* FAKTO 20))      (+ (cadr p12) (* FAKTO 20))                      (caddr p12)))

	(command "_layer" "_m" IO_EBENE "_c" IO_FARBE "" "")
	(command "_insert" (strcat lw "/acadsst/steuerg/io") P15 FAKTO "" "") 
	(ATTRIBUTE-AENDERN_IO IO_ADRESSE "9999" "NO-ID" IO_BEZEICHNUNG IO_VERWENDUNG) 
	(ssadd (entlast) AUSWAHL-SATZ-ROTATE)			

  ;<<< Korpus zeichnen ---------------------------------------
  (command "_layer" "_m" IO_EBENE "_c" IO_FARBE "" "")
	(command "_pline" P0 "_w" "0" "0" P10 P11 P12 P0 "")
  (setq AUSWAHL-SATZ (ssget "_L"))	
	(ssadd (entlast) AUSWAHL-SATZ-ROTATE)			
	(command "_pline" P13 P14 "")
	(ssadd (entlast) AUSWAHL-SATZ)
	(ssadd (entlast) AUSWAHL-SATZ-ROTATE)			

	(ssadd (entlast) AUSWAHL-SATZ-ROTATE)			

;  (setq AUSWAHL-SATZ (ssget "_L")) ; Auswahlsatz reinitialieren 	
	:<<<-------------------------------------------------------------------
)

;------------------------------------------------------------------------------
(defun c:ASI ( / DWG_NAME BL_NAME P0) 
  (setvar "limcheck" 0)
  (setvar "CMDECHO" 0)
  (setvar "BLIPMODE" 0)
  (setq ALTFANG (getvar "osmode"))  
  (setq EINZEL 0) ; fuer EINZEL=0 Baugruppen / EINZEL=1 fuer APB
  (prompt "**** ASI KOMPONENTEN *******")
  (prompt "")
  (if (null m_DWG_NAME)	(setq m_DWG_NAME "0"))			; Auswahl
  (if (null m_FAKT)			(setq m_FAKT "0.5"))				; Skalierungsfaktor   
  (Dbox)
  (prompt "")
  (datain)
  (geometrie)
	(setvar "osmode" ALTFANG)  
)
