30 abr 2008

ESCACLIC.LSP........Perfil de escalera de un tramo con dos clicks de ratón:


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;RUTINA "ESCACLIC" HACE UN PERFIL GENERICO DE UNA ESCALERA DE UN TRAMO;;;
;;;INTRODUCIENDO PUNTO DE ARRANQUE Y PUNTO DE LLEGADA DE LA MISMA ;;;;;;;;;
;;;HACIENDO UN TANTEO DE MEDIDAS IDEALES PARA UN ESTUDIO PREVIO ;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(PRINC "\n....* ESCACLIC ** TRAMO DE ESCALERA CON DOS CLICKS DE RATON *
** © AUTOR: VICTOR ADOLFO BRACAMONTE....2007 **")

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(DEFUN VAR_VARESCACLIC ()
(COMMAND "_OSMODE" 0)
(COMMAND "_PICKBOX" 0)
);VARIAR VARIABLES DE SISTEMA EN ESCACLIC

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(DEFUN ENTRADADEDATOSESCACLIC ()
(SETQ ARR (GETPOINT "\nDAR PUNTO DE ARRANQUE DE ESCALERA: "))
(SETQ LLEG (GETPOINT "\nDAR PUNTO DE LLEGADA DE ESCALERA: "))
(SETQ ALT (ABS (* (DISTANCE ARR LLEG) (SIN (ANGLE ARR LLEG))))
DESH (ABS (* (DISTANCE ARR LLEG) (COS (ANGLE ARR LLEG))))
)
(SETQ ANGESC (ANGLE ARR LLEG));ANGULO DE LA ESCALERA
(IF (AND(> ANGESC 0)(< ANGESC (/ PI 2))) (SETQ DIRECCIONAL 1))
(IF (AND(> ANGESC (/ PI 2))(< ANGESC PI)) (SETQ DIRECCIONAL 2))
(IF(AND (> ANGESC PI)(< ANGESC (* 1.5 PI))) (SETQ DIRECCIONAL 3))
(IF (AND (> ANGESC (* 1.5 PI)) (< ANGESC (* 2 PI)))
(SETQ DIRECCIONAL 4)
)
);FIN DE ENTRADA DE DATOS

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(DEFUN ATRASESCACLIC ()
(SETQ OSMESCACLIC (COMMAND "_OSMODE" 4133))
(SETQ PICKESCACLIC (COMMAND "_PICKBOX" 3))
)
(DEFUN ERRORESCACLIC (MENSAJE)
(ATRASESCACLIC)
(SETQ MENSESCACLIC
(IF (= MENSAJE "dividir por cero")
(PRINC "\n****¡Ese largo de escalera es muy reducido!....
¡Ingrese otro largo mayor!****
dividir por cero")
)
)
(PRINC)
);FUNCION DE ERROR AL INGRESAR UN DATO ERRONEO
;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(DEFUN PROCESODEDATOSESCACLIC1 ()
(SETQ INCLINADA (DISTANCE ARR LLEG));TRIANGULO DE TODA LA ESCALERA
(SETQ NUMMOD (/ INCLINADA 0.35))
(SETQ CANT (FIX NUMMOD));NUMERO DE MODULOS DIAGONALES
(SETQ ANGESCABS (ATAN (/ ALT DESH)));ANGULO DE ESCALERA ABSOLUTO
(SETQ ANGESCGRAD(* ANGESCABS (/ 180 PI)));ANGULO ESCALERA EN GRADOS
(SETQ CONTRAHUELLA1 (* 0.35 (SIN ANGESCABS))
NUEVAALT (* CANT CONTRAHUELLA1)
HUELLA1 (* 0.35 (COS ANGESCABS))
NUEVODESH (* CANT HUELLA1)
CORRECHUELLA (/ ALT NUEVAALT)
CORRECCONTRAHUE (/ DESH NUEVODESH)
CONTRAHUELLA (* CORRECCONTRAHUE CONTRAHUELLA1)
HUELLA (* CORRECHUELLA HUELLA1)
)
);CALCULO Y CORRECCION DE HUELLA Y CONTRAHUELLA

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(DEFUN PROCESODEDATOSESCACLIC2 ()
(SETQ PT1 ARR)
(IF(= DIRECCIONAL 1)(SETQ PT2 (POLAR PT1 (/ PI 2) CONTRAHUELLA)))
(IF(= DIRECCIONAL 2)(SETQ PT2 (POLAR PT1 (/ PI 2) CONTRAHUELLA)))
(IF(= DIRECCIONAL 3)(SETQ PT2 (POLAR PT1 PI HUELLA)))
(IF(= DIRECCIONAL 4)(SETQ PT2 (POLAR PT1 0 HUELLA)))
(COMMAND "_PLINE" PT1 PT2 "")
(SETQ PT1 PT2)
(IF(= DIRECCIONAL 1)(SETQ PT2 (POLAR PT1 0 HUELLA)))
(IF(= DIRECCIONAL 2)(SETQ PT2 (POLAR PT1 PI HUELLA)))
(IF(= DIRECCIONAL 3)(SETQ PT2 (POLAR PT1 (* PI 1.5) CONTRAHUELLA)))
(IF(= DIRECCIONAL 4)(SETQ PT2 (POLAR PT1 (* PI 1.5) CONTRAHUELLA)))
(COMMAND "_PLINE" PT1 PT2 "");DIBUJO DE UN ESCALON
(REPEAT (- CANT 1)
(SETQ PT1 PT2)
(IF(= DIRECCIONAL 1)(SETQ PT2 (POLAR PT1 (/ PI 2) CONTRAHUELLA)))
(IF(= DIRECCIONAL 2)(SETQ PT2 (POLAR PT1 (/ PI 2) CONTRAHUELLA)))
(IF(= DIRECCIONAL 3)(SETQ PT2 (POLAR PT1 PI HUELLA)))
(IF(= DIRECCIONAL 4)(SETQ PT2 (POLAR PT1 0 HUELLA)))
(COMMAND "_PLINE" PT1 PT2 "")
(SETQ PT1 PT2)
(IF(= DIRECCIONAL 1)(SETQ PT2 (POLAR PT1 0 HUELLA)))
(IF(= DIRECCIONAL 2)(SETQ PT2 (POLAR PT1 PI HUELLA)))
(IF(= DIRECCIONAL 3)(SETQ PT2 (POLAR PT1 (* PI 1.5) CONTRAHUELLA)))
(IF(= DIRECCIONAL 4)(SETQ PT2 (POLAR PT1 (* PI 1.5) CONTRAHUELLA)))
(COMMAND "_PLINE" PT1 PT2 "")
)

);RESTO DE ESCALONES

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(DEFUN PROCESODEDATOSESCACLIC3 ()
(SETQ RELACIONDEPASO (+ (* 2 CONTRAHUELLA) HUELLA));RELACION DE PASO DE LA ESCALERA
(SETQ PASOREALDIAGONAL (/ CONTRAHUELLA (SIN (/ ANGESCABS 2))));PASO REAL DIAGONAL
);FIN DE PROCESO DE DATOS

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(DEFUN MOSTRARRESULTADOSESCACLIC ()
(PROMPT "\n*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&*")
(PROMPT "\nLA DIRECCIONAL INGRESADA ES: ")
(IF (= DIRECCIONAL 1)(PRINC "HACIA DERECHA Y ARRIBA"))
(IF (= DIRECCIONAL 2)(PRINC "HACIA IZQUIERDA Y ARRIBA"))
(IF (= DIRECCIONAL 3)(PRINC "HACIA IZQUIERDA Y ABAJO"))
(IF (= DIRECCIONAL 4)(PRINC "HACIA DERECHA Y ABAJO"))
(PROMPT "\nALTURA VERTICAL ENTRE NIVELES: ")
(PRINC ALT)
(PROMPT "\nDESARROLLO HORIZONTAL: ")
(PRINC DESH)
(PROMPT "\nLARGO DIAGONAL TOTAL: ")
(PRINC INCLINADA)
(PROMPT "\nEL NUMERO DE ESCALONES DETERMINADO PARA ESTE CASO ES: ")
(PRINC CANT)
(PROMPT "\nANGULO DE LA ESCALERA: ")
(PRINC ANGESCGRAD)
(PROMPT "º")
(PROMPT "\nVALOR DE HUELLA: ")
(PRINC HUELLA)
(PROMPT "\nVALOR DE CONTRAHUELLA: ")
(PRINC CONTRAHUELLA)
(PROMPT "\nLA RELACION DE PASO (2CH+1H) CALCULADA ES: ")
(PRINC RELACIONDEPASO)
(PROMPT "\nEL PASO REAL DIAGONAL PARA PERSONAS EN ESTA ESCALERA ES: ")
(PRINC PASOREALDIAGONAL)
(PROMPT "\n*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&*")
(PROMPT "\n*....© AUTOR: VICTOR ADOLFO BRACAMONTE....2007....*")
(PRINC)
);FIN DE MOSTRAR RESULTADOS

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(DEFUN REST_VARESCACLIC ()
(COMMAND "_OSMODE" 4133)
(COMMAND "_PICKBOX" 3)
(PRINC)
);RESTITUIR VARIABLES DE SISTEMA EN ESCACLIC

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,

(DEFUN C:ESCACLIC (/ ALT DESH PT1 PT2
ANT_ERROR *ERROR*)
(SETQ ANT_ERROR *ERROR*
*ERROR* ERRORESCACLIC)
(ENTRADADEDATOSESCACLIC)
(VAR_VARESCACLIC)
(PROCESODEDATOSESCACLIC1)
(PROCESODEDATOSESCACLIC2)
(PROCESODEDATOSESCACLIC3)
(MOSTRARRESULTADOSESCACLIC)
(REST_VARESCACLIC)
(SETQ *ERROR* ANT_ERROR)
);FIN DE ESCACLIC