Macros

Una macro es un archivo de texto que incluye partes de una escena de Descartes correspondientes a elementos en los selectores Definiciones, Programa y Gráficos. Para generar dicho archivo de texto es necesario tener una escena de Descartes guardada en alguna ubicación y que tenga los elementos a mostrar en los selectores antes mencionados.

En la siguiente figura se muestra un ejemplo de un gráfico tipo macro, correspondiente al dibujo de una bombilla:



En esta otra figura, se muestra la configuración necesaria para obtener la bombilla prediseñada. Nota que la macro usada en este ejemplo se lee de una carpeta macros y su nombre es bombilla.txt.



Un ejemplo del uso de esta macro lo puedes observar en la siguiente escena interactiva



Cabe notar dos cosas importantes. Aunque la macro viene incluida como un gráfico, realmente va más allá de solamente manipular gráficos. Recordemos que involucra también los elementos de Definiciones y Programa. Por otra parte, existe una macro en el selector Gráficos y otro en el selector Gráficos 3D. Los dos funcionan de manera muy similar, aunque hay diferencias leves en los parámetros de cada uno. Sólo se abordarán las macros en dos dimensiones en la presente documentación, dado que las diferencias entre ambas se explican solas.

archivo: es un campo de texto en el que se introduce la ruta a la macro en cuestión, el cual se puede encontrar a la misma altura del interactivo que lo contiene o en una subcarpeta. Se recuerda usar la diagonal sencilla para bajar niveles hacia las subcarpetas en caso que sea necesario.

rotación: es un campo de texto en el que se introduce una expresión para la rotación en grados de los gráficos que pudiera incluir la macro. Nota que para la macro en tres dimensiones, se usa rotini y rotfin.

posición: es un campo de texto en el que se introduce las coordenadas de desplazamiento de los elementos gráficos de la macro en caso de haberlos. Las coordenadas han de escribirse flanqueada por corchetes cuadrados. Nota que para la macro en tres dimensiones, se usa posini y posfin.

nombre: es un campo de texto donde se introduce el nombre que se le dará a la macro. Cuando un elemento no gráfico (por ejemplo, algún elemento del selector Definiciones o Programa contenido en una macro ha de ser llamado, se debe incluir como prefijo el nombre de la macro seguido de un punto y luego la función en cuestión. Por ejemplo una función f1() en una macro llamada mcr debe ser llamada como mcr.f1().

En el menú principal Archivo del editor de Descartes existe la opción Exportar a, dentro de la cual hay una subopción macro de Descartes. Cuando se selecciona dicha opción, se lanza una ventana emergente en la que se puede seleccionar la ubicación de la macro en cuestión. Se recomienda guardar la macro ya sea a la misma altura del html del interactivo o en una subcarpeta.

La función de la macro es simplificar el diseño de escenas subsecuentes que compartan ciertas características entre sí. Por ejemplo, considera que se quiere colocar un marco que flanquee las escenas en varios interactivos, cada uno guardado como un archivo html diferente. El marco será el mismo para todos y sería necesario repetir el código en cada interactivo. Si el marco está compuesto de muchos elementos, ello implicaría colocar una gran cantidad de elementos gráficos en cada interactivo. Si son muchos interactivos, tendríamos una gran cantidad de código repetido. Así pues, resulta cómodo usar una misma macro que sea leída por los diferentes interactivos para no tener que repetir mucho código en cada uno de ellos.

Adicionalmente, es posible pasar información de la escena principal a las variables de la macro. Ello se logra haciendo asignaciones, en la escena principal, a la variable <nombre de la macro>.<nombre de la variable en la macro>. Por ejemplo, supón que una macro con nombre macr echa mano de una variable ancho. En la escena principal (la que llama la macro), la asignación macr.ancho=2 le asignará el valor de 2 a la variable ancho dentro de la macro llamado macr.

En ocasiones puede resultar útil hacer modificaciones manuales a una macro (fuera de Descartes) con un editor de textos. Esto puede conllevar un problema, que es el tipo de codificación que el editor use. Es preciso asegurarse que el editor está guardando el archivo en codificación UTF-8 (de preferencia UTF-8 sin BOM, en caso que el editor permita dicha codificación) siempre que se haga cambio en una macro de forma manual.