Programa coordenadas X e Y

Hace tiempo me mandaste este código para sacar las coordenadas POR e Y de un punto. Funciona perfectamente, ¿solamente me gustaría que delante de cada valor salga escrita una POR y una Y. Es possible hacerlo o seria muy complicado? También me gustaría que se viera una encima de la otra, o sea, la coordenada POR arriba, y la coordenada Y debajo. Un saludo y muchas gracias por adelantado.
(defun punto (/ )
(Setq pm (getpoint "\nSeleccione un punto en la pantalla: "))
(Setq ang 0)
(Setq pm2 (polar pm (+ ang (/ PI 2)) 20))
(Setq x (car pm))
(Setq y (cadr pm))
(setq coordenada (strcat (rtos x 2 3) "," (rtos y 2 3)))
(Command "leader" pm pm2 "a" coordenada "")
)
(defun c:coor (/ )
(Setvar "cmdecho" 0)
(Punto)
(Setvar "cmdecho" 1)(prin1)
)
(Prompt "\nNuevo comando COOR definido...")

1 respuesta

Respuesta
1
Bueno aquí esta la nueva rutina. Borra la anterior y reemplázala por esta:
(Defun punto (/ pm ang pm2 pm3 x y coordenadax coordenaday)
(Setq pm (getpoint "\nSeleccione un punto en la pantalla: "))
(Setq ang 0)
(Setq pm2 (polar pm (+ ang (/ PI 2)) 20))
(Setq pm3 (polar (list (+ (car pm2) 0.625) (+ (cadr pm2) 5)) ang 0))
(Setq x (car pm))
(Setq y (cadr pm))
(Setq coordenadax (strcat "X " (rtos x 2 3)))
(Setq coordenaday (strcat "Y " (rtos y 2 3)))
(Command "_.leader" pm pm2 "a" coordenaday "")
(command "_.text" pm3 "" "" coordenadax)
)
(defun c:coor (/ ref)
(setvar "cmdecho" 0)
(setq ref (getvar "osmode"))
(Setvar "osmode" 0)
(Punto)
(Setvar "osmode" ref)
(Setvar "cmdecho" 1)(prin1)
)
(Prompt "\nNuevo comando COOR definido...")
Cualquier problema solo me cuentas...
Hola speedCAD, me gustaría que me aconsjaras un libro con ejemplos de aplicaciones en Autolisp o un buen libro para aprender a programar en AQutolisp. Probare tu programa el Lunes y ya te diré a ver que tal. Un saludo. MarK
El libro que yo te recomiendo es el siguiente:
Titulo: Programación con AUTOCAD
Autores: J. A. Tajadura Zapirain, B. Manso Irurzun, J. Lopez Fernandez.
Editorial: McGrawHill
Ahora te voy a dar dos páginas donde puedes sacar buena información:
http://personales.unican.es/togoresr/
http://webs.demasiado.com/autocad/
Con eso creo que tienes para rato...
Hola SpeedCAD, he probado tu programa y funciona perfectamente. Solamente he encontrado un pequeño error: Cuando cambias de estilo de acotación, por ejemplo, a un estilo que es el doble de grande que otro(altura del texto, flechas, distancia entre línea y texto...) solamente me dimensiona la coordenada Y, quedando siempre la POR a el estilo ISO por defecto. ¿Sabes si es debido a algún fallo de configuración?
Muchas gracias por todo.
MarK.
No es falla es un problema mio, te explico:
Lo que pasa es que cree el leader con una sola coordenada y la otra con texto normal, por lo tanto, si cambias el estilo de cota se cambiara solo la coordenada Y y la POR quedara como texto...
Eso es no es error, pero no te preocupes la modifico y te la envío...
Solo esperala...
Y por cierto la recomendación de los manuales es buena...
Bueno ahora ya no debería tener problemas. Ademas le he agregado la opción de altura de texto para que todo sea compatible...
Aquí esta la nueva rutina:
(Defun punto (/ alt longx longy dist pm ang pm2 pm3 pm4 x y coordenadax coordenaday)
(Setq alt (getreal "\nIngrese altura de texto: "))
(Setq pm (getpoint "\nSeleccione un punto en la pantalla: "))
(Setq ang 0)
(Setq pm2 (polar pm (+ ang (/ PI 2)) 15))
(Setq pm3 (polar (list (+ (car pm2) 0.625) (+ (cadr pm2) (+ alt 2 (/ alt 2)))) ang 0))
(Setq x (car pm))
(Setq y (cadr pm))
(Setq coordenadax (strcat "X " (rtos x 2 3)))
(Setq coordenaday (strcat "Y " (rtos y 2 3)))
(Setq longx (* (strlen coordenadax) alt))
(Setq longy (* (strlen coordenaday) alt))
(Setq dist (min longx longy))
(Setq pm4 (polar pm2 ang dist))
(Command "_.leader" pm pm2 pm4 "" "" "n")
(Command "_.text" pm3 alt "" coordenadax)
(command "_.text" (list (+ (car pm2) 0.625) (+ (cadr pm2) 2)) alt "" coordenaday)
)
(defun c:coor (/ ref)
(setvar "cmdecho" 0)
(setq ref (getvar "osmode"))
(Setvar "osmode" 0)
(Punto)
(Setvar "osmode" ref)
(Setvar "cmdecho" 1)(prin1)
)
(Prompt "\nNuevo comando COOR definido...")
Espero que no tengas problemas, en todo caso no dudes en seguir preguntando...
Hola SpeedCAD,
Lo pruebo mañana y te digo algo. Por cierto, me olvidé de agradecerte por tus recomendaciones. Son realmente BUENAS. Muchas muchas gracias!
PD: Seria mucho pedir que cuando seleccionas es punto de coordenada, se quede "parpadeando" hasta que tu sitúes la directriz a la posición que desees; tal y como te deja hacer AutoCAD cuando acotas una cota lineal, angular...
Bueno ahora te mando la rutina con lo que pides "se quede "parpadeando" hasta que tu sitúes la directriz a la posición que desees; tal y como te deja hacer AutoCAD cuando acotas una cota lineal"...
Aquí esta la nueva rutina:
(Defun punto (/ alt longx longy dist pm ang pm2 pm3 pm4 x y x0 coordenadax coordenaday)
(Setq alt (getreal "\nIngrese altura de texto: "))
(Setq pm (getpoint "\nSeleccione punto: "))
(Setq pm2 (getpoint pm "\nSeleccione segundo punto: "))
(Setq ang 0)
(Setq pm3 (polar (list (+ (car pm2) 0.625) (+ (cadr pm2) (+ alt 2 (/ alt 2)))) ang 0))
(Setq x (car pm))
(Setq y (cadr pm))
(Setq x0 (car pm2))
(Setq coordenadax (strcat "X " (rtos x 2 3)))
(Setq coordenaday (strcat "Y " (rtos y 2 3)))
(Setq longx (* (strlen coordenadax) alt))
(Setq longy (* (strlen coordenaday) alt))
(Setq dist (min longx longy))
(if (< x x0)
(Setq pm4 (polar pm2 ang dist))
(Setq pm4 (polar pm2 ang (* dist -1)))
)
(Command "_.leader" pm pm2 pm4 "" "" "n")
(if (< x x0)
(Command "_.text" pm3 alt "" coordenadax)
(Command "_.text" "j" "r" pm3 alt "" coordenadax)
)
(if (< x x0)
(command "_.text" (list (+ (car pm2) 0.625) (+ (cadr pm2) 2)) alt "" coordenaday)
(command "_.text" "j" "r" (list (+ (car pm2) 0.625) (+ (cadr pm2) 2)) alt "" coordenaday)
)
)
(defun c:coor (/ ref)
(setvar "cmdecho" 0)
(setq ref (getvar "osmode"))
(Setvar "osmode" 0)
(Punto)
(Setvar "osmode" ref)
(Setvar "cmdecho" 1)(prin1)
)
(Prompt "\nNuevo comando COOR definido...")
Hola SpeedCAD, muchas gracias por tu dedicación. He probado tu último programa y no me funciona bien. Solamente me deja situar la directriz y ya está. No aparece el texto con las coordenadas. Luego me sale un error en la línea de tareas de autocad. Todos los otros programas que me enviaste me funcionaron sin ningún problema.
Espero sepas que hacer.
Te agradecería un favor: me gustaría no tener que entrar cada vez la altura de texto. ¿Es posible? Preferiría que cogiera la altura determinada por el estilo de acotación en uso.
Muchas gracias por todo.
MARK
Hace tiempo que mande la respuesta a tu problema modificando la rutina pero no se por que no aparece, bueno aquí esta otro programa, creo que con este no tendrás problemas por que este lee el estilo de cota en uso...
(Defun punto (/ escala alt longx longy dist pm ang pm2 pm3 pm4 x y x0 coordenadax coordenaday)
(Setq estilo (getvar "dimstyle"))
(command "_-dimstyle" "r" estilo)
(Setq escala (getvar "dimscale"))
(Setq alt (getvar "dimtxt"))
(Setq pm (getpoint "\nSeleccione punto: "))
(Setq pm2 (getpoint pm "\nSeleccione segundo punto: "))
(Setq ang 0)
(Setq pm3 (polar (list (+ (car pm2) 0.625) (+ (cadr pm2) (+ alt 2 (/ alt 2)))) ang 0))
(Setq x (car pm))
(Setq y (cadr pm))
(Setq x0 (car pm2))
(Setq coordenadax (strcat "X " (rtos x 2 3)))
(Setq coordenaday (strcat "Y " (rtos y 2 3)))
(Setq longx (* (strlen coordenadax) alt))
(Setq longy (* (strlen coordenaday) alt))
(Setq dist (min longx longy))
(if (< x x0)
(Setq pm4 (polar pm2 ang dist))
(Setq pm4 (polar pm2 ang (* dist -1)))
)
(Command "_.leader" pm pm2 pm4 "" "" "n")
(if (< x x0)
(command "_.text" pm3 (* alt escala) "" coordenadax)
(command "_.text" "j" "r" pm3 (* alt escala) "" coordenadax)
)
(if (< x x0)
(command "_.text" (list (+ (car pm2) 0.625) (+ (cadr pm2) 2)) (* alt escala) "" coordenaday)
(command "_.text" "j" "r" (list (+ (car pm2) 0.625) (+ (cadr pm2) 2)) (* alt escala) "" coordenaday)
)
)
(defun c:coor (/ ref)
(setvar "cmdecho" 0)
(setq ref (getvar "osmode"))
(Setvar "osmode" 0)
(Punto)
(Setvar "osmode" ref)
(Setvar "cmdecho" 1)(prin1)
)
(Prompt "\nNuevo comando COOR definido...")
Hola speedCad, creo que esta respuesta ya la había recibido, pero hasta ahora no constaba dentro de la pregunta. Te contesté este mensaje, creo, tampoco sale reflejado. Te decía que cuando quieres situar la directriz a la izquierda, el texto no sale. Supongo que es este mismo programa. Pruébalo y ya me dirás que tal. Yo lo probaré el Lunes y te diré también que tal me ha ido. Muchas muchas gracias por tu persistencia!
PD: Hubo un mensaje, relacionado con otro tema que me desapareció por completo. Yo, a veces, alucino...
en fin... INFORMÁTICA de Bill Gates!
Perdoname, todo este tiempo que he estado ausente es por salud, ayer salí del hospital. He estado ingresado por una antigua operación de la cadera que me tenían que revisar. Perdoname de verdad pero ahí no tenia acceso a INternet.
Bueno, primero de todo te deseo que pases una feliz navidad y a ver si nos toca la Lotería...
Yo aún no lo he podido probar, este Lunes ya empiezo nuevamente a trabajar y lo probaré, pero me gustaría saber si tu lo has probado. Te acuerdas... Si ubicas la directriz en la banda derecha del punto que deseas conocer sus coordenadas, ningún problema, funciona perfectamente; pero si de este mismo punto deseas ubicar la directriz en su banda izquierda, no funciona bien, no escribe ningún texto.
Espero sepas que hacer en el caso que continué este problema. Un saludo. MarK
Ahora si me funciona, la verdad siempre me funciono pero ahora ya esta más arreglado y como te conté toma la altura de texto del estilo de cota que esta como actual...
Hola Speedcad, lo he probado nuevamente y no me funciona...
Dime como lo haces para que te salga el texto porque a mi no me funciona. Supongo que me has entendido. Si ubicas la directriz hacioa la izquierda, no escribe ningún texto. A la derecha ningún problema. Es el mismo código que me enviaste hace tiempo, ¿no?
Además he encontrado un pequeño problema:
Cada vez que cargas la aplicación COOR, deja deshabilitadas la referencias de objetos que tengas activadas(punto final, intersección, cuadrante...)
Espero que puedas ayudarme, supongo que debo hacer algo mal.
Un saludo desde España.
Felices Fiestas.
MarK
Es raro que no te funcione por que yo lo he probado en mi casa y en mi trabajo y en ambos funciona bien, el código no es el mismo, este esta mejorado en el asunto de tomar el estilo de cota...
Este es el código y es el mismo que el anterior y no veo el problema, pruébalo en otro computador haber que pasa: le he cambio solo una cosa pruébalo confío en que ahora resulta...
Ah lo de las referencias a objeto las desactivo sino las tamaria y haría la geometría mal... pero al final la debería activar...
(Defun punto (/ escala alt longx longy dist pm ang pm2 pm3 pm4 x y x0 coordenadax coordenaday)
(Setq estilo (getvar "dimstyle"))
(command "_-dimstyle" "_r" estilo)
(Setq escala (getvar "dimscale"))
(Setq alt (getvar "dimtxt"))
(Setq pm (getpoint "\nSeleccione punto: "))
(Setq pm2 (getpoint pm "\nSeleccione segundo punto: "))
(Setq ang 0)
(Setq pm3 (polar (list (+ (car pm2) 0.625) (+ (cadr pm2) (+ alt 2 (/ alt 2)))) ang 0))
(Setq x (car pm))
(Setq y (cadr pm))
(Setq x0 (car pm2))
(Setq coordenadax (strcat "X " (rtos x 2 3)))
(Setq coordenaday (strcat "Y " (rtos y 2 3)))
(Setq longx (* (strlen coordenadax) alt))
(Setq longy (* (strlen coordenaday) alt))
(Setq dist (min longx longy))
(if (< x x0)
(Setq pm4 (polar pm2 ang dist))
(Setq pm4 (polar pm2 ang (* dist -1)))
)
(Command "_.leader" pm pm2 pm4 "" "" "n")
(if (< x x0)
(command "_.text" pm3 (* alt escala) "" coordenadax)
(command "_.text" "_j" "_r" pm3 (* alt escala) "" coordenadax)
)
(if (< x x0)
(command "_.text" (list (+ (car pm2) 0.625) (+ (cadr pm2) 2)) (* alt escala) "" coordenaday)
(command "_.text" "_j" "_r" (list (+ (car pm2) 0.625) (+ (cadr pm2) 2)) (* alt escala) "" coordenaday)
)
Feliz año nuevo...
Hola SpeedCAd, perdona por tardar tanto en contestar. En el mensaje que te envié, te decía que ahora funciona un poco mejor: cuando ubicas la directriz hacia la izquierda, ya funciona correctamente, pero aún esta sin resolver 3 aspectos:
1.- La justificación del texto cuando ubicas la directriz hacia la izquierda, sale al revés de cuando ubicas la directriz a la derecha.(Esto puede a quien le guste pero prefiero que quede alineado(justificado) a la izquierda(igual como cuando ubicas la directriz a la derecha).
2.-El espaciado entre el texto y la línea directriz siempre es el mismo. El problema es que cuando utilizo un estilo de acotación el doble o la mitad de el "normal" o standard, me ubica el texto a la misma distancia,... no se si me explico bien...
3.-Prefiero que este activada la referencia a objetos. Cuando cargo el comando COOR, me hace un "reset" a las referencias objetos que tenga activadas.
Nada más.
Te pido mil disculpas por tardar tanto en contestar, lo siento de verdad. Tengo demasiados hobbies y uno no da al abasto!
Hasta pronto,
Marc
Hola SpeedCAd, ¿te miraste lo que te comenté que fallaba?
Muchas gracias,
Un saludo desde España!
Si vi lo que me haz puesto y te digo de antemano que ya es fácil de solucionar el problema, cambiar la justificación es fácil y hacer que el espacio del texto sea equivalente a la altura también, no te he dado la solución por que en este momento estoy de vacaciones, salí el 06 de enero y llego al trabajo el 27 de enero, es decir, el lunes, en cuanto llegue al trabajo te mando la rutina modificada y ya creo que finalizada...
Espero que me entiendas porque no te conteste, pero debes estar tranquilo que la rutina te llegara al lunes... solo esperar un poco...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas