tarea2 e sepulveda

18
TAREA 2: Reloj usando la modificación de las características de un bloque. COMPUTACION GRAFICA EDGAR HERNANDO SEPULVEDA OVIEDO 3 DE SEPTIEMBRE DEL 2015

Upload: edgar-hernando-sepulveda-oviedo

Post on 23-Jan-2016

246 views

Category:

Documents


0 download

DESCRIPTION

ZASDFRGTY

TRANSCRIPT

Page 1: Tarea2 E Sepulveda

TAREA 2: Reloj usando la modificación de las características de un bloque.

COMPUTACION GRAFICA

EDGAR HERNANDO SEPULVEDA OVIEDO

3 DE SEPTIEMBRE DEL 2015

Page 2: Tarea2 E Sepulveda

Reloj usando la modificación de las características de un bloque.

DESCRIPCION DEL TRABAJO:

Se debe realizar un reloj, cuyas manecillas sean bloques aparte, y su característica de ángulo sea modificada para genera movimiento, además se debe extraer del sistema la hora y fecha para ser impresa en un reloj digital. Primero se generaron los bloques correspondientes a las manecillas fueron dibujadas en documentos aparte, y luego fueron generados como bloques, al igual se generó un bloque llamado armario que contendrá la fecha y hora digital, y un bloque llamado reloj donde estarán los bloques de las manecillas.

Las manecillas comenzaran en una posición correspondiente a 3:00 en el sentido dela horizontal, luego de ser cargada la información estas tomaran su posición según la información tomada del sistema. Primero el usuario ingresara la cantidad de tiempo que deberá durar la ejecución, luego ingresara el punto de inserción del reloj completo y continuado a esto el programa comenzara la respectiva ejecución de las ordenes programadas.

OBJETIVO GENERAL:

-Afianzar el conocimiento de las funciones que permiten modificar los bloques insertados.

OBJETIVOS ESPECIFICOS:

- Dibujar un reloj con la utilización de bloques insertados.

- Modificar los atributos pertenecientes a los bloques insertados.

- Leer la hora y fecha del sistema operativo para ser impreso en el reloj.

LISTADO DEL PROGRAMA:

Variables y Lectura del punto Inicial Código para insertar los bloques utilizados Creación de los textos para el reloj digital y la captura de sus

respectivos entity names Variables Auxiliares y while principal Listado de funciones

o Función para transformar los segundos a ángulo.o Función para transformar los minutos a ánguloo Función para transformar las horas a ánguloo Función para Pintar la hora digitalo Función para Pintar la Fecha Digital

Page 3: Tarea2 E Sepulveda

Las funciones de pintar hora y pintar la fecha digital, utilizan comandos especiales para lectura de datos del sistema, por otra parte las funciones de transformación de ángulos, fueron utilizadas para el movimiento coordinado de las manecillas.

En este proyecto las posiciones de inserción de los bloques son tomadas de la coordenada ingresada por mouse por parte del usuario, además cada manecilla es un bloque en particular, el OSNAP fue desactivado al iniciar la función y vuelto a su estado inicial al terminar dicha función.

ANALISIS MATEMATICO:

Como primer cálculo matemático se realizó una regla de tres simple, para el paso de grados a radianes, donde se tenía lo siguiente:

Pi radianes equivalen a 180 grados, por lo cual se necesitaba saber cuántos radianes eran el grado obtenido, por ejemplo en el caso de los minutos se tenía la función:

(SETQ angrad(* ang (/ PI 180)))

Donde angrad es el ángulo calculado con anterioridad.

Seguido de este análisis matemático se realizó el siguiente análisis:

Para saber cuántos grados debía rotar cada bloque de manecilla del reloj, se realizaron tasas de conversión con los siguientes factores:

1 hora = 60 min

1 min = 60 s

1 Vuelta de reloj = 360 grados

Teniendo esto se definió lo siguiente:

Horario: 360°/12hor = 30°, es lo que debe rotar cada hora el horario.

Minutero: 360°/60min = 6, es lo que debe rotar cada minuto el minutero.

Segundero: 360°/60seg = 6°, es lo que debe rotar cada segundo el segundero.

Teniendo en cuenta que se desea un movimiento más realista, se tuvo en cuenta que los 30 grados del horario debían ser graduales por lo que se realizó el siguiente cálculo:

Horario: 30°/60min= 0.5°, es lo que debe rotar cada minuto el horario, presentando un movimiento más cercano al del reloj del sistema.

Page 4: Tarea2 E Sepulveda

FORMA DE EJECUCION:

SISTEMA OPERATIVO WINDOWS AUTOCAD 2016

1. Descargar la carpeta, Tarea2-E-Sepulveda.rar2. Descomprimir esta carpeta en el escritorio del computador a utilizar. Se debe tener

en cuenta, el PATH donde se encuentran los archivos, para este ejemplo es el siguiente: C:\Users\Hogar\Desktop\Tarea2-E-Sepulveda, si los archivos se encuentran en una ruta diferente esta debe ser modificada en el archivo LSP. En la siguiente sección:

Figura 1: Path requerido para la ejecucion

Modificando el PATH por el que se tiene en el computador donde será ejecutado

3. Abrir AutoCAD 2016 en inglés.4. En la barra de herramientas ir a la pestaña manage.5. Dar clic sobre la opción Visual Lisp Editor, en la subpestaña Applications.6. En la nueva ventana dar clic sobre File.7. Ahora dar clic sobre Open File.8. Seleccionar el archivo con extensión LSP descargado con anterioridad.9. Ahora en la barra de opciones dar clic sobre el icono correspondiente a Load active

edit window10. A continuación dar clic sobre el icono correspondiente a Active AutoCAD11. Una vez se encuentra ubicado en el espacio modelo en AutoCAD, en la barra de

comandos escribir TAREA2, que corresponde al nombre de la función creada. El OSNAP es desactivado para realizar la función.

12. Ahora el programa solicitara el tiempo de ejecución del reloj realizado, que deberá ser ingresado por el usuario en número entero.

13. Ahora el programa pedirá ingresar con un clic la ubicación que se desea del reloj a realizar.

14. Se comienza la ejecución, hasta terminar el tiempo indicado, luego del cual se actia a su estado original el OSNAP.

15. Una vez se termina el tiempo de ejecución, AutoCAD está listo para repetir el mismo procedimiento con el comando, o realizar nuevos dibujos.

Page 5: Tarea2 E Sepulveda

IMÁGENES DE CORRIDA DEL PROGRAMA:

Ejecución en Windows

Descargar el archivo comprimido

Figura 2: Archivo .rar descargado

Descomprimir el archivo

Figura 3: Carpeta descomprimida

Figura 4: Opción Visual LISP Editor

Page 6: Tarea2 E Sepulveda

Figura 5: Carga del archivo en AutoCAD

Figura 6: Programa cargado

Figura 7: Descarga del programa en AutoCAD (Load Active Edit Window)

Page 7: Tarea2 E Sepulveda

Figura 8: Carga satisfactoria

Figura 9: Opción (Active AutoCAD) para regresar al espacio modelo

Figura 10: Llamando a la función creada en la línea de comandos

Figura 11: Colocando el número de tiempo que sea ejecutado el reloj

Figura 12: Colocando el punto de inserción del reloj

Page 8: Tarea2 E Sepulveda

Figura 13: Inserción de los bloques creados en su posición inicial

Figura 14: Primera imagen de la ejecución en proceso

Figura 15: Segunda imagen de la ejecución en proceso

Page 9: Tarea2 E Sepulveda

Figura 16: Tercera imagen de la ejecución en proceso

Figura 17: Comparación del proceso con el reloj del sistema

Page 10: Tarea2 E Sepulveda

CONCLUSIONES:

Para este proyecto fue de bastante utilidad, el poder modificar las características específicas de un bloque insertado, ya que con esto se pudo generar el movimiento de las manecillas coordinadas, modificando solo un valor de estas, correspondiente al ángulo.

Se decidió, que los textos de fecha y hora digital, fueran agregados en el mismo archivo principal, ya que en un principio, dicho texto se encontraba dentro de uno de los bloques insertados, y puesto a que pudo ser modificado, presentaba problemas cuando era ingresado en un ciclo para ir cambiando su contenido.

Funciones como enget, entmod, entlast, fueron de bastante utilidad para la extracción de información específica de los diferentes objetos que se querían trabajar.

Funciones como subst y assoc fueron de vital importancia para extraer datos específicos de una entidad creada o de un bloque insertado. Ya que permiten la manipulación especifica de un dato que cumple ciertas características que son ingresadas como parámetros en estas.

Fnciones como entnext, permitieron conseguir información desde el archivo principal, acerca de objetos específicos que hacen parte de los bloques insertados para su posterior modificación, sin embargo, esto no fue implementado debido a los problemas mencionados con anterioridad, que se presentaron en la ejecución de un while que obtenía y modificaba información utilizando dicha función.

Debido a la tarjeta gráfica, instalada en el equipo donde se corrió el programa, se necesitó de un delay correspondiente a 50 ms, para que pudieran ser observables los movimientos presentados por las manecillas, sin embargo debido a esto, en ocasiones se presentan saltos en la ejecución grafica del programa, sin embargo la hora presentada es la correcta.

Page 11: Tarea2 E Sepulveda

ANEXO Código implementado.

(DEFUN C:Tarea2 ()

;;;Variables y lectura de punto inicial

(SETQ osm (GETVAR "osmode"))

(SETVAR "osmode" 0)

(SETQ controlciclo (getint "Durante cuanto tiempo desea ejecutar el reloj: ") )

(SETQ P1 (getpoint "Clic donde desea Instalar el Reloj: ") )

(SETQ blanco 9 inicio "START" Hmod 16 Hmod2 9.5 x(car P1) y(cadr P1) xL1(+ x 100.0) yL1(- y 100.0) xt(+ x 520.0) yt(+ y 10.0) )

(SETQ xrej(+ x 260.0) yrej(+ y 40.0) prueba1 "Hora" prueba "Fecha" xt1(+ x 515.0) yt2(- y 50.0) H 12)

;;;Regresa el Osnap a su valor original

(SETVAR "osmode" osm)

;;;Codigo para insertar los Bloques Realizados

(command "_insert" "C:\\Users\\Hogar\\Desktop\\Tarea2-E-Sepulveda\\Bloque_Armario.dwg" P1 "" "" "")

(command "_insert" "C:\\Users\\Hogar\\Desktop\\Tarea2-E-Sepulveda\\Bloque_Reloj.dwg" P1 "" "" "")

(command "_insert" "C:\\Users\\Hogar\\Desktop\\Tarea2-E-Sepulveda\\Bloque_Horario.dwg" (list xrej yrej) "" "" "")

(SETQ horario (entget(entlast)))

(command "_insert" "C:\\Users\\Hogar\\Desktop\\Tarea2-E-Sepulveda\\Bloque_Minutero.dwg" (list xrej yrej) "" "" "")

(SETQ minutero (entget(entlast)))

(command "_insert" "C:\\Users\\Hogar\\Desktop\\Tarea2-E-Sepulveda\\Bloque_Segundero.dwg" (list xrej yrej) "" "" "")

Page 12: Tarea2 E Sepulveda

(SETQ segundero (entget(entlast)))

(command "TEXT" "j" "M" (list xt1 yt2) Hmod2 0 prueba " ")

(SETQ fdig (entget(entlast)))

(command "TEXT" "j" "M" (list xt yt) Hmod 0 prueba1 " ")

(SETQ tdig (entget(entlast)))

(setq a 1)

(setq minref 0)

(setq horef 0)

(setq color 0)

(setq fecharef "a")

(while (< a controlciclo)

(relojdigital)

(tiempo)

(pseg)

(command "_delay" 50)

(if (/= minref m)

(progn

(pmin)

(setq minref m)

)

)

Page 13: Tarea2 E Sepulveda

(if (/= horef h)

(progn

(phor)

(setq horef h)

)

)

(if (/= fecharef fi2)

(progn

(fechadig)

)

)

(print ti2)

(print fi2)

(SETQ a (+ a 1))

) )

;;;Funcion para leer hora,minutos,segundos,dia,mes,año del sistema.

(defun tiempo()

Page 14: Tarea2 E Sepulveda

(SETQ fi2(menucmd "M=$(edtime,$(getvar,date),DDD\",\" D MONTH YYYY)"))

(SETQ ti2(menucmd "M=$(edtime, $(getvar, date),HH:MM:SS AM/PM)"))

(SETQ h(atoi(setq hr (substr ti2 1 2 ))))

(SETQ minutos(substr ti2 4 5 ))

(SETQ m(atoi (setq minu(substr minutos 1 2))))

(SETQ seg(atoi (setq s(substr ti2 7 8))))

)

;;;Funcion para transformar los segundos

(defun pseg()

(SETQ angulo(- 90 (* 6 seg)))

(SETQ arad(* angulo (/ PI 180)))

(SETQ seg1(subst (cons 50 arad)(assoc 50 segundero)segundero))

(entmod seg1)

)

;;;Funcion para transofrmar los minutos

(defun pmin()

(SETQ ang1(- 90 (* 6 m)))

(SETQ ang2(* -0.1 seg))

(SETQ ang(+ ang1 ang2))

(SETQ angrad(* ang (/ PI 180)))

(SETQ min1(subst (cons 50 angrad)(assoc 50 minutero)minutero))

Page 15: Tarea2 E Sepulveda

(entmod min1)

)

;;;Funcion para transofrmar las horas

(defun phor()

(if (>= h 12)

(setq h1 (- h 12))

)

(if (< h 12)

(setq h1 h)

)

(SETQ angle1(- 90 (* 30 h1)))

(SETQ angl2(* -0.5 m))

(SETQ angle5(+ angle1 angl2))

(SETQ anglerad(* angle5 (/ PI 180)))

(SETQ hora1(subst (cons 50 anglerad) ( assoc 50 horario ) horario))

(entmod hora1)

)

(defun relojdigital()

(setq hdig1(subst (cons 1 ti2)(assoc 1 tdig)tdig))

Page 16: Tarea2 E Sepulveda

(entmod hdig1))

(defun fechadig()

(setq fecdig(subst (cons 1 fi2)(assoc 1 fdig)fdig))

(entmod fecdig))