Como ya hemos visto, AutoLISP es un lenguaje de programación
diseñado para implementar y personalizar la funcionalidad de AutoCAD. AutoLISP nos
permite automatizar muchos de los procesos y rutinas habituales de nuestros
dibujos.
En las primeras versiones de AutoCAD, escribir código AutoLISP
precisaba, además del programa AutoCAD, de un procesador de textos
independiente. El código se escribía en el procesador como texto sin formato, lo que requería de bastante atención, debido a
la dificultad de compaginar las aperturas y cierres de paréntesis de las listas
que forman los programas. Un paréntesis de menos, o un olvido en el cierre de
unas comillas producía invariablemente el fracaso de la función. Depurar el
código exigía bastante tiempo y con frecuencia había que añadir al programa
declaraciones para imprimir los contenidos de variables en puntos estratégicos
y comprobar sus resultados.
El proceso se ha simplificado enormemente, y hoy AutoCAD
incluye un editor de Visual LISP con
todas las herramientas para simplificar el trabajo. El editor de Visual LISP
incluye corrector de sintaxis, compilador de archivo, depurador de fuente,
editor de texto, formateador de AutoLISP, inspección y
revisión del contenido de las variables del programa, ayuda
sensible al contexto y un sistema de administración del proyecto. De todo esto
hablaremos más adelante, pero antes es necesario familiarizarse con AutoLISP.
¿Cómo
trabaja AutoLISP?
Los programas de AutoLISP están formados por listas. Las
listas son secuencias de elementos mostrados entre paréntesis y separadas por
espacios.
Un ejemplo de una lista de AutoLISP puede ser: (3.00 7.53
2.34)
En el ejemplo precedente los elementos de la lista son
números reales, pero veremos que las listas pueden estar formadas por cualquier
clase de símbolos válidos para AutoCAD.
Cuando se teclea una secuencia en la línea de comandos de
AutoCAD, y la secuencia comienza con un paréntesis abierto, AutoCAD asume que
lo que sigue es una expresión de AutoLISP y lo envía al intérprete para su
evaluación. El evaluador evalúa la función, la ejecuta y devuelve un valor de retorno. Cuando el valor de retorno es nada, esto es, ningún valor, AutoLISP devuelve nil.
Símbolos de AutoLISP
Los símbolos son los componentes básicos de AutoLISP. Los
símbolos o átomos son los componentes fundamentales de las listas que a su vez
forman los programas y funciones. Los símbolos pueden ser números enteros,
números reales (de coma flotante), cadenas, listas, descriptores de archivos, conjuntos
designados o de selección, nombres de entidades, subrutinas y tablas de paginación.
Los símbolos constan de dos partes: el nombre propiamente
dicho, normalmente una palabra, y el valor ligado al símbolo. Por decirlo así, el símbolo es el continente y el valor el contenido.Un símbolo puede estar ligado o bien a un valor o bien a
una función.
En AutoCAD, para ver el valor asignado a un símbolo
de AutoLISP se usa el signo de cierre de exclamación. Si el intérprete de órdenes
encuentra un signo de cierre de exclamación, seguido inmediatamente de un símbolo,
buscará para ver si ese símbolo ha sido definido anteriormente, y si lo encuentra
mostrará en una nueva línea de pantalla el valor que le ha sido asignado.
Si la variable var1 está asociada a la cadena “mibloque”,
cuando escriba en la línea de comandos var1, AutoLISP respondera "mibloque":
Comando: !var1
“mibloque”
Al escribir esa secuencia he asumido que se pulsa la
tecla retorno de carro o espacio después de escribir var1.
El signo de cierre de exclamación sirve para indicarle al programa
que la palabra introducida no se trata de una orden o comando de AutoCAD.
AutoLISP permite cualquier combinación de caracteres para
los nombres de símbolo, excepto los paréntesis, el punto, las comillas y el
punto y coma, que como veremos están reservados para la grafía de las propias
rutinas de AutoLISP.
Para economizar memoria es preferible usar símbolos
cortos, preferiblemente de menos de seis caracteres. Por el contrario, a veces los
símbolos cortos pueden resultar más confusos a la hora de leer el programa. Si
los símbolos tienen un significado para nosotros nos recordarán al leerlos el valor asociado.
Si en el ejemplo anterior, en vez de usar el nombre var1 ligado a la cadena “mibloque”
utilizásemos nomblk, es posible que al leerlo nos diésemos cuenta de que el
contenido de la variable es un nombre de bloque de AutoCAD.
Valor ligado a un símbolo
El valor variable ligado a un símbolo puede estar definido global o localmente.
Las variables globales conservan su valor después de que finalice el programa que las ha definido. Esto puede ser deseable cuando se necesita acceder a posteriori a su valor o se pretenda reflejar un determinado estado, pero en ocasiones no es necesario y su utilización ocupa espacio en la memoria sin obtener ningún beneficio.
Las variables locales solo conservan su valor mientras se ejecuta la función que las ha definido. Cuando la función termina de ejecutarse, los valores de la variable local se desechan automáticamente, y el sistema vuelve a tener a su disposición la memoria que utilizaba la variable. Esto se conoce como recuperación automática de la memoria no usada. Las variables locales utilizan la memoria con más eficacia que las globales.
Otra ventaja de las variables locales es que facilitan la depuración y el mantenimiento de las aplicaciones. Con la variables globales es más difícil predecir en qué función se pueden modificar, sus efectos permanecen y pueden afectar a otras partes del programa.
No hay comentarios:
Publicar un comentario