miércoles, 23 de mayo de 2012

PERSONALIZAR el AutoCAD ( y VII )


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.


No hay comentarios:

Publicar un comentario