Macros en el intérprete DescartesJS

El intérprete de DescartesJS reconoce y ejecuta las macros publicadas en un servidor, accediendo en línea; sin embargo, cuando ejecutamos una escena en nuestro equipo (en local), el intérprete no reconoce las macros. Esto es una limitación propia de JavaScript en relación a la lectura de ficheros en local.

Por ejemplo las dos escenas siguientes ha de verlas adecuadamente desde nuestro blog. Son escenas que utilizan una macro de usuario denominada sombras.txt cuyo objetivo es dibujar un par de sombras en las esquinas de la escena, y hay un control que cambia la trasparencia de esa sombra. Sin embargo si descarga esas escenas y las ejecuta en local en la primera no observará las sombras y en la segunda sí.

 escena6.html  escena7.html

Las escenas anteriores puede descargarlas desde este enlace e identificar el archivo correspondiente con el nombre indicado

¿Cómo podemos ejecutar los macros en local?

Para poder ejecutar una macro en local es necesario que el código de ésta esté incorporado en el código html de la página que contiene la escena que llama a esa macro. Para ello, es necesario incorporar un “script” en ese archivo html siguiendo el siguiente esquema:


<script type=”descartes/macro” id=”direccionamiento del macro usado en la escena“>

Contenido del fichero de la macro, es decir, la macro en sí

</script>


En el siguiente vídeo, puedes observar lo que acontece y el procedimiento para subsanarlo:

 

Para conocer el código de una macro del sistema puede acceder al servidor de distribución de Descartes:
En ese directorio tiene un subdirectorio macros en el que puede navegar y también el fichero macros.zip si desea descargarlo y usarlas en local. En ambos puede observar cuatro carpetas: g2d, g3d, g2d_jar y g3d_jar. Las macros incluidas en las carpetas con sufijo _jar son las que están incluidas en el archivo Descartes.jar del editor de configuración y aunque algunas coinciden en el nombre con las incluidas en las otras carpetas que no tienen sufijo su contenido no siempre es coincidente. Es necesario abordar un proceso de comparación y depuración.

 

Hemos de indicar que en las macros del sistema podemos detectar algunas en las que en una misma línea aparecen descritos dos objetos. Por ejemplo:

id=’azul’ expresión=’0′ evaluar=’una-sola-vez’ constante=’si’ tipo=’segmento’ expresión='(0,0,0)(a,b,c)’ color='(rojo,verde,azul)’ ancho=’3′

Esto no presenta ningún problema en el intérprete Java, pero sí para DescartesJS, pues éste espera una definición por línea y tienen prioridad las definiciones que tienen el atributo tipo. Es un detalle a observar si detectamos que alguna macro no nos funciona. Si detecta esta circunstancia, por favor, haga un comentario para proceder a su arreglo. Y téngalo también presente en sus macros de usuario.

Comentarios Haz un comentario

  1. Ángel /

    Hola.
    Tengo una macro que debe indicar un texto. El parámetro que contiene el texto es el siguiente:


    tipo=’texto’ expresión='[36,403]’ familia=’s’ s.intervalo='[0,1]’ s.pasos=’8′ dibujar-si=’N=2′ texto='{\rtf1\uc0{\fonttbl\f0\fcharset0 Times New Roman;\f1\fcharset0 Times New Roman;\f2\fcharset0 Courier New;}{\colortbl\red0\green0\blue0;\red0\green0\blue255;}\cf0\f1\fs36{\*\mjaformula{\expr nom1}}\f2\fs24\cf1\par \par}’ fuente=’Times New Roman,PLAIN,18′ fijo=’sí’

    como se puede ver, en la propiedad “texto” indica que debe mostrar el valor de la variable “nom1” (variable que contiene la escena y que contiene el texto correctamente). Este macro pertenece a un proyecto que estaba creado con un applet, es decir, el applet hacía uso de la macro. He transformado el applet por una escena DescartesJS y la macro ha dejado de funcionar.

    He incluido la macro dentro del fichero que contiene la escena, pero no recoje correctamente el valor y me muestra 0.00

    ¿Alguna idea? un saludo

  2. José R Galo Sánchez / Autor/a del artículo

    Gracias Enric por realizar esta matización y aclaración en la que ubicas que esta limitación es dependiente del navegador y de su configuración. Dado que existe esta dependencia es conveniente incluir el código del macro embebido, para que usuarios de otros navegadores puedan disfrutar en local de nuestros recursos.
    Esa limitación y cómo eliminarla, modificando la configuración del navegador, se especifica en el artículo “Ficheros y vectores“, pero seamos conscientes que se relaja la seguridad del navegador y consecuentemente del sistema informático de quien aborda este cambio.

  3. Enric Ripoll Mira /

    Sin embargo, cuando uso FireFox, si que puedo trabajar con las macros en local(aunque no haya incorporado el código en la página web).

Haz un comentario