viernes, 18 de mayo de 2012

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


No hay comentarios:

Publicar un comentario