Desde ArchiCADero, un rincón de Diseñadero…

Bienvenidos a una entrada más sobre el GDL, apreciados lectores y usuarios de ArchiCAD. Venimos hoy hablando del GDL porque me ha llegado una duda sobre las ventanas a medida. A muchos nos ha pasado que hemos querido avanzar en el mundo del GDL y al crear las ventanas o puertas en GDL ha ocurrido algo insólito: La ventana o puerta se ha desplazado fuera del muro. ¿Esto es un error? No, son características del diseño de la ventana que no se han tenido en cuenta y que explicaré ahora mismo.

El GDL de ArchiCAD posee una serie de variables globales, quiere decir, que aunque no las declaremos como variables, ahí están y nos dan información sobre el objeto cuando llamemos a esas variables. Tres de esas variables son: WIDO_REVEAL_SIDE, SYMB_MIRRORED y SYMB_ROTANGLE.

Para explicarnos mejor, debemos dejar claro dos conceptos: Reveal Side, o lado exterior, cuando vamos a colocar una ventana o muro, nos pide primero que digamos dónde está la cara exterior (el sol). Opening Direction, o lado de apertura, indicamos hacia dónde abre la ventana o puerta (las flechas).

WIDO_REVEAL_SIDE nos devuelve 0 ó 1, si el Reveal Side y el Opening Direction están en el mismo lado, devuelve 0, si están en caras opuestas devuelve un 1.

SYMB_MIRRORED devuelve 0 ó 1. Si el Opening Direction está en dirección opuesta en eje X al de la creación del objeto, el objeto se invierte, por tanto devuelve 0 si el objeto no se ha invertido y 1 si se ha invertido de manera automática para que cumpla.

SYMB_ROTANGLE devuelve entre 0 ó 180. Si el objeto se coloca en dirección opuerta en eje Y al de la creación del objeto, el objeto se gira, por lo que devuelve 0 si el objeto está igual que en su creación y si se ha tenido que girar de manera automática para cumplir los requisitos, devuelve 180.

tut3704

tut3703

Os dejo unas imágenes para que aclaren lo que he dicho.

¿Cómo se soluciona esto? Os dejo una serie de trucos:

!—– 2D script

!–Este truco impide que el objeto gire cuando se coloca

bRotated = round_int (SYMB_ROTANGLE) = 180

if bRotated then

rot2 180

endif

! — Este truco impide que el objeto cometa simetría cuando se coloca

if SYMB_MIRRORED then

mul2 -1, 1

endif

! — Este truco impide que el objeto se mueva y salga del muro

if WIDO_REVEAL_SIDE exor bRotated then

add2 0, WALL_THICKNESS

endif

! 3D script

! — Los mismos trucos pero en el script 3D

bRotated = round_int (SYMB_ROTANGLE) = 180

if bRotated then

roty 180

endif

if SYMB_MIRRORED then

mulx -1

endif

if WIDO_REVEAL_SIDE exor bRotated then

addz -WALL_THICKNESS

endif

Espero que os haya ayudado a comprender un poco más el GDL.

Un saludo desde ArchiCADero.