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 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 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.

 

PERSONALIZAR el AutoCAD ( VI )

Modemacro y DIESEL.

Dentro de la personalización de AutoCAD existe la posibilidad de añadir información personalizada en la “Línea de Estado”.

Recordando uno de los primeros temas del blog, la línea de estado es aquella que se muestra en el borde inferior de la pantalla, y en su configuración incluye de izquierda a derecha, las coordenadas de posición del cursor, ya sea con actualización dinámica según el movimiento del cursor, o estática cada vez que señalamos un punto en el área gráfica de la pantalla. A continuación un conjunto de pulsadores que controlan distintos estados de funcionamiento, como los modos “orto”, “snap”, “refent”, “grid”, etc., y en el lado derecho se incluyen otros tipos de pulsadores con una lista desplegable al final, con el control sobre la posibilidad de mostrar/ocultar estos conjuntos.

Mediante el mecanismo de una variable interna identificada como “MODEMACRO” se puede añadir información personalizada, que se sitúa en el extremo izquierdo de esta línea. La variable se puede invocar desde la línea de estado, y a continuación escribir un texto. El tamaño máximo es de 4.096 caracteres, aunque obviamente se desbordaría mucho antes el tamaño máximo de la pantalla, desplazando fuera los pulsadores y paneles que se muestran normalmente y cuya configuración junto con el tamaño y resolución de la pantalla son los que en la práctica limita el tamaño máximo del texto.

Dentro de esa nueva línea podemos mostrar por ejemplo nuestro nombre, o el de la empresa aunque esa sea una información poco útil. Para ello solo habría que escribir en la línea de órdenes:

MODEMACRO:  Julio AR

A partir de ese momento veremos que el nombre “Julio AR” se muestra siempre al comienzo de la línea de estado, bien hasta que volvamos a modificar la variable, o hasta que cerremos la sesión, ya que el contenido de la variable es volátil y no se guarda en el archivo de dibujo.

Lógicamente esa información “fija” es poco relevante, pero el programa dispone a su vez de un lenguaje de macros conocido como “DIESEL”, que permite ampliar esa información de una manera mucho más útil, como puede ser el nombre de la capa actual, del color, del tipo de línea, del estilo de texto o de la acotación, y en general cualquier valor contenido en alguna variable interna del programa.

El lenguaje de macros “DIESEL” se explica en la ayuda, y básicamente permite escribir expresiones basadas en el repertorio de funciones que se enumeran, las cuales tienen un formato similar al LISP aunque precedidas por el símbolo “dólar”, de la siguiente forma.

$( funcion, variable1, variable2, .. )

Una función interesante para este uso es “ $(getvar, variable) “ que es la que permite consultar en cada momento el contenido de las variables del programa, en particular para mostrar el color actual, tipo de línea, estilo etc.

Concretamente vamos a ampliar la información de la línea de estado, incluyendo el color, la escala de tipo de línea y el estilo de texto actuales. Esa infamación si consultamos las variables del sistema a través de la ayuda correspondiente, se encuentra en las variables: “CECOLOR”, “LTSCALE”, y “TEXTSTYLE”.

Por tanto tendremos que escribir un valor para “modemacro” que incluya el texto de referencia y en su lugar las llamadas a las funciones capaces de mostrar sobre esa línea de texto, los valores correspondientes. Esto sería algo así como:

MODEMACRO: Color Actl: $(getvar, cecolor) – Estilo Texto: $(getvar, textstyle) – Escala de tipo de Línea: $(getvar, ltscale)

Evidentemente esta configuración se pierde cuando cerramos el programa, pero nada impide escribir esa macro en alguna opción particular de menú personalizada mediante la interfaz CUI que habíamos comentado en las entradas anteriores.

Fotos y Archivos de Comando.

En el momento actual, el problema de realizar “presentaciones” sobre cualquier contenido, ya sea de “AutoCAD” o de otros programas, ha cambiado notablemente con respecto a las primeras versiones, que ya disponía de una difusión universal y generalizada desde mediados de los años 80s, cuando el uso de programas como “Power Point” o los formatos PDF resultaban inimaginables.

En aquellas primeras versiones, el programa disponía de un sistema propio, que lógicamente se ha mantenido por compatibilidad hacia atrás,  y que en la actualidad se encuentra en desuso. El sistema propio se basa en la posibilidad de “capturar” imágenes asiladas, exclusivamente del área gráfica de la pantalla, y posteriormente poder mostrarlas mediante una secuencia escrita en un archivo de comandos, que el propio programa puede ir mostrando paulatinamente con retardos programados, de una forma completamente “desatendida” lo cual podría resultar útil en ciertos entornos como ferias o exposiciones.

Esa secuencia de “imágenes” previamente guardadas en archivos independientes se muestran en la pantalla gráfica superpuestos a la imagen actual, pero cualquier acción sobre el teclado, ratón, o menús o la ejecución de otro comando, hacen que la pantalla se actualice y por tanto se pierde la imagen mostrada.

Las imágenes o capturas se denominan “slides” y el programa dispone de un par de comandos, que sirven para realizar o mostrar la captura de esa imagen gráfica. Estas son “SACAFOTO(_MSLIDE)” y “MIRAFOTO(_VSLIDE)”. Estas órdenes se pueden ejecutar desde línea de órdenes, de forma que en el primer caso nos pedirá una carpeta o dirección para situar el nuevo archivo, y en el segundo el nombre del archivo que se quiere mostrar.

El archivo de comandos no es más que un archivo de texto plano (formato ASCII puro), con la extensión “*.SCR” (script) en el que se va escribiendo cada comando en una línea diferente. El archivo puede contener cualquier comando salvo aquellos que despliegan un cuadro de diálogo, aunque normalmente estos suelen disponer de versiones alternativas sin el cuadro de diálogo.

Existe además algún comando como “RETARDA(_DELAY)”, que resulta bastante útil en este tipo de archivos ya que provoca un retardo en milisegundos igual a la cifra que se incluya, hasta que se procesa el siguiente comando de la lista. A continuación se muestra como ejemplo, un fragmento de un archivo que muestra las imágenes empaquetadas en t61(b100) .. b101) .. b102) con retardos de 1 segundo.

_vslide t61(b100)
_delay 1000
_vslide t61(b101)
_delay 1000
_vslide t61(b102)
_delay 1000

 

PERSONALIZAR el AutoCAD ( V )

En la entrada anterior se describe la forma de modificar o personalizar la “interfaz” de AutoCAD. Aunque comentado todo ello en abstracto, todo el mundo reconoce el interés de ese tipo de modificaciones, dado que siempre resultan complejas y generan una cierta inseguridad en cualquiera que no disponga de una cierta soltura de manejo, también existe una tendencia natural a considerar este tipo de aspectos como algo “lejano”, que solo es útil para “especialistas” que se dedican profesionalmente a esos desarrollos.

Con el fin de romper en la medida de lo posible, esa suposición inicial, voy a tratar de desarrollar un ejemplo práctico, construyendo una pequeña personalización sobre AutoCAD que pueda resultar útil a modo de ejemplo.

Voy a centrarme en la elaboración de un pequeño “menú desplegable” para insertar de forma rápida, un repertorio de “aparatos sanitarios”, ya que esta es una tarea relativamente común en la elaboración de una planta de arquitectura, y aunque tampoco resuelva grandes problemas, si puede servir de muestra sobre una forma de abordar “la personalización” para acceder a un repertorio de bloques que se insertan con frecuencia en diferentes archivos de dibujo.

Los bloques.

En primer lugar es preciso recopilar el conjunto de bloques que queremos agrupar en el nuevo menú. Este puede ser más o menos amplio, pero es conveniente agruparlo en alguna carpeta del disco, donde se puedan localizar con facilidad, y que probablemente con el tiempo vayamos modificando y/o adaptando a nuestro gusto particular. En primer lugar el repertorio va a ser bastante escueto para no extender el ejemplo, y se compone de un lavabo, bidet, inodoro, una ducha y una bañera, que una vez seleccionados, dibujados o elaborados, debemos colocar como dibujos independientes en una carpeta de nuestro disco, por ejemplo “[BLQS]”.

El nombre de los bloques es indiferente, ya que cada vez que vayamos a insertar un determinado bloque, el nombre del archivo estará escrito dentro de la “macro” o comando que automatiza esa tarea, y nosotros solo debemos “recordar” la ubicación del menú y nombre de etiqueta que hemos colocado en él, pudiendo incluso asociarle una pequeña imagen o gráfico a modo de “icono” con un tamaño de 32×32 pixel. Lo que si es importante es que el “path” o trayectoria de la carpeta donde están los bloques, se encuentre dentro la “Ruta de búsqueda de archivos de soporte” que si no estaba incluida se puede añadir con facilidad  en cuadro “opciones”, solapa “archivos”.

El nuevo Menú.

Una vez que tenemos recopilados nuestros bloques en la carpeta, sin olvidar ajustar el “punto base” de cada uno, sobre un punto singular que después resulta fácil de situar en el archivo de trabajo, cuando vayamos a insertar cada bloque. Para desarrollar el ejemplo vamos a situar un nuevo menú desplegable que llamaremos “Aparatos Snt.”, y a su vez cuando se despliegue va a contener, los bloques mencionados con arreglo al siguiente esquema:

Aparatos Sntrs.

                           Lavabo
                           Bidet
                           Inodoro
                           Ducha
                           Bañera

Si recordamos el funcionamiento del cuadro de personalización, los pasos a seguir, son en primer lugar definir un nuevo comando para poder insertar cada uno de los bloques. Después de haber definido los cinco comandos, debemos crear o definir el nuevo menú desplegable, dentro del cual vamos a colocar los comandos. Una vez hecho esto debemos guardar el nuevo menú como un archivo “CUIx” independiente, para poder modificar o ampliar en el futuro y finalmente tenemos que trasladar o insertar el menú que hemos creado dentro del general que utilizamos en nuestro espacio de trabajo.

Los nuevos comandos.

En este punto hay que advertir que posiblemente este sea el paso más crítico o delicado, ya que en la definición de un nuevo comando, es preciso ser muy cuidadoso con todos los caracteres que se escriben, ya que cada espacio en blanco se interpreta dentro del programa como una pulsación de la barra espaciadora o la tecla “intro”. Por otra parte es preciso identificar perfectamente todas y cada una de las respuestas opcionales que tiene el comando invocado, porque cualquier desajuste siempre genera respuestas imprevistas.

La definición de cualquier nuevo comando no es más que una cadena de texto, que se anotará de forma literal en el campo correspondiente, comenzando con el nombre de la “orden” que se quiere invocar, a continuación el espacio en blanco que inicia su ejecución, e inmediatamente las respuestas o textos que requiera cada una de las opciones de esa orden concreta.

Hay que tener en cuenta que tanto el espacio en blanco como el carácter “;” son equivalentes a una pulsación de la tecla “intro” o a la barra espaciadora. El carácter “”, genera una parada en la secuencia, que permite un respuesta del usuario ya sea señalando un punto de la pantalla, o bien escribiendo por teclado algún texto o dato que se cierra con una pulsación del “Intro”. Los datos fijos se pueden escribir dentro de la secuencia de pulsaciones de forma literal, aunque sin olvidar el comportamiento del espacio en blanco o encerrando la cadena entre comillas.

Hay que pensar que un solo espacio en blanco de más, al principio o al final de la secuencia, va a generar un “eco”, que trata de repetir la última orden ejecutada por el sistema, lanzando el mensaje correspondiente, y si las respuestas anotadas no se encuentran sincronizadas, el resultado final que se genera va a ser un “error”. Con el fin de probar y ensayar la nueva secuencia, es conveniente tratar de probarla mediante la línea de órdenes, contando y verificando las pulsaciones de una en una.

En el caso de nuestro ejemplo el nuevo comando que nos interesa se compone de una llamada a la orden “_INSERT”, y a continuación se añade el nombre del bloque que queremos insertar en el dibujo. Luego debemos programar una detención del comando para poder señalar en pantalla, el nuevo punto donde se situará exactamente el bloque que hayamos elegido. Una vez situado el punto de inserción, hay que tener en cuenta que la ejecución “paso a paso” del comando requiere otras tres respuestas, que son a su vez los factores de escala en las direcciones X e Y y el ángulo de giro para el nuevo bloque insertado.

En el caso que nos ocupa evidentemente los factores de escala en las direcciones X e Y deben ser “1”, por lo que en el comando será oportuno confirmar la opción por defecto o pulsar “Intro”, es decir escribir un “;”, sin embargo en el momento de fijar el ángulo de giro resulta oportuno devolver el control al usuario, para que el ángulo con que se inserta el bloque pueda fijarse gráficamente, es decir que debemos escribir en su lugar un “”. Esta entrada debería terminar la ejecución de la nueva orden por lo que le línea de texto debería tener el siguiente aspecto: 

_INSERT <bloque> ;;

El hecho de escribir el nombre de la orden en ingles precedida del subrayado de mayúsculas, se hace porque con esta notación, la orden funciona dentro de AutoCAD con independencia del idioma al que se haya traducido el programa, sin embargo si escribimos la versión “traducida”, solamente funcionara en aquellas versiones traducidas al idioma en cuestión.

Además de forzar la versión en ingles, del comando de base, es conveniente escribir al comienzo de la línea, dos veces la pulsación [Ctrl+C] con el fin de “romper” o anular cualquier posible orden transparente que pudiera estar en curso de ejecución en ese momento, lo que produciría un “error”. La forma de escribir por teclado esa pulsación es “^C”, con lo que el texto que debemos escribir en la macro quedaría:

^C^C_INSERT <bloque> ;;

Ensamblar el conjunto.

Una vez que está clara, la estructura del nuevo menú y como escribir cada comando, ya solo queda ensamblar el conjunto en un nuevo archivo personalizado.

Para ello abrimos el cuadro de la interfaz de personalización, nos situamos en la solapa “Transferir”, y desde el panel derecho, accionando la opción “nuevo” podemos crear un nuevo archivo con la extensión “*.CUIx” que situamos a nuestra conveniencia dentro de las carpetas del disco.

Posteriormente pasamos a la solapa “Personalizar”, y desde la cabecera abrimos el nuevo archivo y en la lista desplegable lo seleccionamos, con el fin de mantener los nuevos comandos y sus ajustes o modificaciones asilados del resto de los archivos de personalización.

Una vez situados sobre el nuevo archivo, abrimos el “nodo” de menús, y en él con ayuda del botón derecho dede el menú contextual, “creamos” el nuevo menú que vamos a llamar “Aparatos Sntrs.”.

A continuación pasamos al modulo inferior del cuadro que corresponde a la “Lista de Comandos” y que inicialmente debe encontrarse vacío porque aún no hemos definido ninguno. A la derecha en la barra de cabecera hay un botón que sirve para “crear un comando”, que una vez pulsado, nos presenta un nuevo aspecto del panel derecho, donde podremos editar o definir el nuevo comando y sus propiedades, incluido su nombre, la macro asociada y otros campos de ayuda.

A continuación vamos configurando cada nuevo comando, (Lavb. Duch. .. etc.) y en el campo de la macro escribimos el texto correspondiente actualizando debidamente el nombre del bloque que vamos a insertar. Finalmente cuando tenemos en el panel izquierdo toda la lista de los nuevos comandos ya solo queda subirlos al menú que habíamos creado y que se encuentra en el árbol general del panel izquierdo.

Cuando hemos acabado, solo queda salvar el nuevo archivo, y a continuación volvemos a pasar a la solapa “transferir”. Entonces seleccionamos en el panel izquierdo el archivo de personalización principal, y en el panel derecho el nuevo archivoque hemos creado, y solo nos queda trasladar con la pulsación sostenida, el nuevo nodo de menú desde el panel derecho a la ubicación que resulte oportuna del conjunto completo que tenemos en el panel izquierdo.

Finalmente accionando el botón “Aplicar” de la parte inferior, el sistema actualiza todo los archivos y presentará en nuestro espacio de trabajo el nuevo menú, y a partir de ese momento deben encontrarse disponibles los nuevos comandos.

 

PERSONALIZAR el AutoCAD ( IV )

La interfaz de usuario

Una de las características que siempre ha tenido AutoCAD desde las primeras versiones, es su gran capacidad y flexibilidad, para poder modificar la “interfaz” de usuario, adaptando esta a las necesidades o preferencias personales de cada uno.

El concepto de “interfaz”, básicamente se debe considerar como el aspecto y configuración que tiene la pantalla o ventana del programa, durante el proceso de trabajo habitual, que es a través de la que vamos cargando, seleccionando o ejecutando las órdenes que deben actuar en cada momento, además de incorporar o definir los datos de cualquier tipo, con los que vamos construyendo nuestro archivo de trabajo.

Normalmente en las primeras versiones del programa la interfaz de usuario estaba constituida por un área de menús, situada en la parte derecha de la pantalla y una pequeña zona inferior para la línea de comando con capacidad para tres o cuatro líneas de texto. El resto de la pantalla estaba ocupada por el área gráfica donde se visualizaba el dibujo que íbamos construyendo. También disponía naturalmente de una barra de título y otra de estado, donde se mostraba la información correspondiente.

El repertorio de órdenes y comandos que ha tenido disponible el programa desde sus primeras versiones ha sido muy extenso, por lo que los menús de comando tenían que disponer de algún mecanismo o sistema que permitiera ordenar racionalmente ese gran repertorio, con una estructura “anidada” o de cualquier otro tipo, para poder alcanzar tanto las diferentes “ordenes” del programa como las opciones o alternativas para la ejecución para cada una.

Por otra parte la extensión y repertorio de órdenes que se encuentran disponibles en un programa de propósito general como este, es singularmente amplio aunque sin embargo a la hora de realizar el trabajo cotidiano muchas de sus características y opciones, son formas alternativas para realizar tareas similares. Ello supone que cada usuario se va acomodando por una parte a utilizar solamente algunas órdenes con las que se siente más cómodo y por otra parte las peculiaridades de cada trabajo concreto, también contribuyen a que haya ciertos conjuntos de órdenes o alternativas que en la práctica cotidiana son poco utilizadas. El programa también permite con relativa facilidad adaptar o acomodar el uso de distintas órdenes u opciones, a un comportamiento diferente en función del uso particular, o los gustos de cada usuario. Todo esto es la base de la “personalización” del programa.

La personalización desde las primeras versiones, se desarrollaba mediante archivos [ *.MNU ], que estaban configurados como archivos de texto ASCII plano, que se podían editar o modificar mediante editores como “notepad”, o cualquier otro que no intercalase dentro del contenido, sus propios códigos. El programa se suministraba siempre con un archivo denominado “ACAD.MNU”, que se iniciaba por defecto en el arranque y contenía la estructura inicial de los distintos menús, que configuraban la interfaz, tanto de la pantalla como la tableta digitalizadota, o la pulsación de los botones del ratón.

 La estructura interna de esos archivos esta dividida en secciones, donde se escribe mediante sucesivas líneas de texto, el término que debe mostrar el menú encerrado entre corchetes, y a continuación las órdenes u opciones del programa exactamente igual que si se estuvieran escribiendo mediante el teclado en la línea de órdenes. Dentro de las instrucciones que se pueden escribir también se incluye cualquier rutina de “AutoLISP”, ya sea escrita directamente o bien a través de la carga de archivos escritos en ese lenguaje, que el programa “interpreta” en tiempo real, con lo que las posibilidades para ampliar o personalizar cualquier comportamiento de nuevas órdenes u opciones mediante un menú añadido con ese mecanismo, no tiene más limites que la propia imaginación.

Evidentemente tanto la depuración como la necesidad de comprobar que las rutinas funcionan con arreglo a las previsiones, constituyen una parte muy importante de todo este proceso. El programa en las versiones anteriores, permitía cargar módulos o partes que podían estar distribuidos en varios archivos con la extensión MNU, no obstante a partir de la versión de 2.006 se produce un cambio profundo, implantando el uso de un nuevo cuadro de “Interfaz de personalización”, que se complementa con el manejo de un nuevo tipo de archivos [ *.CUI ] ó [ *.CUIx ], que a fin de cuentas son archivos de tipo XML, en los que se centralizan y gestionan todos los datos de personalización que antes estaban en los archivos MNU, y que son actualizados de forma automática por el programa, evitando la modificación del archivo por el usuario mediante un editor.

El cuadro de Personalización.

Los antiguos archivos MNU, se pueden incorporar perfectamente en la nueva estructura, pero los archivos CUI, ya no son modificables mediante el editor de texto, sino que el programa incorpora una orden que despliega en pantalla un “cuadro de personalización”, desde el que se accede a todas las ordenes y opciones, cuyo contenido puede ser editado y modificado dentro de ese cuadro, a gusto de cada uno. Finalmente cuando se cierra el cuadro, el propio programa realiza internamente la actualización del correspondiente archivo CUI con las modificaciones realizadas.

El cuadro de personalización, se encuentra dividido verticalmente en dos partes, y dispone a su vez de otras dos solapas que controlan los estados alternativos de “Personalizar” y “Transferir”. La diferencia entre ambos radica en el uso del panel derecho, que en el caso de “Personalizar”, sirve para ir abriendo detalles o componentes de los elementos y nodos que se van seleccionando en el panel principal de la izquierda. En el caso de la opción “Transferir”, el panel derecho se utiliza para abrir, guardar o configurar archivos parciales.

El panel principal situado a la izquierda, muestra inicialmente una estructura en “arbol” que contiene todos los elementos personalizables del programa. Cuando se encuentra activo el modo “transferir” solo se muestra la estructura del arbol, y permite “copiar” o “trasladar” entre ambos paneles cualquier elemento o rama de la estructura, con la pulsación sostenida del ratón.

Cuando se encuentra activo el modo “personalizar”, la estructura se complementa en la parte inferior con un cuadro que muestra una lista completa de los comandos disponibles. A medida que se van marcando o abriendo los distintos nodos del árbol o bien los comandos de la lista inferior, el panel derecho va mostrando un texto aclaratorio sobre la función de cada uno, o bien los componentes detallados que configuran el elemento, y que son mostrados en campos de texto para que se pueden modificar y/o reescribir oportunamente sobre el panel derecho.

La estructura completa del árbol es bastante amplia y compleja por lo que lleva cierto tiempo familiarizarse con el conjunto, pero resulta muy fácil y cómoda de manejar. Uno de los primeros nodos de la estructura en árbol, es la de “espacios de trabajo”, que constituyen la herramienta básica para poder gestionar distintas configuraciones de personalización.

Los “espacios de trabajo”, constituyen la forma de guardar o recuperar una determinada configuración o aspecto de la Interfaz de usuario o espacio de trabajo. A fin de cuentas no son mas que “etiquetas”, que genera el propio usuario, y que almacenan y por tanto permiten recuperar posteriormente un determinado aspecto de la interfaz de usuario, en la que se visualizan y colocan en las distintas zonas de la pantalla los menús de barra, persiana, cinta o paletas, que usuario tuviera desplegados en la pantalla, cuando ha creado o actualizado esa etiqueta o nombre concreto.

El programa suministra por defecto cuatro espacios de trabajo que corresponden con otras tantas configuraciones de la interfaz, concebidas para facilitar el trabajo básico de dibujo y anotación en dos dimensiones, o bien un par de variantes para trabajo de modelado en 3D, y otra más para evocar el aspecto clásico del AutoCAD.