como interrumpir o detener cuando hay un error

Ver el tema anterior Ver el tema siguiente Ir abajo

como interrumpir o detener cuando hay un error

Mensaje por arielbnvo el Mar Mayo 31, 2016 1:01 am

Buenas. Recien estoy aprendiendo e intentaba hacer un simbolo de ventana, pero solo se dibuja correctamente dando clic de abajo hacia arriba e izquierda a derecha o tambien de arriba hacia abajo y derecha a izquierda, por eso queria saber si hay manera de interrumpirla combinando algun comando con if, por ejemplo si ang o angu tal cosa que se aborte o se anule.

En general si no sale lo que uno quiere, o si en la pantalla sale lo contrario a lo que uno necesita etc. ¿cual seria el comando para interrumpirlo y se cancele solo sin tener que apretar escape?

Aclaro que no necesito una rutina, ya tengo una que baje. Esto lo hice ayer para practicar y me surgio esa duda, mas que nada es por curiosidad. Gracias

Código:
   (setq pt1 (getpoint "\n--------------"))
    (setq pt2 (getpoint pt1 "\n------------------"))
    (setq pt3 (LIST (car pt2) (cadr pt1)))
    (setq ang (angle pt3 pt2))
    (setq angu (angle pt1 pt3))

        
    (setq dis (distance pt3 pt1))
    (setq dist (distance pt2 pt3))

    (setq pt5 (polar pt1 ( + 0 ang ) dist ))

        
    ( if ( > dist dis )
    (command "_line" pt1  pt3 "")
    (command "_line" pt2  pt3 "")
                            )

    ( if ( > dist dis )
    (command "_line" pt5  pt2 "")
    (command "_line" pt5  pt1 "")
                                           )
                                    

   (setq pt6 ( polar pt1 ( + ( * ( / pi 2 ) 3 ) ang ) 0.05 ))
   (setq pt7 ( polar pt6 ( + 0 ang ) 0.05 ))
   (setq pt8 ( polar pt7 ( + 0 ang ) 0.05 ))
   (setq pt9 ( polar pt8 ( + ( / pi 2 ) ang ) 0.05 ))

   (setq pt10 ( polar pt3 ( + ( / pi 2 ) ang ) 0.05 ))
   (setq pt11 ( polar pt10 ( + 0 ang ) 0.05 ))
   (setq pt12 ( polar pt11 ( + 0 ang ) 0.05 ))
   (setq pt13 ( polar pt12 ( + ( * ( / pi 2 ) 3 ) ang ) 0.05 ))

   ( if ( > dist dis )
   (command "_line" pt1  pt5 "")
   (command "_line" pt2  pt5 "")
                            )


  (command "_pline" pt1 pt6 pt8 pt9 pt8 pt7     pt11 pt12 pt10 pt3 pt6 pt8 pt13  "" )

arielbnvo

Mensajes : 5
Fecha de inscripción : 21/03/2016

Ver perfil de usuario

Volver arriba Ir abajo

Re: como interrumpir o detener cuando hay un error

Mensaje por carlosmgilp el Mar Mayo 31, 2016 5:42 am

Hola arielbnvo como estas.

No estoy muy claro en lo que se quiere lograr, aunque como referencia de lo que dices puedes utilizar un quit y le das una salida limpia al final.

Te dejo un ejemplo, si seleccionas de der -> izq y inf -> sup te darás cuenta del error que surge al uno de los ángulos ser mayor que el otro.

Código:
(defun c:xxx  (/ ang angu pt1 pt2 pt3)
  (setq pt1 (getpoint "\n--------------"))
  (setq pt2 (getpoint pt1 "\n------------------"))
  (setq pt3 (list (car pt2) (cadr pt1)))
  (setq ang (angle pt3 pt2))
  (setq angu (angle pt1 pt3))
  (if (> ang angu)
    (command "_.line" pt1 pt2 "")
    (progn (princ "\nLimite de angulo superado.") (quit)))
  (princ))

Yo lo haría de esta manera para que la rutina no continué, porque si se deja solo el if no hace nada, pero la rutina continua funcionando.

También podemos esperar si alguno de los compañeros se sepa algún truco diferente y que no muestre el mensaje de ; error: quit / exit abort pero como te dije le puedes dar una salida limpia cuando ya la rutina este lista.

Bueno espero te sirva de algo.

Saludos.

carlosmgilp

Mensajes : 70
Fecha de inscripción : 17/03/2016
Edad : 35
Localización : Venezuela

Ver perfil de usuario

Volver arriba Ir abajo

Re: como interrumpir o detener cuando hay un error

Mensaje por arielbnvo el Mar Mayo 31, 2016 8:43 pm

Muchas gracias carlosmgilp era justo lo que preguntaba. Ahi subo la imagen de como quedaria correctamente o se interrumpe y sale un alerta que le puse si queda mal. Como veras me falta aprender muchisimo. ¡Muchas gracias!!!

" />



Código:
  defunc:consulta

   (setq pt1 (getpoint "\n--------------"))
        (setq pt2 (getpoint pt1 "\n------------------"))
        (setq pt3 (LIST (car pt2) (cadr pt1)))
        (setq ang (angle pt3 pt2))
        (setq angu (angle pt1 pt3))

            
        (setq dis (distance pt3 pt1))
        (setq dist (distance pt2 pt3))

        (setq pt5 (polar pt1 ( + 0 ang ) dist ))

                                                  
        ( if ( > dist    dis )   (alert "quedo mal, intentar nuevamente") )    
        ( if ( > dist    dis )   (quit) )                                                          ; <---------- aca se interrumpe si queda mal      
        ( if ( = ang ( * ( / pi 2 ) 3 ) )  (alert "quedo mal, intentar nuevamente") )      
        ( if ( = ang ( * ( / pi 2 ) 3 ) )  (quit) )    



        ( if ( > dist dis )
        (command "_line" pt1  pt3 "")
        (command "_line" pt2  pt3 "")
                                )

        ( if ( > dist dis )
        (command "_line" pt5  pt2 "")
        (command "_line" pt5  pt1 "")
                                               )
                                        

       (setq pt6 ( polar pt1 ( + ( * ( / pi 2 ) 3 ) ang ) 0.05 ))
       (setq pt7 ( polar pt6 ( + 0 ang ) 0.05 ))
       (setq pt8 ( polar pt7 ( + 0 ang ) 0.05 ))
       (setq pt9 ( polar pt8 ( + ( / pi 2 ) ang ) 0.05 ))

       (setq pt10 ( polar pt3 ( + ( / pi 2 ) ang ) 0.05 ))
       (setq pt11 ( polar pt10 ( + 0 ang ) 0.05 ))
       (setq pt12 ( polar pt11 ( + 0 ang ) 0.05 ))
       (setq pt13 ( polar pt12 ( + ( * ( / pi 2 ) 3 ) ang ) 0.05 ))

       ( if ( > dist dis )
       (command "_line" pt1  pt5 "")
       (command "_line" pt2  pt5 "")
                                )


      (command "_pline" pt1 pt6 pt8 pt9 pt8 pt7     pt11 pt12 pt10 pt3 pt6 pt8 pt13  "" )
      

arielbnvo

Mensajes : 5
Fecha de inscripción : 21/03/2016

Ver perfil de usuario

Volver arriba Ir abajo

Re: como interrumpir o detener cuando hay un error

Mensaje por carlosmgilp el Mar Mayo 31, 2016 10:09 pm

Hola me alegra que te haya servido.

Aunque yo haría un bloque dinámico y me ahorro código. Jejeje.

Saludos.

carlosmgilp

Mensajes : 70
Fecha de inscripción : 17/03/2016
Edad : 35
Localización : Venezuela

Ver perfil de usuario

Volver arriba Ir abajo

Re: como interrumpir o detener cuando hay un error

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.