Programando en AutoLISP Rutina de Flecha Con Coordenadas

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 5

PROGRAMACiN

AUTOCAD

PROGRAMANDO EN AUTOLISP

RUTiNA DE FlECHA CON COORDENADAs (PARTE FiNAl)


En el presente artculo finalizaremos la rutina para crear una flecha con la coordenada del punto inicial como texto al final de esta. En este artculo seguiremos analizando algunas funciones que previamente hemos analizado, como SETQ, la cual nos sirve para definir variables. Tambin analizaremos las siguientes funciones: Convertir un nmero real en una cadena de textos. Concatenar cadenas de caracteres Dibujar vectores en la pantalla Ejecutar comandos de AutoCAD desde la programacin en AutoLISP

Continuemos con la definicin de la rutina. Veamos el cdigo parcial que generamos en el artculo anterior:
(defun C:COORD () (setvar cmdecho 0) (setq PUNTOCOORD (getpoint \nSelecione Punto: )) (setq COORDX (car PUNTOCOORD)) (setq COORDY (cadr PUNTOCOORD)) )

Si nos acompaas por primera vez, puedes realizar el ejercicio partiendo del cdigo anterior. Puedes encontrar el tutorial de dicho cdigo en los artculos anteriores, bajo la seccin Recursos de la Comunidad Latinoamericana de Usuarios de Autodesk en Espaol. Continuacin del cdigo de la Rutina Anteriormente habamos definido algunas variables que nos permiten almacenar los valores X y Y de la coordenada de un punto seleccionado. Estos valores se almacenan en las variables COORDX y COORDY. Sin embargo, es necesario que sigamos definiendo algunas variables que nos permitirn complementar la rutina. La primera de estas almacenar el texto completo de la coordenada que se colocar junto a la flecha que crearemos. Para ello usaremos el siguiente cdigo:
(setq COORDENADA (strcat (rtos COORDX 2 3),(rtos COORDY 2 3)))

Aqu tenemos una serie de funciones anidadas. Explicaremos las funciones desde adentro hacia afuera.

PROGRAMACiN
La funcin RTOS nos permite convertir un nmero real en una cadena de caracteres o string. En este caso tenemos la variable COORDX que contiene un nmero real que representa a la coordenada en X del punto seleccionado anteriormente. A fin de poder utilizar este nmero como texto, es necesario convertirlo de nmero real a string. El nmero que sigue a la variable representa el tipo de valor que usaremos en la conversin, en este caso el nmero 2 representa un valor decimal. El ltimo nmero representa la precisin de la conversin. En este caso el nmero 3 indica que usaremos nicamente tres dgitos despus del punto decimal. La siguiente funcin es STRCAT. Esta funcin concatena distintas valores en una nica cadena de texto. En este caso estamos concatenando el valor de la coordenada X, estamos colocando de forma manual una coma (Al poner cualquier caracter o leyenda encerrada en comillas, el sistema lo interpreta de forma literal) y por ltimo, colocamos el valor de la coordenada Y. El resultado es algo como lo siguiente: (Los nmeros son nicamente representativos) 12.345,67.890 Por ltimo, estamos almacenando este resultado en la variable COORDENADA mediante la funcin SETQ que hemos analizado anteriormente. Posteriormente usaremos esta variable para colocar el texto en la flecha. Capturar los puntos adicionales de la flecha El siguiente paso consiste en capturar los puntos adicionales que necesitamos para dar forma a la flecha que deseamos formar. Estos los capturaremos del mismo modo como definimos el punto inicial, como se puede ver a continuacin.
(defun C:COORD () (setvar cmdecho 0) (setq PUNTOCOORD (getpoint \nSeleccione Punto: )) (setq COORDX (car PUNTOCOORD)) (setq COORDY (cadr PUNTOCOORD)) (setq COORDENADA (strcat (rtos COORDX 2 3), (rtos COORDY 2 3))) (setq PUNTO2 (getpoint \nSeleccione Punto: )) (grdraw PUNTOCOORD PUNTO2 1 1) (setq PUNTO3 (getpoint \nSeleccione Punto: )) (grdraw PUNTO2 PUNTO3 1 1)

AUTOCAD

Mediante la funcin GETPOINT que analizamos en el artculo anterior capturamos en variables (PUNTO2 y PUNTO3) los dos puntos restantes que darn forma a nuestra flecha o leader. Sin embargo, en este caso adems estaremos dibujando un vector entre los puntos especificados, de forma que veamos en la pantalla una vista previa del resultado final.

PROGRAMACiN
Esto lo hacemos mediante la funcin GRDRAW. Esta dibuja vectores virtuales en la pantalla entre dos puntos especificados. Esto nos permiten dar seguimiento a un trazo que estamos haciendo mediante puntos. Si bien, esta funcin no es indispensable para nuestra rutina, s nos aporta una vista previa de lo que estamos haciendo en el grfico. Para usar esta funcin debemos de especificar el punto de origen del vector, seguido del punto final. El nmero siguiente representa el color del vector (en este caso 1, Rojo) y el ltimo nmero representa el tipo de presentacin visual que tendr el vector en la pantalla (en este caso 1, Dashed) La funcin se repite con el PUNTO3. Primero especificamos la variable que almacenar el punto seleccionado y posteriormente creamos el vector desde el PUNTO2 hasta el PUNTO3. Ejecutar un comando de AutoCAD mediante AutoLISP Ha llegado el momento de utilizar todas las variables que hemos definido mediante comandos nativos de AutoCAD que llamaremos a travs de las programacin. Esto es bastante sencillo y se realiza del mismo modo como lo haramos desde AutoCAD. Veamos el cdigo a continuacin:
(defun C:COORD () (setvar cmdecho 0) (setq PUNTOCOORD (getpoint \nSeleccione Punto: )) (setq COORDX (car PUNTOCOORD)) (setq COORDY (cadr PUNTOCOORD)) (setq COORDENADA (strcat (rtos COORDX 2 3), (rtos COORDY 2 3))) (setq PUNTO2 (getpoint \nSeleccione Punto: )) (grdraw PUNTOCOORD PUNTO2 1 1) (setq PUNTO3 (getpoint \nSeleccione Punto: )) (grdraw PUNTO2 PUNTO3 1 1) (command leader PUNTOCOORD PUNTO2 PUNTO3 COORDENADA ) (command redraw)

AUTOCAD

Para llamar un comando de AutoCAD desde AutoLISP debemos de usar la funcin COMMAND y escribir el comando deseado entre comillas. En este caso estamos usando dos comandos: LEADER y REDRAW El comando LEADER nos permite crear una flecha en el dibujo al proporcionar tres puntos en la pantalla. Adems, coloca un texto en el punto final de la flecha. Nosotros queremos que se cree la flecha mediante los puntos que previamente definimos y que el texto especificado sea la coordenada del primer punto, que equivaldra a la cabeza de la flecha.

PROGRAMACiN
En este caso, justo despus de especificar que usaremos el comando LEADER colocamos las variables que contienen los puntos que previamente definimos, en el orden adecuado, es decir, primero PUNTOCOORD, luego PUNTO2 y por ltimo PUNTO3. Ahora podemos notar en el cdigo que hemos especificado dos comillas seguidas despus de la ltima variable. Esto, bajo la funcin COMMAND equivale a presionar la tecla ENTER. Al enviar esta instruccin, le indicamos al sistema que no especifique un width o espesor al texto que estamos a punto de definir. (En otros artculos podremos ver cmo complementar aun mas esta rutina) Una vez que le hemos indicado al comando LEADER con qu puntos construir la flecha, habr que especificar el texto que deseamos colocar en la cola de la misma. Para ello estamos usando la variable COORDENADA, la cual previamente definimos y contiene el texto concatenado de la coordenada del punto especificado. Por ltimo, cerramos con otro ENTER para indicar al comando que hemos terminado. El otro comando que estamos usando es REDRAW, el cual es mucho mas sencillo, ya que no requiere ninguna opcin de parte del usuario. Este comando lo usamos nicamente para refrescar la pantalla grfica y eliminar los vectores que creamos en esta. Como para estas alturas ya estar dibujada nuestra flecha, no sern necesarios estos vectores. Resultado Final Por ltimo, no nos olvidemos de cerrar el parntesis final que finaliza la funcin DEFUN, que fu con la que iniciamos la programacin. Habr que guardar el archivo y cargarlo desde AutoCAD para probarlo. Al teclear en la lnea de comandos el comando COORD que hemos definido, el sistema nos pedir que especifiquemos los tres puntos que conforman nuestra flecha, y al especificar el tercero veremos cmo se crea de forma automtica una flecha con las coordenadas del primer punto.

AUTOCAD

Esto permitir el especificar las coordenadas de distintos puntos con suma rapidez y con total precisin, ahorrando el trabajo manual de tener que escribir cada coordenada a mano, con los errores que eso conlleva.

PROGRAMACiN
Nuestra rutina est terminada y es funcional. Sin embargo, hay muchas mejoras que podemos hacer, como especificar el nivel de precisin de las coordenadas, el tamao del texto, el color de la flecha, entre otros. Esto lo iremos viendo en el futuro de forma gradual. Por el momento, te invito a que utilices las funciones que analizamos a lo largo de este tutorial en tus propias rutinas. No pierdes nada arriesgndote y experimentando, probando distintos valores y creando tus propios comandos en AutoCAD. Con toda confianza pueden enviar sus dudas o comentarios a natanvg@gmail.com __ Natn Villarreal Colaborador de la Comunidad Latinoamericana de Usuarios de Autodesk en Espaol.

AUTOCAD

Resumen Nombre del comando: COORD Codigo de la rutina:


(defun C:COORD () (setvar cmdecho 0) (setq PUNTOCOORD (getpoint \nSeleccione Punto: )) (setq COORDX (car PUNTOCOORD)) (setq COORDY (cadr PUNTOCOORD)) (setq COORDENADA (strcat (rtos COORDX 2 3), (rtos COORDY 2 3))) (setq PUNTO2 (getpoint \nSeleccione Punto: )) (grdraw PUNTOCOORD PUNTO2 1 1) (setq PUNTO3 (getpoint \nSeleccione Punto: )) (grdraw PUNTO2 PUNTO3 1 1) (command leader PUNTOCOORD PUNTO2 PUNTO3 COORDENADA ) (command redraw) (princ) )

Funciones de AutoLISP usadas: DEFUN, SETVAR, SETQ, GETPOINT, CAR, CADR, STRCAT, RTOS, GRDRAW, COMMAND, PRINC

También podría gustarte