Seleccion con and dentro de un while....
3 participantes
Página 1 de 1.
Seleccion con and dentro de un while....
Que tal, buen día a todo el foro. Luego de una involuntaria pero obligada ausencia por cuestiones académicas, ya es el año de no usar nada de lisp. Estoy retomando el rumbo. Inicio con un programita, que según yo está bastante sencillo, pero me di cuenta que estoy más oxidado de lo que pensaba. Obviamente, todo esto es contra reloj, por eso acudo a ustedes. La rutina es ésta:
Espero puedan echarme una mano...
Saludos y gracias.
- Código:
(vl-load-com)
(defun c:xdibuja()
(initget 129 "Izquierdo Derecho Ambos Salir")
(while
(setvar "OSMODE" 1)
(/=(setq texto (getkword "\n Dibujar en: [Izquierdo Derecho Ambos Salir] <Salir>: "))"Salir")
(If (and
(/= texto "Izquierdo")
(/= texto "Derecho")
(/= texto "Ambos")
(/= texto "Salir")
)
)
)
(cond
((= texto "Izquierdo")(alert "Ejecuta Izq"))
((= texto "Derecho") (alert "Ejecuta Der"))
((= texto "Ambos") (alert "Ejecuta Ambos"))
)
)
Espero puedan echarme una mano...
Saludos y gracias.
eliasp- Mensajes : 195
Fecha de inscripción : 17/03/2016
Re: Seleccion con and dentro de un while....
Yo lo haría así:
Como no existe condición para la posibilidad de que texto = "Salir", simplemente el programa termina, pues no hay nada después.
Yo prefiero hacerlo de esa manera. aunque puedes incluir el comando (exit). Pero eso lleva implícito hacer una función *error* para que salga de forma limpia.
- Código:
(vl-load-com)
(defun c:xdibuja()
(setq texto nil)
(setvar "OSMODE" 1)
(while (= texto nil)
(initget 129 "Izquierdo Derecho Ambos Salir")
(setq texto (getkword "\n Dibujar en: [Izquierdo Derecho Ambos Salir] <Salir>: "))
(cond ((and (/= texto "Izquierdo")(/= texto "Derecho")(/= texto "Ambos")(/= texto "Salir")(/= texto ""))
(setq texto nil)
)
((= texto "")
(setq texto "Salir")
)
);fin COND
);fin WHILE
(cond
((= texto "Izquierdo")(alert "Ejecuta Izq"))
((= texto "Derecho") (alert "Ejecuta Der"))
((= texto "Ambos") (alert "Ejecuta Ambos"))
);fin COND
);fin DEFUN
Como no existe condición para la posibilidad de que texto = "Salir", simplemente el programa termina, pues no hay nada después.
Yo prefiero hacerlo de esa manera. aunque puedes incluir el comando (exit). Pero eso lleva implícito hacer una función *error* para que salga de forma limpia.
Re: Seleccion con and dentro de un while....
Gracias Marco, es lo que necesito, pero.... (siempre hay un pero, verdad) necesito que después de seleccionar una acción, por ejemplo "Izquierda".... haga lo que tenga que hacer y regrese a preguntar otra vez. El asunto es que estoy trabajando con secciones transversales y se van a ampliar con esas condiciones, unas a la izquierda, otras a la derecha y otras en ambos lados. Por lo pronto, voy a tratar de corregir.
Saludos y gracias
Saludos y gracias
eliasp- Mensajes : 195
Fecha de inscripción : 17/03/2016
Re: Seleccion con and dentro de un while....
Otra solución es utilizar el progn para obtener la última respuesta de una serie de instrucciones
Por ejemplo, simplificando
Un saludo
Por ejemplo, simplificando
- Código:
(defun c:xd()
(setvar "OSMODE" 1)
(while (progn
(initget 129 "Izquierdo Derecho Ambos Salir")
(setq texto (getkword "\n Dibujar en: [Izquierdo Derecho Ambos Salir] <Salir>: "))
(cond
((= texto "Izquierdo")(alert "Ejecuta Izq") t)
((= texto "Derecho") (alert "Ejecuta Der") t)
((= texto "Ambos") (alert "Ejecuta Ambos") t)
(t (princ "\nHasta luego Lucas ......") nil)
)
))
(princ)
)
Un saludo
nolo- Mensajes : 182
Fecha de inscripción : 17/03/2016
Re: Seleccion con and dentro de un while....
Perfecto..... Muchas gracias
Saludos
Saludos
eliasp- Mensajes : 195
Fecha de inscripción : 17/03/2016
Temas similares
» Selección y dcl
» Mensaje en selección.
» Lisp de selección
» SELECCION DE OBJETOS
» Z en punto de seleccion
» Mensaje en selección.
» Lisp de selección
» SELECCION DE OBJETOS
» Z en punto de seleccion
Página 1 de 1.
Permisos de este foro:
No puedes responder a temas en este foro.
|
|