acad hispano
¿Quieres reaccionar a este mensaje? Regístrate en el foro con unos pocos clics o inicia sesión para continuar.

Ayuda con una rutina de coordenadas

Ir abajo

Ayuda con una rutina de coordenadas Empty Ayuda con una rutina de coordenadas

Mensaje por José Francisco Vie Jul 02, 2021 12:46 am

Buen día a todos.
Como siempre, molestando.
Tengo un pequeño lisp que básicamente selecciona un valor numérico, coordenada X, luego selecciona otro valor numérico, coordenada Y y crea un nodo en esas coordenadas.
Pasa que por la prisa, de vez en cuando no selecciono un texto (pico en la pantalla) y la rutina da la opción de "intente de nuevo".
Hasta ahí todo bien, pero............ el pero de siempre, cuando quiero que la rutina finalice, debo salir con ESC ya que con botón derecho del mouse, sigue dando la opción de "intente de nuevo".
La pregunta: me pueden ayudar modificando el lisp para que si me equivoco a la hora de seleccionar la coordenada, continué dando la opción de intentar de nuevo, pero cuando quiera salir o que la rutina finalice, lo pueda hacer con el botón derecho del mouse?
Les agradezco su ayuda desde ya.
Saludos
El lisp:

Código:
(defun c:ptx (/ entx enty cx cy pt1 esc msc tp xd ht)
  (vl-load-com)
  (setvar "CMDECHO" 0)
  (vl-cmdf "_UNITS" "2" "3" "2" "3" "90" "_Y")
  (vl-cmdf "_setvar" "angdir" "1")
  (vl-cmdf "_setvar" "dimzin" "1")
  (vl-cmdf "_setvar" "angbase" "270")
  (vl-cmdf "_OSNAP" "_OFF")
  (setvar "pdmode" 32)
  (setq esc 500)
  (setq msc (/ 1000 esc))
  (setq tp (/ 1.5 msc))
  (setq xd 1)
  (setq ht (/ 2.0 msc))
  (setvar "pdsize" tp)
               ;****************************************************
  (if nold
    ()
    (setq nold "1")
  )
               ;****************************************************
  (princ "\nPrimer Punto:< ")
  (princ (strcat nold " >: "))
  (setq x (getstring))

  (if (= x "")
    (setq n nold)
    (setq n x)
  )
  (setq nold n)
  (if (and (>= (ascii n) 48)
     (<= (ascii n) 57)
      )
    (setq n (atoi n))
  )
               ;**********************************
  (vl-cmdf "_-STYLE" "Romans" "romans.shx" 0 1 0 "NO" "NO" "")
  (vl-cmdf "_layer" "_m" "cn" "_c" "70" "" "")
  (vl-cmdf "_layer" "_m" "nombre del punto" "_c" "4" "" "")
  (setq entx (car (entsel "\nSeleccione la Coordenada X :")))
  (if (null entx)
    (while (null entx)
      (princ "\nIntente de Nuevo ")
      (setq entx (car (entsel)))
    )
  )
  (while
    (setq cx (atof (cdr (assoc 1 (entget entx)))))
    (vl-cmdf "_erase" entx "")
    (setq enty (car (entsel "\nSeleccione la Coordenada Y :")))
    (if   (null enty)
      (while (null enty)
   (princ "\nIntente de Nuevo ")
   (setq enty (car (entsel)))
      )
    )
    (setq cy (atof (cdr (assoc 1 (entget enty)))))
    (vl-cmdf "_erase" enty "")
    (setq cxt (+ cx xd))
    (setq pt (list cx cy))
    (setq ptt (list cxt cy))
    (setvar "clayer" "cn")
    (vl-cmdf "_point" pt)
    (setvar "clayer" "nombre del punto")
    (vl-cmdf "_text" ptt ht "90" n)
               ;********************************************************
    (cond
      ((= (type n) 'int)
      (setq n (+ 1 n))
      (setq nold (itoa n))
      )

      ((= (type n) 'str)
      (setq n (chr (+ (ascii n) 1)))

      (if (> n "z")
    (setq n "A")
      )
      (setq nold n)
      )
    )
               ;********************************************************
    (setvar "clayer" "0")
    (setq entx (car (entsel "\nSeleccione la Coordenada X :")))
    (if   (null entx)
      (while (null entx)
   (princ "\nIntente de Nuevo ")
   (setq entx (car (entsel)))
      )
    )
  )
  (setvar "osmode" 45)
  (princ)
)

Gracias

José Francisco

Mensajes : 46
Fecha de inscripción : 30/03/2016

Volver arriba Ir abajo

Volver arriba

- Temas similares

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