Felicitaciones, estamos pasando a una nueva etapa en nuestro aprendizaje de AutoLisp, ¿quieres saber qué es una “Lista”? y ¿porque es importante una lista en AutoLisp?, te lo explico.

Una lista es una denominación para una línea de código o múltiples líneas de código, igual a las que ya hemos visto hasta el momento, ¿recuerdas que te hablé sobre los paréntesis de apertura y de cierre?, si, una lista es un conjunto de “n” elementos encerrados entre paréntesis que constituyen el límite de acción de los programas, por ejemplo, una coordenada.

Esta coordenada (10 10 0) es un buen ejemplo de una lista, eso quiere decir que la función getpoint que solicita que se indique un punto en pantalla y devuelve la coordenada de ese punto, en realidad esta devolviendo una lista.

Vamos a seguir enfocándonos en las coordenadas porque mayormente las listas que mas se acceden son relacionadas a ellas y a las listas de las bases de datos de la entidades.

Basta de teoría y ¿qué te parece si vamos a la práctica?, digita en la línea de comandos de AutoCAD la siguiente línea de código:

(setq pbase (getpoint "\Indica un punto: "))

¿Puedes observar el valor que obtuvo getpoint y que se almacenó en la variable pbase?, en mi caso fue éste: (5.655 3.821 0.0).

Puedo asegurar que el valor que te devolvió fue parecido, se trata de una coordenada, en AutoLisp es una Lista ¿y ahora? ¿qué hacemos con esta coordenada? o ¿para qué nos sirve?, en realidad es de mucha utilidad en varias tareas que realizamos con AutoLisp, pero como coordenada por si sola no es de mucha utilidad a no ser que eso sea lo que se necesite, pero siempre vamos a necesitar “separar” las coordenadas en X, Y y Z para hacer operaciones con ellas.

Por ejemplo, de la coordenada anterior que obtuvimos (5.655 3.821 0.0), vamos a extraer sus componentes, empezamos por la coordenada X, para ello digita lo siguiente en la línea de comandos de AutoCAD:

(car '(5.65 3.82 0.00))

¿Observaste lo que devolvió la función CAR?, devolvió el número 5.65 verdad?, eso quiere decir que de la lista (coordenada) se ha obtenido sólo el valor X.

Ahora harás lo mismo para la coordenada Y, digita lo siguiente en la línea de comandos de AutoCAD:

(cadr '(5.65 3.82 0.00))

¿Y ahora qué valor devolvió la función CADR?, devolvió el número 3.82, eso quiere decir que de la lista (coordenada) se ha obtenido sólo el valor Y. ¿Y ahora? ¿Qué hacemos con esos valores?, la respuesta es: vamos a realizar operaciones con ellos y construiremos una nueva lista (coordenada), veremos:

Para construir una nueva lista usaremos la función LIST, que te permite construir listas con pares ordenados con «n» elementos, por lo pronto, necesitamos construir una con sólo 3 elementos (coordenada x,y,z).

Para construir una lista también podemos usar el apostrofe (‘) tal y como lo hemos hecho en las líneas de código anteriores, pero en este caso usaremos la función LIST.

Ahora escribe lo siguiente en la línea de comandos:

(setq NuevaCoordenada (list (+ 5.65 10)(+ 3.82 5) 0.00))

El valor devuelto fue el siguiente (15.65 8.82 0.0), ¿cómo devolvió este valor?, analizamos el código:

Los operadores matemáticos (+,,/,*) en AutoLisp también son funciones, en el código anterior estamos efectuando sumas y como podrás ver, en AutoLisp los operadores como funciones que son, siempre van a la izquierda de los valores a operar, al valor 5.65 le hemos sumado 10 y al valor 3.82 le hemos sumado 5, al valor 0 lo hemos dejado como estaba.

La función LIST, construye una lista con los valores resultantes, de esta manera:

(list 15.65 8.82 0.00)

La nueva lista construida (15.65 8.82 0.0) se almacena en la variable “NuevaCoordenada” con ayuda de la función setq.

Funciones que se han visto en este tema:

  1. setq
  2. getpoint
  3. car
  4. cadr
  5. list
  6. +

En el tema a continuación, escribiremos algunas rutinas de ejemplo para ver como las listas y la construcción de nuevas de ellas nos ayudan con el desarrollo de nuevos comandos, ¿estás preparado?, ahí vamos.

Si deseas compartir algún detalle, lo comentas.