Programación.
En todos los grandes programas o aplicaciones, suele
haber además de las instrucciones y ordenes que ejecuta normalmente el propio
programa, la alternativa de “programar” rutinas o acciones, que inicialmente no
se han contemplado, pero que algún usuario concreto con conocimientos de
programación, puede estar interesado en realizar o adaptar.
Cuando hablamos de entornos de programación, hay que
distinguir lo que normalmente se conoce como lenguajes de “macros”, que si bien
permiten un cierto nivel de programación, normalmente se limitan a almacenar una
secuencia fija de órdenes o comandos ya existentes en el propio programa, para
ser ejecutados en una secuencia única, incluso con la incorporación de datos
fijos o variables.
En estos últimos casos el proceso interno a nivel de
código de programa, que se va ejecutando en la CPU, es la propia secuencia de instrucciones del
programa principal, y la rutina tampoco se sale de los límites que tenga
asignados dentro del SO (sistema operativo). Cuando se habla de “entorno de
programación”, las rutinas que se desarrollan son externas al programa
principal y se ejecutan en la CPU
del ordenador como procesos diferenciados e independientes, necesitando un
control propio desde el SO.
En este aspecto el entorno de programación ha
evolucionado considerablemente desde las primeras versiones del programa que se
ejecutaban bajo DOS, el cual no disponía de multitarea ni de multiusuario.
Después con la evolución desde W95 este panorama ha cambiado y a su vez se ha
desarrollado notablemente la programación orientada a objetos, ya sea en C++ o
java. También la disponibilidad de Internet y la paulatina implantación del
XML, contribuyen a desdibujar o desbordar los límites tradicionales de CPU-SO-Aplicación.
Las alternativas para desarrollar algún tipo de
programación dentro de AutoCAD, en la actualidad es múltiple, y el hecho de
optar entre una u otra, depende sobre todo de las destrezas o preferencias de
cada programador. En las versiones iniciales solo se disponía de LISP, el cual
es un lenguaje de alto nivel, basado en el manejo recurrente de “listas”, que
al menos en los primeros tiempos, estaba muy asociado con desarrollos de
Inteligencia Artificial. Este lenguaje siempre estuvo muy vinculado con
AutoCAD, probablemente por las preferencias de los desarrolladores iniciales,
pero también porque su peculiar filosofía permite un manejo bastante flexible,
de los distintos datos o entidades que soportan la geometría que maneja el
programa.
El lenguaje
LISP.
El LISP es un lenguaje “interpretado” que se procesa
en tiempo real en la línea de órdenes de AutoCAD. Esto supone que sobre la
propia línea se puede escribir cualquier instrucción o código de ese lenguaje,
siendo inmediatamente procesada en cuanto se pulsa la tecla “intro”.
Alternativamente se puede escribir cualquier programa, bajo las
especificaciones correspondientes, en un archivo de texto ASCII plano con la extensión
“.LSP”, y ser leído desde el propio AutoCAD ejecutando y procesando su
contenido de forma inmediata.
El lenguaje LISP se basa en un manejo recursivo de funciones
y listas que siempre se escriben entre paréntesis. La “lista” es el objeto
básico del lenguaje, ya que cualquier función se escribe como una “lista” de
palabras o datos encerrados entre paréntesis. Los elementos de la lista pueden
ser: cualquier palabra separada por espacios, un número, una cadena de texto
entre comillas, o bien otra lista encerrada a su vez entre paréntesis.
Si se trata de una palabra aislada en principio se
interpreta como el nombre de una variable reservando el espacio de memoria
oportuno. Si es un número se interpreta con arreglo a su valor numérico, que puede
ser entero o real dependiendo de la presencia del punto decimal. El lenguaje
admite mezclar operaciones entre enteros y reales, subiendo siempre la
categoría al dato más complejo. Si se trata de una cadena entre comillas se
considera como tal.
Dentro de los paréntesis se escribe siempre una
sucesión de palabras o términos, de las que la primera tiene que ser
necesariamente el nombre de la “función” reconocida por el propio lenguaje
LISP, y el resto de términos son tratados como argumentos de la misma. Además
de esto, cualquier palabra o término que se incluye en la lista puede ser a su
vez otra función encerrada entre paréntesis, de tal forma que el conjunto del
programa siempre queda organizado como una estructura anidada de “funciones”
escritas entre paréntesis.
La ejecución del programa siempre requiere haber
cargado en la memoria RAM, todo el paquete de funciones anidadas y a
continuación se comienza por evaluar en primer lugar la más interna, y con el
resultado se sustituye en la lista que la contenía, pasando entonces a evaluar
esa nueva función, y así sucesivamente hasta concluir con la mas externa cuyo
resultado se muestra en la línea de órdenes.
Naturalmente el repertorio de funciones disponible en
el lenguaje, permite definir y crear nuevas funciones, acceder a los archivos
del disco, a las variables de memoria, calcular expresiones numéricas, y
realizar diferentes tipos de operaciones con los datos almacenados en las
variables etc. La capacidad para programar en este lenguaje lógicamente se
deriva de mantener un conocimiento amplio y general de ese repertorio de
funciones y de las posibilidades de uso que permiten.
La Ayuda del programa dispone de una parte
dedicada al LISP que incluye una descripción pormenorizada y sistemática de
todas las funciones incluidas. También dispone de un “tutorial”, en el que se
desarrolla un ejemplo interesante, que sirve para generar una orden o comando nuevo,
que dibuja de forma automática, una banda de longitud y ancho variables,
rellena con círculos de cualquier tamaño. Este ejemplo resulta interesante
porque permite comprobar de una forma práctica las posibilidades y el alcance
del lenguaje, además de mostrar las peculiaridades del manejo de “listas” y el
uso de las funciones más comunes.
En las últimas versiones del programa, se incluye
también el entorno “Visual LISP”, aunque esto en el fondo no es mas que un
pequeño sistema de ventanas múltiples que incluye un pequeño editor para
facilitar la escritura de código LISP, y además va marcando con colores las
palabras reservadas, las variables, se identifica la presencia o falta de
paréntesis permitiendo localizar y depurar los errores del código con mayor
facilidad. En este caso también se puede compilar el código.
Otras
alternativas
Además del lenguaje LISP, las versiones recientes de
AutoCAD, permiten desarrollar rutinas de programación en otros sistemas,
lenguajes o entornos de programación como:
VBA
(Visual BASIC)
ActiveX
Objet
ARX
.NET
En todos los casos se usa el paradigma de la
“programación orientada a objetos”, y el desarrollo de en estos entornos
requiere siempre un conocimiento avanzado de cada uno, y por supuesto conocimientos especializados
de programación. Dentro de esos entornos, particularmente .NET y Objet ARX, se
encuentra la posibilidad de desarrollo mediante lenguajes de programación como C, C++, C#,
etc.
Formas y
Tipos de letra.
Las formas son un tipo de objeto cuyo uso es similar
a los bloques, aunque presenta ciertas peculiaridades. Una de las ventajas
principales es que el manejo de memoria, y la carga del procesador es mucho mas
eficiente, por lo que cuando se emplean muchos elementos del modelo puede
resultar mas ligero, aunque con el nivel de prestaciones de las máquinas
actuales es difícil que pueda llegar a apreciarse la diferencia.
Como inconveniente para el uso de las formas cabe
decir que el diseño o dibujo, que va a componer la forma, no puede realizarse
directamente en la ventana gráfica, sino que las formas gráficas del dibujo
deben traducirse a una “codificación” muy peculiar y luego escribirse en un
archivo de texto ASCII, con la extensión SHP, que posteriormente el programa
“codifica”, generando un nuevo archivo con extensión SHX, cuyo contenido
binario es el que finalmente se maneja.
Uno de los principales usos de las “formas”
codificadas son precisamente los “tipos” de letra originales de AutoCAD, que
incluso en las primeras versiones se suministraban con las dos clases de
archivo, aunque últimamente solo con el codificado SHX. En las versiones
actuales del programa también se admiten las tipografías TrueType, pero en este
caso no tienen nada que ver con lo que comentamos.
En general el uso adecuado para las “formas” deberían
ser elementos gráficos o símbolos relativamente sencillos, con una
representación fija que no requiera modificaciones frecuentes, y que se repita
mucho, como pueden ser obviamente las forma de tipografía, pero también
repertorios de símbolos, para mapas o cartografía, esquemas de instalaciones,
notas musicales etc.
Para considerar la posibilidad de crear un repertorio
personal de “formas” hay que tener en cuenta que la codificación de un dibujo
complejo podría resultar demasiado laboriosa y proporcionalmente sujeta a
errores.
En el manual de ayuda, se desarrolla con detalle el
sistema de codificación gráfica de las formas, y se incluyen algunos ejemplos
que ilustran perfectamente este sistema, e incluso se incluyen un par de
archivos con la definición de una tipografía completa.