Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Manual GDL en Español PDF
Manual GDL en Español PDF
1 Introducción
Bibliotecas Complementarias
Existen diversas bibliotecas para diferentes usos tanto desde
Graphisoft (la Colección Graphisoft) y distribuidores locales
(bibliotecas de personas, letras 3D, mobiliario de diseño, etc).
StairMaker
StairMaker de Graphisoft es una utilidad de ArchiCAD con la que
tiene acceso a una sofisticada biblioteca de objetos que le provee
de varios modelos de escaleras que podrá ajustar a sus necesidades
modificando sus parámetros.
Escritura en GDL
Si quiere ir más allá de todas las posibilidades anteriores, o si
necesita objetos de biblioteca cuya forma pueda ser controlada con
Elaboración
En función de su propósito, los objetos paramétricos pueden variar
en su elaboración. Los objetos para uso interno del estudio pueden
ser, por supuesto, menos precisos que los hechos para uso general
o para la distribución comercial.
Si sus símbolos tienen poca importancia en el plano o los cambios
paramétricos no necesitan aparecer en 2D, podrá omitir los scripts
2D paramétricos.
Incluso si los cambios paramétricos están destinados a aparecer en
2D, no es absolutamente necesario escribir un paramétrico 2D. Es
posible efectuar modificaciones paramétricas en la ventana de
Script 3D, usar la vista 3D de planta del objeto modificado como un
símbolo nuevo y guardar el objeto bajo un nombre nuevo.
Obtendrá así un grupo de objetos similares derivados del original
mediante cambios paramétricos de sus valores por omisión.
Para empezar
Las necesidades de su diseño, sus conocimientos de programación
y de geometría descriptiva influirán probablemente en dónde
empezar en GDL.
No comience a practicar GDL teniendo en mente objetivos
complicados. Aprenda GDL experimentando paso a paso con
todos sus aspectos para volverlos a su favor. Siga las
recomendaciones del nivel de experto más adelante.
Formas Simples
Las formas GDL son unidades geométricas básicas que se añaden a
un objeto de biblioteca complejo. Son las piezas de LEGO del GDL.
Se coloca una forma en el espacio escribiendo un comando en el
script GDL.
Un comando de forma consiste en una palabra clave que define el
tipo de forma y algunos valores numéricos o parámetros alfabéticos
que definen sus dimensiones. El número de valores varía con cada
forma.
Al principio, puede evitar el uso de parámetros y trabajar con
valores fijos.
Puede comenzar con los siguientes comandos de forma:
En 3D:
BLOCK CYLIND SPHERE PRISM
En 2D:
LINE2 RECT2 POLY2 CIRCLE2 ARC2
Estos nombres hablan por sí mismos (si conoce el inglés).
Transformaciones de Coordenadas
Las transformaciones de coordenadas son como mover su mano a
cierto lugar antes de poner una pieza de LEGO. Preparan la
posición, orientación y escala de la próxima forma.
Y Z
G
X L
En 2D:
ADD2 ROT2
Los comandos que empiezan con ADD moverán la próxima forma,
mientras que los que empiezan con ROT la girarán alrededor de
uno de sus ejes.
En 3D:
ELLIPS CONE
POLY_ LIN_ PLANE PLANE_
PRISM_ CPRISM_ SLAB SLAB_ CSLAB_
TEXT
En 2D:
HOTSPOT2 POLY2_ TEXT2 FRAGMENT2
Transformaciones de Coordenadas
En 3D:
MULX MULY MULZ
ADD MUL ROT
En 2D:
MUL2
PRISM 4, 1, 3, 0,
3, 3, -3, 3,
-3, 0
ADDZ -1
MUL 0.666667, 0.666667, 1
PRISM 4, 1, 3, 0,
3, 3, -3, 3,
-3, 0
ADDZ -1
MUL 0.666667, 0.666667, 1
PRISM 4, 1, 3, 0,
3, 3, -3, 3,
-3, 0
FOR I = 1 TO 5
PRISM_ 8, 0.05,
-0.5, 0, 15,
-0.5, -0.15, 15,
0.5, -0.15, 15,
0.5, 0, 15,
0.45, 0, 15,
0.45, -0.1, 15,
-.45, -0.1, 15,
-0.45, 0, 15
ADDZ 0.2
NEXT I
Parámetros
En este estadio de su aprendizaje, puede sustituir los valores fijos
con variables alfabéticas. Esto hace al objeto flexible. Se puede
acceder a estas variables a través del cuadro de diálogo de
Definición de objetos de biblioteca al trabajar en planta.
Llamadas a Macro
No se está limitado a las formas estándar GDL. Cualquier objeto de
biblioteca existente puede ser una forma GDL en su totalidad. Para
colocarla, sólo debe "llamarla", escribiendo su nombre con los
parámetros requeridos, como si fuera un comando estándar.
Nivel Experto
Cuando tenga una buena comprensión de las características y
comandos anteriores, será capaz de escoger algunos de los
comandos restantes que necesite alguna vez, pero no
frecuentemente.
Nota: la capacidad de memoria de su ordenador puede limitar la
longitud de archivo de su script GDL, el número de llamadas a
Macro y el número de transformaciones
Para información adicional sobre los comandos GDL anteriores,
consulte el resto de este manual.
Para una consulta rápida de los comandos disponibles y su
estructura de parámetros, elija la ventana de Ayuda apropiada
desde ArchiCAD.
El espacio 3D en ArchiCAD
El modelo 3D se crea en un espacio tridimensional medido por los
ejes x, y, z de un sistema de coordenadas principal, el origen
del cual se llama origen global.
En ArchiCAD, se puede ver el origen global en la esquina inferior
izquierda de la hoja de trabajo si se abre el programa sin leer
ningún documento específico. Además, el origen global define la
cota cero a la que se refieren todos los pisos en un documento de
planta.
Cuando se coloca un objeto en el diseño, la posición en el plano
queda definida por los valores sobre los ejes x e y de este sistema
de coordenadas principal. El valor sobre el eje z puede ajustarse en
el cuadro de diálogo de Definición de Objetos. Este valor será la
base y la posición por omisión del sistema de coordenadas local
del objeto. Las formas descritas en el script se ubicarán en relación
a este sistema de coordenadas local.
2 Elementos de Sintaxis
Básicos
\\ '\' él mismo
\n nueva línea
\t tabulador
\new line continuar secuencia en siguiente línea sin una nueva
línea
\others no es correcto, producirá un aviso
Ejemplos:
"Esto es una secuencia de texto"
“washbasin 1'-6”*1'-2“
'No use delimitadores distintos'
TEXTO_NEGRITA
TEXTO_MAYÚSCULAS
caracteres especiales Deben introducirse tal cual.
otros_textos_minúsculas_en_lista_de_parámetros
Cualquier expresión GDL.
3 Transformación de
Coordenadas
3.1 Transformaciones en el
espacio Tridimensional
En GDL, todos los elementos geométricos están estrictamente
vinculados al sistema de coordenadas local. Una esquina de un
bloque, por ejemplo, está en el origen y sus caras están en los
planos x-y, x-z e y-z.
Para colocar un elemento geométrico en la posición deseada se
requieren dos pasos. Primero, mover el sistema de coordenadas a
la posición deseada. Segundo, generar el elemento. Cada
movimiento, rotación o deformación del sistema de coordenadas a
lo largo o alrededor de un eje se llama transformación.
Las transformaciones se almacenan en una pila; la interpretación
empieza hacia atrás desde la última. Los scripts heredan esta pila
de transformación; pueden insertarse nuevos elementos, pero no
pueden borrarse más que los definidos localmente. Es posible
borrar una, varias o todas las transformaciones definidas en el
script actual. Al volver de un script, las transformaciones globales
definidas se eliminan de la pila
ADDX dx
ADDY dy
ADDZ dz
Mueven el sistema de coordenadas local dx, dy o dz
respectivamente a lo largo del eje dado.
ADD dx, dy, dz
Substituye la secuencia ADDX dx : ADDY dy : ADDZ dz.
Tiene una sola entrada en la pila, por lo que puede borrarse con
DEL␣ 1.
Ejemplo :
Z
Y
c
X
b
a
X
ADD a,b,c
MULX mx
MULY my
MULZ mz
Escala el sistema de coordenadas local a lo largo del eje dado.
Valores negativos de mx, my, mz significan simetrías simultáneas.
MUL mx, my, mz
Substituye la secuencia MULX mx : MULY my : MULZ mz.
Tiene una sola entrada en la pila, y puede borrarse con DEL␣ 1.
ROTX alphax
ROTY alphay
ROTZ alphaz
Gira el sistema de coordenadas local alrededor del eje dado un
ángulo de alphax, alphay, alphaz grados respectivamente, en
sentido antihorario.
Ejemplo:
Y
Y
beta
ROTZ beta
ROT x, y, z, alpha
Gira el sistema de coordenadas local alrededor del eje definido por
el vector (x, y, z) un ángulo de alpha grados, en sentido
antihorario.
Tiene una sola entrada en la pila, por lo que puede borrarse con
DEL␣ 1.
XFORM a11, a12, a13, a14,
a21, a22, a23, a24,
a31, a32, a33, a34
Define una matriz de transformación completa. Se usa
principalmente en generación automática de código GDL. Tiene
una sola entrada en la pila.
x’ = a11 * x + a12 * y + a13 * z + a14
y’ = a21 * x + a22 * y + a23 * z + a24
z’ = a31 * x + a32 * y + a33 * z + a34
Ejemplo:
A=60
B=30
XFORM 2, COS(A), COS(B)*0.6, 0,
0, SIN(A), SIN(B)*0.6, 0,
0, 0, 1, 0
BLOCK 1, 1, 1
3.2 Transformaciones en el
espacio Bidimensional
Son los equivalentes en el espacio 2D de las transformaciones 3D
ADD, MUL y ROTZ.
ADD2 x, y
Ejemplo:
X
b
X
a
ADD2 a, b
MUL2 x, y
ROT2 alpha
Ejemplo:
Y
Y
beta
ROT2 beta
Ejemplo:
BLOCK 1, 1, 1
ADDX 2
ADDY 2.5
ADDZ 1.5
ROTX -60
ADDX 1.5
BLOCK 1, 0.5, 2
4 Formas Planas en 3D
1 2 3
X
1 2 3
X
1 2 3
X
CIRCLE r
Círculo en el plano x-y con su centro en el origen y un radio r.
Y
be
ta
alpha
5 Formas Tridimensionales
Z
b
c
a
CYLIND h, r
Cilindro recto, coaxial con el eje z con altura h y radio r.
Si h es cero, se genera un círculo en el plano x-y.
Si r es cero, se genera una línea a lo largo del eje z.
r
h
SPHERE r
Esfera con su centro en el origen y radio r.
ELLIPS h, r
Medio elipsoide. Su sección transversal en el plano x-y es un
círculo con radio r, centrado en el origen. La longitud del semieje z
es h.
Z
h
r
Y
Ejemplo:
ELLIPS r, r ! hemisferio
Z Z
alp
ha
2
r2
alp
h
ha
1
r1
Y Y
Ejemplo:
CONE h, r, 0, 90, 90 ! cono regular
n 2
X 1
j3
Y
j2 j4
i+1
X j1
i
Los números j1, j2, j3, j4 representan dónde los vértices y la cara
están presentes (1) o se omiten (0).
j1 : arista horizontal inferior
j2 : arista vertical
j3 : arista horizontal superior
j4 : cara
j7 : valor especial adicional efectivo sólo cuando j2 es 1 y controla el
punto de vista en función de la visibilidad de la arista vertical
actual.
j2 = 0: la arista vertical es siempre invisible
j2 = 1 y j7= 1: la arista vertical sólo es visible cuando es un
contorno aparente desde la actual dirección de vista
j2 = 1 y j7 = 0: la arista vertical siempre es visible
1 9
2 10
3 11
4 12
5 13
6 14
7 15
ROTX 90
PRISM_ 26, 1.2,
0.3, 0, 15,
0.3, 0.06, 15,
0.27, 0.06, 15,
0.27, 0.21, 15,
0.25, 0.23, 15,
-0.25, 0.23, 15,
-0.27, 0.21, 15,
-0.27, 0.06, 15,
-0.3, 0.06, 15,
-0.3, 0, 15,
0.3, 0, -1, !Fin de contorno
0.10, 0.03, 15,
0.24, 0.03, 15,
0.24, 0.2, 15,
0.10, 0.2, 15,
0.10, 0.03, -1, !Fin del primer hueco
0.07, 0.03, 15,
0.07, 0.2, 15,
-0.07, 0.2, 15,
-0.07, 0.03, 15,
0.07, 0.03, -1, !Fin del segundo hueco
-0.24, 0.03, 15,
-0.24, 0.2, 15,
-0.1, 0.2, 15,
-0.1, 0.03, 15,
-0.24, 0.03, -1 !Fin del tercer hueco
j7 = 0 j7 = 1
R=1
H=3
PRISM_ 9, H,
-R, R, 15,
COS(180)*R, SIN(180)*R, 15,
COS(210)*R, SIN(210)*R, 15,
COS(240)*R, SIN(240)*R, 15,
COS(270)*R, SIN(270)*R, 15,
COS(300)*R, SIN(300)*R, 15,
COS(330)*R, SIN(330)*R, 15,
COS(360)*R, SIN(360)*R, 15,
R, R, 15
ADDX 5
PRISM_ 9, H,
-R, R, 15,
COS(180)*R, SIN(180)*R, 64+15,
COS(210)*R, SIN(210)*R, 64+15,
COS(240)*R, SIN(240)*R, 64+15,
COS(270)*R, SIN(270)*R, 64+15,
COS(300)*R, SIN(300)*R, 64+15,
COS(330)*R, SIN(330)*R, 64+15,
COS(360)*R, SIN(360)*R, 64+15,
R, R, 15
hill_height n angle
thickness
1
2
Ejemplos:
RESOL 10
FPRISM_ "Roof Tile", "Red Brick", "Face brick",
"Roof Tile",
4, 1.5, 0, 1.0, !ángulo= 0
0, 0, 0,
5, 0, 0,
5, 4, 0,
0, 4, 0
angle
n
h
(xb,yb )
(xe,ye )
1
2
Ejemplo:
t
X
x1 x4 x3 x2
Los números j1, j2, j3, j4 representan cuándo los vértices y la cara
están presentes (1) o se omiten (0).
Z
mask 3
mask 4 mask 2
j3
j2
j4
j1 X
mask 1
Z
height
i
upper
i
xbeg i
lower
xend i
framevisi :
1 si las aristas del hueco son visibles,
0 si las aristas del hueco son invisibles.
Los valores negativos controlan la visibilidad de cada arista
de la abertura por separado.
framevisi = - (1*j1 + 2*j2 + 4*j3 + 8*j4 + 16*j5 + 32*j6 +
64*j7 + 128*j8) donde j1, j2... j8 pueden ser 0 o 1. Los números
j1 a j4 controlan la visibilidad de las aristas del hueco en el
lado izquierdo de la superficie del muro, mientras que j5 a
j8 afectan a las aristas de la derecha, como se muestra en la
ilustración siguiente.
j3
j7
j2
j4 j1 j6
j8
j5
Y
ROTZ -60
BWALL_ 1, 1, 1,
4, 0, 6, 6, 0,
0.3, 2,
15, 15, 15, 15,
5,
1, 1, 3.8, 2.5, -255,
1.8, 0, 3, 2.5, -255,
4.1, 1, 4.5, 1.4, -255,
4.1, 1.55, 4.5, 1.95, -255,
4.1, 2.1, 4.5, 2.5, -255,
1,
0, -0.25, 1, 3
y4
y1
y2
y3
X
x1 x2 x3 x4
Ejemplo:
Ejemplos:
CROOF_ 1, 1, 1, ! materiales
9,
0, 0,
1, 0, ! línea de referencia (x1,y1)
(x2,y2)
0.0, ! altura
-30, ! ángulo
2.5, ! grosor
0, 0, -60, 15,
10, 0, 0, 15,
10, 20, -30, 15,
0, 20, 0, 15,
0, 0, 0, -1,
2, 5, 0, 15,
8, 5, 0, 15,
5, 15, 0, 15,
2, 5, 0, -1
L=0.25
R=(0.6^2+L^2)/(2*L)
A=ASN(0.6/R)
CROOF_ "Roof Tile","Pine","Pine",
16, 2, 0, 0,
0, 0, 45, -0.2*SQR(2),
0, 0, 0, 15,
3.5, 0, 0, 15,
3.5, 3, -45, 15,
0, 3, 0, 15,
0, 0, 0, -1,
0.65, 1, -45, 15,
1.85, 1, 0, 15,
1.85, 2.4-L, 0, 13,
1.25, 2.4-R, 0, 900,
0, 2*A, 0, 4015,
0.65, 1, 0, -1,
2.5, 2, 45, 15,
3, 2, 0, 15,
3, 2.5, -45, 15,
2.5, 2.5, 0, 15,
2.5, 2, 0, -1
MESH a, b, m, n, mask,
z11, z12, . . . z1m,
z21, z22, . . . z2m,
...
zn1, zn2, . . . znm
Malla suavizada simple basada en un rectángulo con una red
equidistante. Los lados del rectángulo de base son a y b; los puntos m
y n están sobre los ejes x e y respectivamente, zij es la altura del nodo.
Visibilidad
mask = j1 + 4*j3 + 16*j5 + 32*j6 + 64*j7
donde j1, j3, j5, j6, j7 pueden ser 0 or 1.
j1 (1): la superficie de base está presente.
j3 (4): las superficies laterales están presentes.
j5 (16): las aristas de base y laterales son visibles.
j6 (32): las aristas superiores son visibles.
j7 (64): las aristas superiores son visibles, la superficie
superior no está suavizada.
Zij
j
b
1
1 i m X
Restricción de parámetros:
m > 2, n > 2
Ejemplos:
Z
alp
ha
r2
l
h
X
r1
Y
d
Ejemplo:
ROTY 90
CYLIND 10,1
ADDZ 6
ARMC 1, 0.9, 3, 0, 0, 45
ADDZ -1
ROTZ -90
ARMC 1, 0.75, 3, 0, 0, 90
ADDZ -1
ROTZ -90
ARMC 1, 0.6, 3, 0, 0, 135
Z r2
d
l
h
Y
r1
Ejemplo:
ELLIPS 3,4
FOR i=1 TO 6
ARME 6,4,0.5,3,3.7-0.2*i
ROTZ 30
NEXT i
ha
alp r1
X
r2
Ejemplo:
ROTY 90
ELBOW 2.5, 180, 1
ADDZ -4
CYLIND 4,1
ROTZ -90
MULZ -1
ELBOW 5, 180, 1
DEL 1
ADDX 10
CYLIND 4, 1
ADDZ 4
ROTZ 90
ELBOW 2.5, 180, 1
Masking
Los valores de mask se usan para mostrar o esconder superficies y/
o aristas características de la forma 3D. Los valores de mask son
específicos de cada elemento y se puede encontrar una definición
más detallada en sus correspondientes secciones/capítulos.
mask = j1 + 2*j2 + 4*j3 + 8*j4 + 16*j5 + 32*j6 + 64*j7
donde j1, j2, j3, j4, j5, j6, j7 pueden ser 0 or 1.
j1, j2, j3, j4 representan las superficies presentes (1) o no (0). j5, j6, j7
representan qué aristas son visibles (1) o invisibles (0).
j1 : superficie inferior.
j2 : superficie superior.
j3 : superficie lateral
j4 : superficie de la otra cara
j5 : aristas de la base
j6 : aristas superiores
j7: sección transversal/aristas de la superficie visibles, la superficie
no se suaviza.
Para permitir todas las caras y aristas, ajustar el valor de mask a 127.
Status
Los valores de status se usan para exponer dónde un punto dado
de una polilínea dejará atrás un trazo nítido de su trayectoria de
rotación.
EXTRUDE n, dx, dy, dz, mask, x1, y1, s1, . . . xn, yn, sn
Prisma genérico que usa una polilínea en el plano x-y como base.
El vector desplazamiento entre bases es (dx, dy, dz).
Es una generalización de las declaraciones PRISM y SLAB. No es
necesario que la polilínea de base sea cerrada ni que las aristas
laterales sean perpendiculares al plano x-y. La polilínea de base
puede incluir huecos, al igual que PRISM_. Es posible controlar la
visibilidad de las aristas de contorno
n: número de nodos de la polilínea.
mask : controla la existencia de las caras superior, inferior y
(en el caso de una polilínea abierta) lateral.
si : status de las aristas laterales o marca el final de un
polígono o hueco.
Restricción de parámetros:
n>2
Z
j6
j2
j3
Y
n j1
X 1 j5
2
Masking
mask = j1 + 2*j2 + 4*j3 + 16*j5 + 32*j6
donde j1, j2, j3, j5, j6 pueden ser 0 o 1.
j1 (1): la superficie inferior está presente.
j2 (2): la superficie superior está presente.
j3 (4): la superficie lateral (cerrada) está presente.
j5 (16): las aristas inferiores son visibles.
j6 (32): las aristas superiores son visibles.
Valores de status
0: las aristas laterales que empiezan en el nodo son
visibles.
1: las aristas laterales que empiezan en el nodo se
usan para mostrar el contorno.
-1 : marca el final del polígono cerrado o de un hueco,
y significa que el siguiente nodo será el primer
vértice de otro hueco.
Ejemplos:
2, 0, 0,
3, 2, 0,
4, 0, 0,
3, -2, 0,
2, 0, -1
A=5 : B=5
R=2 : S=1
C=R-S
D=A-R
E=B-R
EXTRUDE 28, -1, 0, 4, 1+2+4+16+32,
0, 0, 0,
D+R*SIN(0), R-R*COS(0), 1,
D+R*SIN(15), R-R*COS(15), 1,
D+R*SIN(30), R-R*COS(30), 1,
D+R*SIN(45), R-R*COS(45), 1,
D+R*SIN(60), R-R*COS(60), 1,
D+R*SIN(75), R-R*COS(75), 1,
D+R*SIN(90), R-R*COS(90), 1,
A, B, 0,
0, B, 0,
0, 0, -1,
C, C, 0,
D+S*SIN(0), R-S*COS(0), 1,
D+S*SIN(15), R-S*COS(15), 1,
D+S*SIN(30), R-S*COS(30), 1,
D+S*SIN(45), R-S*COS(45), 1,
D+S*SIN(60), R-S*COS(60), 1,
D+S*SIN(75), R-S*COS(75), 1,
D+S*SIN(90), R-S*COS(90), 1,
A-C,B-C,0,
R-S*COS(90), E+S*SIN(90), 1,
R-S*COS(75), E+S*SIN(75), 1,
R-S*COS(60), E+S*SIN(60), 1,
R-S*COS(45), E+S*SIN(45), 1,
R-S*COS(30), E+S*SIN(30), 1,
R-S*COS(15), E+S*SIN(15), 1,
R-S*COS(0), E+S*SIN(0), 1,
C, C, -1
Z
h
Y
j3
n
j1
X 1 j5
2
Ejemplo:
100:
PYRAMID 4, 1.5, 21,
-0.25, -0.25, 0,
0.25, -0.25, 0,
0.25, 0.25, 0,
-0.25, 0.25, 0
RETURN
j1
Y
n
j4
j6
j3 j5
alpha
j2
2
Masking
mask = j1 + 2*j2 + 4*j3 + 8*j4 + 16*j5 + 32*j6 + 64*j7
donde j1, j2, j3, j4, j5, j6, j7 pueden ser 0 o 1.
j1 (1): superficie inferior presente.
j2 (2): superficie superior presente.
j3 (4): superficie lateral presente en el ángulo inicial.
j4 (8): superficie lateral presente en el ángulo final.
j5 (16): aristas de superficie lateral visibles en ángulo inicial.
j6 (32): aristas de superficie lateral visibles en ángulo final.
j7 (64): aristas de la sección transversal visibles, superficie
no suavizada.
Valores de status
0: arcos laterales que arrancan del nodo todos visibles.
1: arcos laterales que arrancan del nodo se usan para
mostrar el contorno.
2: si usa el Rendering de ArchiCAD o Z-buffer y define
superficies suavizadas, el borde lateral que pertenece a
este punto define una rotura. Esta solución es
equivalente a definir nodos adicionales; el compilador
realiza el cálculo. El algoritmo de FotoRendering no
cambia. Cuando utilice otros métodos de rendering,
tendrá el mismo efecto que usar 0.
Ejemplos:
ROTY -90
REVOLVE 22, 360, 1+64,
0, 1.982, 0,
0.093, 2, 0,
0.144, 1.845, 0,
0.220, 1.701, 0,
0.318, 1.571, 0,
0.436, 1.459, 0,
0.617, 1.263, 0,
0.772, 1.045, 0,
0.896, 0.808, 0,
0.987, 0.557, 0,
1.044, 0.296, 0,
1.064, 0.030, 0,
1.167, 0.024, 0,
1.181, 0.056, 0,
1.205, 0.081, 0,
1.236, 0.096, 0,
1.270, 0.1, 0,
1.304, 0.092, 0,
1.333, 0.073, 0,
1.354, 0.045, 0,
1.364, 0.012, 0,
1.564, 0, 0
RULED n, mask,
u1, v1, s1, . . . un, vn, sn,
x1, y1, z1, . . . xn, yn, zn
RULED es una superficie basada en una curva plana y una curva en
el espacio que tienen el mismo número de nodos. Segmentos
rectos conectan los nodos correspondientes a las dos polilíneas.
Es el único elemento de GDL que permite superponer nodos
vecinos.
n: número de nodos de cada curva.
mask : controla la existencia de las caras inferior, superior y
lateral y la visibilidad de las aristas de la polilíneas
generatrices. El polígono lateral conecta el primer y
último nodos de las curvas, si alguna de ellas no
está cerrada.
u i , vi : coordenadas de los nodos de la curva plana.
si : status de las aristas laterales.
x i , yi , z i : coordenadas de la curva en el espacio.
Restricción de parámetros:
n>1
j2
j6
1
n j3
n
j1
X 1
2 j5
Masking
mask = j1 + 2*j2 + 4*j3 + 16*j5 + 32*j6 + 64*j7
donde j1, j2, j3, j5, j6, j7 pueden ser 0 o 1.
j1 (1): la superficie inferior está presente.
j2 (2): la superficie superior está presente (no efectivo si la
superficie superior no es plana).
j3 (4): la superficie lateral está presente (un cuadrángulo
plano o dos triángulos).
j5 (16): las aristas de la curva plana son visibles.
j6 (32): las aristas de la curva en el espacio son visibles.
j7 (64): las aristas de la superficie son visibles, la superficie
no se suaviza.
Valores de status
0: las aristas laterales que arrancan del nodo son todas
visibles.
1: las aristas laterales que arrancan del nodo se usan
para buscar el contorno.
Ejemplos:
R=3
RULED 16, 1+2+4+16+32,
COS(22.5)*R, SIN(22.5)*R, 0,
COS(45)*R, SIN(45)*R, 0,
COS(67.5)*R, SIN(67.5)*R, 0,
COS(90)*R, SIN(90)*R, 0,
COS(112.5)*R, SIN(112.5)*R, 0,
COS(135)*R, SIN(135)*R, 0,
COS(157.5)*R, SIN(157.5)*R, 0,
COS(180)*R, SIN(180)*R, 0,
COS(202.5)*R, SIN(202.5)*R, 0,
COS(225)*R, SIN(225)*R, 0,
COS(247.5)*R, SIN(247.5)*R, 0,
COS(270)*R, SIN(270)*R, 0,
COS(292.5)*R, SIN(292.5)*R, 0,
COS(315)*R, SIN(315)*R, 0,
COS(337.5)*R, SIN(337.5)*R, 0,
COS(360)*R, SIN(360)*R, 0,
COS(112.5)*R, SIN(112.5)*R, 10,
COS(135)*R, SIN(135)*R, 10,
COS(157.5)*R, SIN(157.5)*R, 10,
COS(180)*R, SIN(180)*R, 10,
COS(202.5)*R, SIN(202.5)*R, 10,
COS(225)*R, SIN(225)*R, 10,
COS(247.5)*R, SIN(247.5)*R, 10,
COS(270)*R, SIN(270)*R, 10,
COS(292.5)*R, SIN(292.5)*R, 10,
COS(315)*R, SIN(315)*R, 10,
COS(337.5)*R, SIN(337.5)*R, 10,
COS(360)*R, SIN(360)*R, 10,
COS(22.5)*R, SIN(22.5)*R, 10,
COS(45)*R, SIN(45)*R, 10,
COS(67.5)*R, SIN(67.5)*R, 10,
COS(90)*R, SIN(90)*R, 10
Masking
mask = j1 + 2*j2 + 4*j3 + 16*j5 + 32*j6 + 64*j7
donde j1, j2, j3, j5, j6, j7 pueden ser 0 o 1.
j1 (1): la superficie inferior está presente.
j2 (2): la superficie superior está presente.
j3 (4): la superficie lateral está presente.
j5 (16): las aristas inferiores son visibles.
j6 (32): las aristas superiores son visibles.
j7 (64): las aristas de la sección transversal son visibles, la
superficie está articulada.
Z
j2
j6
m
Y
j3
n 1 j1
X 1
2 j5
Valores de status
0: todas las aristas laterales que arrancan del nodo son
visibles.
1: las aristas laterales que arrancan del nodo se usan
para mostrar el contorno.
Ejemplos:
0, 0, 0.5,
0, 0, 1,
0, 0, 1.5,
0, 0, 2,
0, 0, 2.5,
0, 0, 3,
0, 0, 3.5,
0, 0, 4,
0, 0, 4.5,
0, 0, 5,
0, 0, 5.5,
0, 0, 6
TUBE n, m, mask,
u1, w1, s1,
...
un, wn, sn,
x1, y1, z1, angle1,
...
xm, ym, zm, anglem
Superficie generada por una polilínea que sigue la trayectoria de
una curva en el espacio sin distorsión de la sección generatriz. Las
superficies de conexión interna pueden girar en el plano U-W del
sistema de coordenadas instantáneo U-V-W.
eje V: aproxima la tangente de la curva generatriz en el
punto correspondiente,
eje W: perpendicular al eje V y apuntando hacia arriba con
respecto al eje z local,
eje U: perpendicular a los ejes V y W y formando con ellos
un sistema de coordenadas Cartesianas según la
regla de la mano derecha.
Si el eje V es vertical, la dirección W no está correctamente
definida. El eje W en el nodo previo de la trayectoria se usa para
determinar una dirección horizontal.
La sección transversal del tubo, medida en medio de los segmentos
de la trayectoria es siempre igual al polígono de base (u1, w1, ... un,
wn). Las secciones en las uniones están situadas en el plano
bisector de los segmentos de unión. El polígono de base debe estar
cerrado.
n: número de nodos de la polilínea.
m: número de nodos de la trayectoria.
ui, w i : coordenadas de los nodos de la polilínea de base.
si : status de las aristas laterales.
x i , yi , z i : coordenadas de los nodos de la trayectoria curva.
(La trayectoria comprende dos puntos más que el
número de secciones generadas. El primer y el
último puntos determinan la posición el espacio de
la primera y la última superficies que pertenecen al
TUBE. Estos puntos sólo juegan un papel
determinando la normal de las superficies, no son
nodos actuales de la trayectoria. La orientación de
las superficies es la misma que la de las superficies
W
m
m-1
V
W
1
2
alpha
U
U
Valores de status
0: los bordes laterales que empiezan en el nodo son
todos visibles.
1: los bordes laterales que empiezan en el nodo se
utilizan para mostrar el contorno.
Ejemplos:
-1, 0, 0, 0,
0, 0, 0, 0,
4, 0, 0.1, 0,
6, 0, 0.15, 0,
6+4*SIN(15), 4 - 4*COS(15), 0.2, 0,
6+4*SIN(30), 4 - 4*COS(30), 0.25, 0,
6+4*SIN(45), 4 - 4*COS(45), 0.3, 0,
6+4*SIN(60), 4 - 4*COS(60), 0.35, 0,
6+4*SIN(75), 4 - 4*COS(75), 0.4, 0,
10, 4, 0.45, 0,
6+4*SIN(105), 4 - 4*COS(105), 0.5, 0,
6+4*SIN(120), 4 - 4*COS(120), 0.55, 0,
6+4*SIN(135), 4 - 4*COS(135), 0.6, 0,
6+4*SIN(150), 4 - 4*COS(150), 0.65, 0,
6+4*SIN(165), 4 - 4*cos(165), 0.7, 0,
6, 8, 0.75, 0,
0, 8, 1, 0,
-1, 8, 1, 0
TUBE 3, 7, 16+32,
0, 0, 0,
-0.5, 0, 0,
0, 0.5, 0,
0.2, 0, -0.2, 0,
0, 0, 0, 0,
0, 0, 5, 0,
3, 0, 5, 0,
3, 4, 5, 0,
3, 4, 0, 0,
3, 3.8, -0.2, 0
TUBEA n, m, mask,
u1, w1, s1,
...
un, wn, sn,
x1, y1, z1,
...
xm, ym, zm
2
n m-1 m
1
1
bisector plane
Ejemplos:
TUBEA 9, 7, 1 + 2 + 16 + 32,
-1, 1, 0,
0, 2, 0,
0.8, 2, 0,
0.8, 1.6, 0,
0.8001, 1.6, 1,
3.2, 1.6, 0,
3.2, 2, 0,
4, 2, 0,
5, 1, 0,
0, -7, 0,
0, 0, 0,
4, 0, 1,
9, 3, 2.25,
9, 10, 2.25,
14, 10, 2.25,
20, 15, 5
COONS n, m, mask,
x11, y11, z11, . . . x1n, y1n, z1n,
x21, y21, z21, . . . x2n, y2n, z2n,
x31, y31, z31, . . . x3m, y3m, z3m,
x41, y41, z41, . . . x4m, y4m, z4m
Superficie tipo Coons generada a partir de 4 curvas que la limitan.
Masking
mask = 4*j3 + 8*j4 + 16*j5 + 32*j6 + 64*j7
donde j3, j4, j5, j6, j7 pueden ser 0 o 1.
j3 (4): aristas del 1er límite (x1, y1, z1) visibles.
j4 (8): aristas del 2º límite (x2, y2, z2) visibles.
j5 (16): aristas del 3er límite (x3, y3, z3) visibles.
j6 (32): aristas del 4º límite (x4, y4, z4) son visibles.
j7 (64): aristas de superficie visibles, la superficie suavizada.
Restricciones de parámetros:
n, m > 1
Y
1(n) 4(m)
2(n)
3(m)
X
Ejemplos:
COONS 6, 6, 4+8+16+32+64,
!1er contorno, n=6
0, 0, 5,
1, 0, 4,
2, 0, 3,
3, 0, 2,
4, 0, 1,
5, 0, 0,
ROTZ -90
ROTY 90
COONS 7, 6, 4+8+16+32+64,
!1er contorno, n=7
1, 2, 0,
0.5, 1, 0,
0.2, 0.5, 0,
-0.5, 0, 0,
0.2, -0.5, 0,
0.5, -1, 0,
1, -2, 0,
!2º contorno, n=7
6, 10, -2,
6.5, 4, -1.5,
5, 1, -1.2,
4, 0, -1,
5, -1, -1.2,
6.5, -4, -1.5,
6, -10, -2,
m-1
m
n
dz plane
Ejemplo:
0, 22, 8, 0,
28, 22, 8, -1,
23, 17, 5, 0,
23, 0, 5, -1,
13, 13, 1, 0,
13, 0, 1, -1,
16, 0, 7, 0,
16, 19, 7, -1,
0, 20, 8, 0,
28, 20, 8, -1,
19, 17, 5, 0,
19, 0, 5, -1
beta
radius
alpha
intensity
dist1
dist2
Restricciones de parámetros:
alpha < beta < 80°
Combinaciones de parámetros que tienen significados especiales:
radius = 0, alpha = 0, beta = 0
Un punto de luz, que irradia luz en todas direcciones y no
arroja sombras.
Los parámetros shadow y angfalloff se ignoran,
suponiéndoles valores shadow␣ =␣ 0, angfalloff␣ =␣ 0.
radius > 0, alpha = 0, beta = 0
Una luz direccional.
Ejemplo:
LIGHT 1.0,0.2,0.3, ! RGB
1, ! sombras activas
1.0, ! radio
45.0,60.0, ! angle1, angle2
0.3, ! angfalloff
1.0,10.0, ! dist1, dist2
0.2 ! distfalloff
nombre= "Grand"
ROTX 90
ROTY -30
TEXT 0.003, 0, nombre
5.5 Primitivas
Las primitivas de la estructura de datos 3D son VERT, VECT, EDGE,
PGON y BODY. Los cuerpos se representan por sus superficies y
las conexiones entre ellas. La información para ejecutar un corte 3D
proviene de la información de conexión
El indexado empieza con 1, y cada nuevo cuerpo o una
declaración BASE reinicia el índice a 1. Para cada arista, se
almacenan los índices de polígonos adyacentes (máximo 2). La
orientación de las aristas se define por los dos vértices
determinados como primero y segundo.
Los polígonos son listados de aristas con una orientación
incluyendo los índices de las aristas. Estos números pueden tener
un prefijo negativo. Esto significa que la arista dada se usa en
dirección opuesta. Los polígonos pueden incluir huecos. En la lista
de aristas, un índice cero indica un nuevo hueco. Los huecos no
deben incluir otros huecos. Una arista puede pertenecer de 0 a 2
polígonos. En el caso de cuerpos cerrados, la orientación de los
polígonos es correcta si la arista tiene distintos prefijos en la lista de
aristas de los dos polígonos
Los vectores normales a los polígonos se almacenan
separadamente. En el caso de cuerpos cerrados, señalan del
interior al exterior del cuerpo. La orientación de la lista de aristas es
antihoraria (matemáticamente positiva), si se mira desde el exterior.
La orientación de los huecos es opuesta al polígono relativo. Los
vectores normales a un cuerpo abierto deben señalar a la misma
cara del cuerpo.
Para determinar el interior y el exterior de los cuerpos, estos deben
estar cerrados. Una definición simple para un cuerpo cerrado es la
siguiente: cada arista tiene exactamente dos polígonos adyacentes.
La eficiencia de los algoritmos de corte, líneas ocultas o rendering
es menor para cuerpos abiertos. Cada elemento tridimensional
compuesto con parámetros regulares es un cuerpo cerrado en la
estructura de datos interna 3D.
La búsqueda de la línea de contorno se basa en los bits de status de
las aristas y sus polígonos adyacentes. Esto de define
automáticamente para elementos curvos compuestos, pero
depende del usuario especificar correctamente estos bits en el caso
de elementos primitivos.
VECT x, y, z
Definición del vector normal a un polígono por 3 coordenadas. En
el caso de definición simplificada (PGON.ivect␣ =␣ 0) estas
declaraciones pueden omitirse.
EDGE vert1, vert2, pgon1, pgon2, status
Definición de una arista.
vert1, vert2 : índice de los extremos.
Los índices vert1 y vert2 deben ser distintos y referenciados a los
VERTs previamente definidos.
pgon1, pgon2 :
índices de los polígonos vecinos. Valores cero y
negativos tienen el siguiente significado especial:
0 : arista solitaria o de extremo.
<0 : ArchiCAD buscará posibles vecinos.
Bits de status:
1 arista invisible.
2 arista de una superficie curvada.
Bits de status reservados para uso futuro:
4 primera arista de una superficie curvada
(solamente junto con 2).
8 última arista de una superficie curvada
(solamente junto con 2).
16 la arista es un segmento de arco.
32 primer segmento de un arco
(solamente junto con 16).
64 último segmento de un arco
(solamente junto con 16).
X'
X Z'
Y'
BODY status
Compone un cuerpo definido con las siguientes primitivas.
Bits de status:
1 cuerpo cerrado.
2 cuerpo que incluye superficie(s) curva(s).
4 modelo de superficie: cuando el cuerpo está
cortado, no se originan superficies en el plano de
corte.
32 el cuerpo siempre arroja sombras,
independientemente del algoritmo de preselección
automática.
64 el cuerpo nunca arroja sombras.
Si ni 32 ni 64 están definidos, se efectúa la preselección automática
de sombras. Ver SHADOW en el Capítulo "Atributos".
Si el valor de status es negativo, ArchiCAD calculará el status del
cuerpo.
Ejemplo:
5 8
6 7
1 4
Y
2 3
1: Descripción Completa
VERT 0.0, 0.0, 0.0 !#1
VERT 1.0, 0.0, 0.0 !#2
VERT 1.0, 1.0, 0.0 !#3
VERT 0.0, 1.0, 0.0 !#4
VERT 0.0, 0.0, 1.0 !#5
VERT 1.0, 0.0, 1.0 !#6
VERT 1.0, 1.0, 1.0 !#7
VERT 0.0, 1.0, 1.0 !#8
EDGE 1, 2, 1, 3, 0 !#1
EDGE 2, 3, 1, 4, 0 !#2
EDGE 3, 4, 1, 5, 0 !#3
EDGE 4, 1, 1, 6, 0 !#4
EDGE 5, 6, 2, 3, 0 !#5
EDGE 6, 7, 2, 4, 0 !#6
EDGE 7, 8, 2, 5, 0 !#7
EDGE 8, 5, 2, 6, 0 !#8
EDGE 1, 5, 6, 3, 0 !#9
EDGE 2, 6, 3, 4, 0 !#10
EDGE 3, 7, 4, 5, 0 !#11
EDGE 4, 8, 5, 6, 0 !#12
VECT 1.0, 0.0, 0.0 !#1
VECT 0.0, 1.0, 0.0 !#2
VECT 0.0, 0.0, 1.0 !#3
PGON 4, -3, 0, -1, -4, -3, -2 !#1
!VERT1,2,3,4
PGON 4, 3, 0, 5, 6, 7, 8 !#2
!VERT5,6,7,8
PGON 4, -2, 0, 1, 10, -5, -9 !#3
!VERT1,2,5,6
PGON 4, 1, 0, 2, 11, -6, -10 !#4
!VERT2,3,6,7
PGON 4, 2, 0, 3, 12, -7, -11 !#5
!VERT3,4,7,8
PGON 4, -1, 0, 4, 9, -8, -12 !#6
!VERT1,4,5,8
BODY 1 !CUBE
BASE
Pone a cero el contador para los elementos geométricos del nivel
bajo declaraciones (VERT, VECT, EDGE y PGON). Utilizado
implícitamente después de cada definición de elemento
compuesto.
5.7 Corte en 3D
CUTPLANE [x, y, z [, side]]
[stmt1
stmt2
...
stmtn]
CUTEND
o
CUTPLANE angle
[stmt1
stmt2
...
stmtn]
CUTEND
Crea un plano de corte y borra partes cortadas de formas incluidas.
CUTPLANE puede contener diferentes números de parámetros.
CUTPLANE tiene:
Sin Parámetros: plano x-y
1 parámetro: el plano de corte cruza el eje x, el ángulo está entre
el plano de corte
2 parámetros: el plano de corte es paralelo al eje z, cruza el eje x y
el y sobre lo valores dados
3 parámetros: cruza ejes x, y , z sobre los valores dados
4 parámetros: los tres primeros parámetros anteriores
side = 0: borra partes encima del plano de corte (por omisión)
side = 1: borra partes bajo el plano de corte; en caso de x-y,
x-z, y-z, las partes en la dirección negativa del eje.
El corte (sin el parámetro side ) borra partes encima del plano de
corte. Si los tres primeros parámetros definen los planos x-y, x-z o
y-z (por ejemplo 1.0, 1.0, 0.0 define el plano x-y ), las partes en la
dirección positiva del tercer eje se borrarán.
Puede añadirse cualquier número y clase de comandos entre
CUTPLANE y CUTEND. Los macros pueden contener CUTPLANEs.
Los parámetros CUTPLANE se refieren al sistema de coordenadas
actual.
Las transformaciones entre CUTPLANE y CUTEND no tienen efecto
en este plano muy cortado, pero cualquier CUTPLANEs sucesivo se
transformará: De forma que: utilice tantas transformaciones para
Manual de Referencia GDL de ArchiCAD
112
Capítulo 5: Formas Tridimensionales
CUTPLANE 2, 2, 4
CUTPLANE -2, 2, 4
CUTPLANE -2, -2, 4
CUTPLANE 2, -2, 4
ADD -1, -1, 0
BRICK 2, 2, 4
DEL 1
CUTEND
CUTEND
CUTEND
CUTEND
CUTPLANE CUTPLANE 1, 1, 0, 1
SPHERE 2 SPHERE 2
CUTEND CUTEND
CUTPOLY n,
x1, y1, . . . xn, yn
[, x, y, z]
[stmt1
stmt2
...
stmtn]
CUTEND
Similar al comando CUTPLANE, los parámetros de CUTPOLY se
refieren al sistema de coordenadas actual. El polígono debe ser
convexo y no puede tener auto-intersección. La dirección de corte
es el eje Z o puede especificarse un vector opcional (x, y, z)
Los parámetros definen un "tubo" infinito: el polígono es la sección
transversal del tubo, la dirección de corte es la dirección del tubo.
Se elimina todo lo que está en el interior del tubo.
Ejemplos:
ROTX 90
MULZ -1
CUTPOLY 3,
0.5, 1,
2, 2,
3.5, 1,
-1.8, 0, 1
DEL 1
BPRISM_ "Red brick", "Red brick", "Face brick",
4, 0.9, 7,
0.0, 0.0, 15,
6.0, 0.0, 15,
6.0, 3.0, 15,
0.0, 3.0, 15
CUTEND
A=1.0
D=0.1
CUTPOLY 4,
D, D,
A-D, D,
A-D, A-D,
D, A-D
ROTX -90
CUTPOLY 4,
D, D,
A-D, D,
A-D, A-D,
D, A-D
DEL 1
ROTY 90
CUTPOLY 4,
D, D,
A-D, D,
A-D, A-D,
D, A-D
DEL 1
BLOCK A, A, A
CUTEND
CUTEND
CUTEND
ROTX 90
FOR I=1 TO 3
FOR J=1 TO 5
CUTPOLY 4,
0, 0, 1, 0,
1, 1, 0, 1
ADDX 1.2
NEXT J
DEL 5
ADDY 1.2
NEXT I
DEL NTR()-1
ADD -0.2, -0.2, 0
BRICK 6.2, 3.8, 1
FOR K=1 TO 15
CUTEND
NEXT K
DEL TOP
CUTPOLYA n, status, d,
x1, y1, mask1, . . . xn, yn, maskn
[, x, y, z]
[stmt1
stmt2
...
stmtn]
CUTEND
Similar a la definición CUTPOLY, pero con la posibilidad de
controlar la visibilidad de las aristas de los polígonos generados. La
forma de corte es un tubo semi-infinito con la sección transversal
poligonal definida. El final de la forma de corte no puede caer
dentro del cuerpo.
j2 j3
Y
i
j1
i+1
status:
1: uso de los atributos propios del cuerpo para las aristas y
polígonos generados
2: los polígonos de corte generados se tratarán como
polígonos normales
d: distancia entre el origen local y el extremo del tubo
semi-infinito
d = 0 significa cortar con un tubo infinito
maski: similar a la declaración PRISM_
maski = j1 + 2 * j2 + 4 * j3
Ejemplo:
ROTX 90
FOR I=1 TO 3
FOR J=1 TO 5
CUTPOLYA 6, 1, 0,
1, 0.15, 5,
0.15, 0.15, 900,
0, 90, 4007,
0, 0.85, 5,
0.85, 0.85, 900,
0, 90, 4007
ADDX 1
NEXT J
DEL 5
ADDY 1
NEXT I
DEL NTR()-1
ADD -0.2, -0.2, 0
BRICK 5.4, 3.4, 0.5
FOR K=1 TO 15
CUTEND
NEXT K
DEL TOP
CUTSHAPE d
[stmt1
stmt2
...
stmtn]
CUTEND
Si d = 0.0 la forma de corte es el plano X-Y, el corte elimina la parte
superior del plano X-Y.
d < 0.0 significa un corte en L. Se elimina la parte superior del
plano X-Y con x ≥ 0.
d > 0.0 significa un corte en U. Similar al corte en L, se elimina la
parte superior del plano X-Y con 0 < x < d.
FOR I = 1 TO 5
ADDX 0.4 * I
ADDZ 2.5
CUTSHAPE 0.4
DEL 2
ADDX 0.4
NEXT I
DEL TOP
BRICK 4.4, 0.5, 4
FOR I = 1 TO 5
CUTEND
NEXT I
6 Formas Bidimensionales
HOTSPOT2 x, y
(x, y)
(x2, y2)
(x1, y1)
(x2, y2)
(x1, y1)
2
1
2
1
X
Manual de Referencia GDL de ArchiCAD
123
Capítulo 6: Formas Bidimensionales
Y
be
r
ta
alpha
(x, y)
CIRCLE2 x, y, r
Círculo con centro en (x, y), y radio r.
Y
(x, y)
angle i
i
1 (x i ,yi )
Y n
X
Valores de status:
0: por defecto
1: spline cerrada, el primer y último nodos de la spline
estarán conectados, cerrando así la spline
2: spline autosuavizada, el valor del parámetro de
ángulo de los nodos entre el primero y el último no
se usa al generar la spline. Se usa un algoritmo
interno de autosuavizado.
Ejemplos:
SPLINE2 5, 2,
0, 0, 60,
1, 2, 30,
1.5, 1.5, -30,
3, 4, 45,
4, 3, -45
n = 5
FOR I = 1 TO n
SPLINE2 4, 0,
0.0, 2.0, 135.0,
-1.0, 1.8, 240.0,
-1.0, 1.0, 290.0,
0.0, 0.0, 45.0
MUL2 -1.0, 1.0
SPLINE2 4, 0,
0.0, 2.0, 135.0,
-1.0, 1.8, 240.0,
-1.0, 1.0, 290.0,
0.0, 0.0, 45.0
DEL 1
SPLINE2 4, 0,
0.0, 2.0, 100.0,
0.0, 2.5, 0.0,
0.0, 2.4, 270.0,
0.0, 2.0, 270.0
ADD2 2.5, 0
NEXT I
SPLINE2_A n, status,
x1, y1, angle1, lenPrev1, lenNext1,
...
xn, yn, anglen, lenPrevn, lenNextn
Extensión de la declaración SPLINE2 (spline de Bézier), usada
principalmente en generación automática de scripts 2D a causa de
su complejidad (para más detalles, vea el Manual de Referencia de
ArchiCAD).
xti
Ne
len
angle i
i
ev
Pr
i
len
Y 1 (x i ,yi )
n
Códigos de status:
0: Por defecto
1: spline cerrada, el primer y último nodos de la spline
estarán conectados, cerrando así la spline
2: spline autosuavizada, los valores de los parámetros
de ángulo, lenPrevi e lenNexti de los nodos entre el
primero y el último no se usa al generar la spline. Se
usa un algoritmo interno de autosuavizado.
xi, yi: coordenadas de los puntos de control
lenPrevi, lenNexti:
longitudes de las tangentes para los puntos de
control anteriores y posteriores
anglei: ángulo de la dirección de la tangente
Ejemplo:
SPLINE2A 9, 2,
0.0, 0.0, 0.0, 0.0, 0.0,
0.7, 1.5, 15, 0.9, 1.0,
1.9, 0.8, 72, 0.8, 0.3,
1.9, 1.8, 100, 0.3, 0.4,
1.8, 3.1, 85, 0.4, 0.5,
2.4, 4.1, 352, 0.4, 0.4,
3.5, 3.3, 338, 0.4, 0.4,
4.7, 3.7, 36, 0.4, 0.8,
6.0, 4.6, 0, 0.0, 0.0
ArchiCAD
(x,y)
6.4 Proyecciones 3D en 2D
PROJECT2 projcode, angle, method
Crea una proyección del script 3D en el mismo elemento de
biblioteca y añade las líneas generadas la símbolo paramétrico 2D.
projcode:
3: Vista superior
4: Vista lateral
6: Axonometría frontal
7: Axonometría isométrica
8: Axonometría monométrica
9: Axonometría dimétrica
7 Códigos de status
adicionales para polilíneas
planas
POLY2_ maski
POLY2_A maski
POLY2_B maski
x,y
dy
dx
100
l
a
200
300
(x1,y1)
600
700
Cerrar polilínea
0, 0, 700,
ey
ex
800
Definir tangente
ex, ey, 800,
(x0,y0)
900
Definir centro
x0, y0, 900,
(x,y)
1000
2000
3000
x,y
4000 a
4000
Ejemplos:
EXTRUDE 2+5+10+10+2, 0, 0, 3,
1+2+4+16+32,
0, 0, 900,
3, 360, 4001,
2.5, -1, 0,
2.5, 1, 0,
1.5, 1, 1,
1.5, -1, 1001,
2.5, -1, -1,
0, 2.5, 600,
0, -1, 800,
1, 1.5, 1001,
-1, 0, 800,
0, 0.5, 1001,
0, 1, 800,
-1, 1.5, 1001,
1, 0, 800,
0, 2.5, 1001,
0, 2.5, 700,
-1.5, 0, 900,
-2.5, 0, 600,
-2.5, 1, 3000,
-2.5, 1, 0,
-1.5, 1, 0,
-1.5, -1, 1001,
-2.5, -1, 0,
SQR(2)-1, 45, 200,
-2.5, 0, 3000,
-2.5, 0, 700,
0, -1.5, 900,
1, 360, 4000
EXTRUDE 3, 1, 1, 3, 1+2+4+16+32,
0, 0, 900,
3, 360, 4001,
2, 360, 4000
ROTY -90
REVOLVE 9, 180, 16+32,
7, 1, 0,
6, 1, 0,
5.5, 2, 0,
5, 1, 0,
4, 1, 0,
3, 1, 900, ! definir centro
0, 180, 4001, ! arco usando punto inicial,
! centro y ángulo
2, 1, 0,
1, 1, 0
8 Atributos
8.1 Directivas
Estas directivas influyen en la interpretación de las declaraciones
GDL subsiguientes. Su influencia permanece efectiva hasta la
siguiente directiva o hasta el final del script. Los scripts llamados
heredan las definiciones actuales, los cambios tienen influencia
local. Saliendo del script reajusta las definiciones a tal como eran
antes de la llamada a macro.
Las directivas RADIUS, RESOL y TOLER definen la suavización de
los elementos cilíndricos 3D (CIRCLE, ARC, CYLIND, SPHERE,
ELLIPS, CONE, ARMC, ARME, ELBOW, REVOLVE) y de los arcos en
polilíneas 2D que usan bordes curvos (ver el capítulo "Códigos de
Status Adicionales para Polilíneas Planas).
Ejemplos:
RADIUS 1.1, 1.15 RADIUS 0.9, 1.15
CYLIND 3.0, 1.0 CYLIND 3.0, 1.0
RESOL n
Define la suavización de los elementos cilíndricos. Los círculos se
convierten en polígonos regulares de n caras.
La conversión del arco es proporcional a ésto.
Tras una declaración RESOL, las declaraciones previas RADIUS y
TOLER pierden su efecto.
Restricción de parámetros:
n>3
Por omisión:
RESOL 36
Ejemplos:
n>3
RESOL 5 RESOL 36
CYLIND 3.0, 1.0 CYLIND 3.0, 1.0
TOLER d
Define la suavización de los elementos cilíndricos. El error de
aproximación del arco (p.e. la mayor distancia entre un arco
teórico y la cuerda generada) será menor que d.
Tras una declaración TOLER, las declaraciones previas RADIUS y
RESOL pierden su efecto.
Ejemplos:
TOLER 0.1 TOLER 0.01
CYLIND 3.0, 1.0 CYLIND 3.0, 1.0
PEN n
Define el color actual.
Restricción de parámetros:
0 < n < 99
Por omisión:
PEN 1
si no hay declaración de PEN en el script.
(Para ítems de biblioteca, ArchiCAD lee valores por omisión desde
la definición del ítem de biblioteca. Si el script se refiere a un índice
inexistente, PEN 1 será la definición por omisión.)
[SET] STYLE name_string
[SET] STYLE index
Todos los textos generados después representarán este estilo hasta
la próxima declaración de SET STYLE.
El índice es una constante referida a una pila de estilos en la
estructura de datos interna de ArchiCAD. Esta pila se modifica
durante el análisis GDL y también puede ser modificada desde el
programa. El uso del índice en lugar del nombre del estilo se
recomienda sólo con un uso previo de la función IND descrita más
adelante.
Por omisión:
SET STYLE 0
(tipo de la aplicación, tamaño 5 mm, inserción= 1, normal) si no
hay declaración de SET STYLE en el script.
Ver también la función IND en el Capítulo 10.
MODEL WIRE
BLOCK 3,2,1
ADDY 4
MODEL SURFACE
BLOCK 3,2,1
ADDY 4
MODEL SOLID
BLOCK 3,2,1
SHADOW OFF
BRICK 1, 1, 1
ADDX 2
SHADOW ON
BRICK 1, 1, 2
ADDX 2
SHADOW OFF
BRICK 1, 1, 3
Definición de materiales
DEFINE MATERIAL name type, m1, m2, . . . mn
Cualquier script GDL puede incluir definiciones de materiales
previas a la primera referencia a dicho material. El material definido
de este modo puede usarse solamente en el script donde fue
definido y en sus scripts secundarios.
name : nombre del material.
type : 0: definición general, n=16
El significado de los parámetros y sus límites se
muestra en los siguientes ejemplos.
1: definición simple, n=9
Los parámetros extra son constantes o calculados
desde valores dados.
2-7: tipos de material predefinidos, n=3
Estos 3 valores son las componentes RGB del color
de la superficie. Otros parámetros son constantes o
calculados a partir del color.
2: mate
3: metálico
4: plástico
5: vidrio
6: incandescente
7: constante
10 : definición general, parámetro de trama n=17
11 : definición simple, parámetro de trama n=10
12-17 : tipos de materiales predefinidos con
parámetro de trama, n=4
20: definición general con trama, índice de color de
la trama e índice de los parámetros de textura, n=19
21: definición simple con trama, índice de color de
la trama e índice de los parámetros de textura, n=12
22-27: tipos de material predefinido con trama,
índice de color de trama e índice de los parámetros
de textura, n=6
Ejemplos:
DEFINE MATERIAL "water" 0,
0.5284, 0.5989, 0.6167,
! surface RGB [0.0..1.0]
1.0, 0.5, 0.5, 0.9,
! ambient, diffuse, specular, transparent
! coefficients [0.0..1.0]
20,
! shining [0.0..100.0]
1,
! transparency attenuation [0.0..4.0]
0.5284, 0.5989, 0.6167,
! specular RGB [0.0..1.0]
0, 0, 0,
! emission RGB [0.0..1.0]
0.0
! emission attenuation [0.0..65.5]
x
j8: simetría en dirección X
x
j9: simetría en dirección Y
x
angle: ángulo de rotación desde la orientación natural.
Ejemplo:
DEFINE TEXTURE "Brick" "Brick.PICT",
1.35, 0.3, 256+128, 35.0
Definición de trama
DEFINE FILL name pat1, pat2, pat3, pat4, pat5, pat6, pat7, pat8,
spacing, angle, n,
freq1, dir1, offsetx1, offsety1, m1,
len11, . . . lenm1,
...
freqn, dirn, offsetxn, offsetyn, mn,
lenn1, . . . lennm
Cualquier script GDL puede incluir definiciones de tramas previas
a la primera referencia a dicha trama. La trama definida de este
modo puede usarse solamente en el script donde fue definido y en
sus scripts secundarios.
len
.... im
leni2
diri
offsetyi freq
i
offsetx i X freq
i
angle
cing
*y
*x
cing
spa x
Ejemplo:
DEFINE FILL "brick" 85, 255, 136, 255,
34, 255, 136, 255,
0.08333, 0.0, 4,
1.0, 0.0, 0.0, 0.0, 0,
3.0, 90.0, 0.0, 0.0, 2,
1.0, 1.0,
3.0, 90.0, 1.5, 1.0, 4,
1.0, 3.0, 1.0, 1.0,
1.5, 90.0, 0.75, 3.0, 2,
1.0, 5.0
Trama Bitmap:
Trama: Valor binario: Vista:
pat1 = 85 01010101 • • • •
pat2 = 255 11111111 ••••••••
pat3 = 136 10001000 • •
pat4 = 255 11111111 ••••••••
pat5 = 34 00100010 • •
pat6 = 255 11111111 ••••••••
pat7 = 136 10001000 • •
pat8 = 255 11111111 ••••••••
Trama vectorial:
len
.... im
leni2
diri
offsetyi freq
i doffset i
offsetx i X freq
i doffset i
angle
y*y
x*x
cing
spa x
Trama bitmap:
Trama: Valor binario: Vista:
pat1 = 8 00001000 .
pat2 = 142 10001110 • •••
pat3 = 128 10000000 •
pat4 = 232 11101000 ••• •
pat5 = 8 00001000 •
pat6 = 142 10001110 • •••
pat7 = 128 10000000 •
pat8 = 232 11101000 ••• •
Trama vectorial:
Definición de estilo
DEFINE STYLE name font_family, size, anchor, facecode
DEFINE STYLE name PLOTMAKER, size, anchor, slant
DEFINE STYLE name PLOTTER, size, anchor, slant
Cualquier script GDL puede incluir definiciones de estilo previas a
la primera referencia a dicho estilo. El estilo definido de este modo
puede usarse solamente para elementos 2D en el script donde fue
definido y en sus scripts secundarios.
name : nombre del estilo
font_family : nombre de la familia de tipos usada (p.e. Geneva)
size : altura de los caracteres en mm.
anchor : código del punto de posición en el texto
1 2 3
4 5 6
7 8 9
facecode : combinación de los siguientes valores:
0 normal
1 negrita
2 cursiva
4 subrayada
8 hueca
16 sombra
slant : ángulo en grados (solamente para tipos
PLOTMAKER y PLOTTER)
9 Scripts No Geométricos
BINARYPROP
Referencia a datos de propiedades binarios (componentes y
descripciones) definidos en el elemento de biblioteca en la sección
de Componentes/Descripciones.
SURFACE3D ( )
VOLUME3D ( )
Estas funciones le dan la superficie y el volumen de la forma 3D del
elemento de biblioteca.
Ejemplo:
DESCRIPTOR "\tPainted box.\n\t Properties:\n\
\t\t - swinging doors\n\
\t\t - adjustable height\n\
\t\t - scratchproof"
REF DESCRIPTOR "0001"
s = SURFACE3D () ! wardrobe surface
COMPONENT "glue", 1.5, "kg"
COMPONENT "handle", 2 * c, "nb" ! c number of doors
COMPONENT "paint", 0.5 * s, "kg"
POSITION WALLS
REF COMPONENT "0002"
DRAWING
Se refiere al dibujo descrito en el script 2D del mismo elemento de
biblioteca. Úselo para colocar dibujos en sus listados de materiales.
10 Expresiones y Funciones
10.1 Expresiones
Se pueden escribir expresiones compuestas en las declaraciones
GDL, que pueden ser numéricas o de texto. En los operadores hay
constantes, variables, parámetros o llamadas a función y cualquier
combinación de ellos. Se usan pares de paréntesis curvos (( ))
(precedencia 1) para anular la precedencia por defecto de los
operadores.
Las variables de tipo simple pueden ser valores numéricos y de
texto, incluso en el mismo script, y pueden usarse en expresiones
numéricas y de texto respectivamente. Las operaciones que dan
como resultado texto NO PUEDEN ser usadas directamente como
nombres de macro en llamadas a macro, o como nombres de
atributos en definiciones de material, trama, tipo de línea o estilo.
Las variables con valor de texto serán tratadas como tal y pueden
ser usadas en cualquier lugar donde se requieran valores de texto.
Si más adelante en el script a la misma variable se le da un valor
numérico, será utilizable sólo en expresiones numéricas hasta que
se le dé otra vez valor de texto. En el proceso de precompilación se
comprueba el tipo de las expresiones.
El GDL soporta matrices de una y dos dimensiones. Las variables
devienen matrices después de una declaración, en la cual se
especifican sus dimensiones máximas:
DIM var1 [dim_1], var2 [dim_1][dim_2], ...
Después de la palabra clave DIM puede haber cualquier número
de nombres de variables separados por comas. var1 yvar2 son los
nombres de matriz, los números entre paréntesis representan las
dimensiones de la matriz (constantes numéricas). Las expresiones
variables no pueden ser usadas como dimensiones.
Los parámetros de los elementos de biblioteca también pueden ser
matrices. Sus dimensiones se especifican en el diálogo del elemento.
Las matrices de parámetros no tienen que declararse en el script. Al
10.2 Operadores
Los operadores siguientes se enumeran en orden de precedencia
decreciente. La evaluación de una expresión empieza con el
operador de precedencia más alta y, si no, de izquierda a derecha.
Operadores aritméticos
^ (o **) Potencia de precedencia 2
* Multiplicación precedencia 3
/ División precedencia 3
MOD (or %) Módulo (parte restante) precedencia 3
X MOD Y = X - Y * INT (X/Y)
+ Suma precedencia 4
- Resta precedencia 4
Note: + (suma) también puede aplicarse a expresiones de texto: el
resultado es la concatenación de textos.
Operadores Relacionales
= Igual precedencia 5
< Menor que precedencia 5
> Mayor que precedencia 5
<= Menor o igual que precedencia 5
>= Mayor o igual que precedencia 5
<> (o #) No igual a precedencia 5
Los operadores relacionales pueden utilizarse entre dos
expresiones texto cualquiera. El resultado es un número 1 o 0. Esta
función es sensible a mayúsculas o minúsculas.
Operadores Booleanos
AND (o&) y lógico precedencia 6
OR (o |) o lógico inclusivo precedencia 7
EXOR (o @) o lógico exclusivo precedencia 8
10.3 Funciones
Funciones Aritméticas
ABS (x) Devuelve el valor absoluto de x.
INT (x) Devuelve la parte entera de x.
(e.g. INT(1.23) = 1, INT(-1.23) = -2).
FRA (x) Devuelve la parte fraccional de x.
(e.g. FRA(1.23) = 0.23, FRA(-1.23) = 0.77).
SGN (x) Devuelve +1.0 si x es positivo, -1.0 si negativo, de otro modo 0.0.
SQR (x) Devuelve la raíz cuadrada de x.
Funciones Circulares
Estas funciones usan grados para sus argumentos (COS, SIN, TAN)
y para devolver valores (ACS, ASN, ATN).
ACS (x) Devuelve el arco coseno de x.
(-1.0 < x < 1.0; 0° < ACS(x) < 180°).
Funciones Trascendentes
EXP (x) Devuelve la x a potencia de e. (e = 2.7182818).
Funciones Booleanas
NOT (x) Devuelve falso (=0.0) si x es verdadero (≠ 0.0) y
verdadero (=1.0) si x es falso (=0.0).
(Negación lógica).
Funciones Estadísticas
MIN (x1,x2, . . . xn) Devuelve el menor de un numero ilimitado de argumentos.
Funciones de texto
STR (numeric_expression, len, frac)
STR (formatstring, numeric_expression)
La primera forma de la función crea una secuencia de texto desde
el valor actual de la expresión numérica. El máximo número de
caracteres numéricos en el texto es len, mientras que frac
representa el número que sigue a la coma flotante.
Ejemplo:
A=4.5
B=2.345
TEXT2 0, 2, STR(A, 8, 2) ! 4.50
TEXT2 0, 1, STR(B, 8, 2) ! 2.34
TEXT2 0, 0, STR(A*B, 8, 2) ! 10.55
flags (for m, mm, cm, e, df, di, sqm, sqcm, sqf, sqi, dd, gr, rad):
none justificar derecha (por defecto)
- justificar izquierda
+ explicitar signo más
space en lugar de un signo +
flags (for m, mm, cm, df, di, sqm, sqcm, sqf, sqi, dd, gr, rad):
'#' no mostrar ceros enteros
flags (for ffi, fdi, fi):
'0' mostrar 0 pulgadas
field_width: decimal entero no asignado
el mínimo número de caracteres a generar
precision: decimal entero no asignado
el número de fraccionales a generar
conv_spec (especificador de conversión):
e - formato exponencial (metros)
m - metros
mm - milímetros
cm - centímetros
ffi - pies y pulgadas
fdi - pies y pulgadas decimales
df - pies decimales
fi - pulgadas fraccionales
di - pulgadas decimales
para áreas:
sqm - m2
sqcm - cm2
sqmm - mm2
sqf - pies2
sqi - pulgadas2
para ángulos :
dd - grados decimales
dms - grados, minutos, segundos
gr - grados
rad - radianes
surv - unidad topográfica
Ejemplos:
h = 23
nr = 0.345678
alpha = 88.657
IF n = 6 THEN
PRINT num, ss1, size1, ss2, size2, name
!3 pieces 2 x 5 beam
ELSE
PRINT "ERROR"
ENDIF
STW (string_expression)
Devuelve la longitud del texto en metros mostrado en el estilo
actual.
Ejemplo:
abcd
DEFINE STYLE "own" "Monaco", 180000 / A_, 0, 0
SET STYLE "own"
string = "abcd"
STRLEN (string_exp)
Devuelve la longitud de la secuencia de texto (el número de
caracteres)
Ejemplo:
ss = ""
REQUEST ("Linear_dimension", "", ss)
unit = ""
IF STRSTR (ss, "m") > 0 THEN unit = "m"
IF STRSTR (ss, "mm") > 0 THEN unit = "mm"
IF STRSTR (ss, "cm") > 0 THEN unit = "cm"
string = "Flowers.PICT"
len = STRLEN (string)
n = STRSTR (string, ".")
Funciones Especiales
Las funciones especiales (junto a las variables globales) pueden ser
usadas en el script para comunicar con ArchiCAD. O bien
preguntan el estado actual y distintos ajustes de preferencias del
programa, o bien se refieren al entorno actual del elemento de
biblioteca. También pueden usarse llamadas de petición para
comunicar con extensiones GDL.
Hay dos tipos de funciones especiales: peticiones y la función IND:
REQ (parameter_string)
REQUEST (question_name, name | index, var1 [, var2,....])
IND (MATERIAL, name_string)
IND (FILL, name_string)
IND (LINE_TYPE, name_string)
IND (STYLE, name_string)
Vera más detalles en el Apéndice: Funciones Especiales
11 Declaraciones de Control
! 1st
A = B
1:IF C > 0 AND A > D OR C < 0 AND A < D THEN 2
PRINT A
A = A + C
GOTO 1
2:
! 2nd
FOR A = B TO D STEP C
PRINT A
NEXT A
DO
[stmt1
stmt2
...
stmtn]
WHILE condición
Las declaraciones entre las palabras claves se ejecutan mientras la
condición es verdadera.
La condición se comprueba después de cada ejecución de las
declaraciones.
WHILE condición DO
[stmt1
stmt2
...
stmtn]
ENDWHILE
Las declaraciones entre las palabras claves se ejecutan mientras la
condición es verdadera.
La condición se comprueba antes de cada ejecución de las
declaraciones.
REPEAT
[stmt1
stmt2
...
stmtn]
UNTIL condición
Las declaraciones entre las palabras claves se ejecutan hasta que la
condición llega a ser verdadera.
La condición se comprueba después de cada ejecución de las
declaraciones.
Ejemplo:
Las 4 secuencias siguientes de comandos GDL son equivalentes:
! 1st
FOR i = 1 TO 5 STEP 1
BRICK 0.5, 0.5, 0.1
ADDZ 0.3
NEXT i
! 2nd
i = 1
DO
BRICK 0.5, 0.5, 0.1
ADDZ 0.3
i = i + 1
WHILE i <= 5
! 3rd
i = 1
WHILE i <= 5 DO
BRICK 0.5, 0.5, 0.1
ADDZ 0.3
i = i + 1
ENDWHILE
! 4th
i = 1
REPEAT
BRICK 0.5, 0.5, 0.1
ADDZ 0.3
i = i + 1
UNTIL i > 5
IF needdoors THEN
CALL "door_macro" PARAMETERS
ADDX a
ENDIF
IF simple THEN
HOTSPOT2 0, 0
RECT2 a, 0, 0, b
ELSE PROJECT2 3, 270, 1
GOTO label
Declaración de salto incondicional. El programa ejecuta una rama
de la declaración indicada por el valor de la etiqueta
Ejemplo:
GOTO K+2
GOSUB label
Llamada a subrutina interna donde la etiqueta es el punto de
entrada de la subrutina.
Ver Etiquetas en el capítulo "Elementos Sintácticos Básicos".
RETURN
Vuelve de una subrutina interna.
END
EXIT
Final del script GDL actual. El programa termina o vuelve al nivel
anterior. Es posible usar varios ENDs o EXITs en un archivo GDL.
BREAKPOINT expression
Con este comando, se puede especificar un punto de interrupción
en el script GDL. El analizador (debugger) GDL se detendrá en este
comando si el valor del parámetro (una expresión numérica) es
verdadero (1) y está activa la opción Activar Interrupciones en el
analizador. En el modo de ejecución "normal", el intérprete GDL
simplemente pasa sobre este comando.
USE
USE (n)
Usa los siguientes n valores del buffer de parámetros interno sin
borrarlos. Las siguientes funciones USE y GET pueden usar la
misma secuencia de parámetros.
NSP
Devuelve el número de parámetros almacenados en el buffer.
Ejemplo de uso del buffer de parámetros:
R=2 : B=6 : C=4 : D=10
N=12
S=180/N
FOR T=0 TO 180 STEP S
PUT R+R*COS(T), C-R*SIN(T), 1
NEXT T
FOR I=1 TO 2
EXTRUDE 3+NSP/3, 0,0,D, 1+16,
0, B, 0,
2*R, B, 0,
USE(NSP),
0, B, 0
MULY -1
NEXT I
DEL 1
ADDZ D
REVOLVE 3+NSP/3, 180, 0,
0, B, 0,
2*R, B, 0,
GET(NSP),
0, B, 0
La descripción completa:
R=2 : B=6 : C=4 : D=10
FOR I=1 TO 2
EXTRUDE 16, 0,0,D, 1+16,
0, B, 0,
2*R, B, 0,
2*R, C, 1,
R+R*COS(15), C-R*SIN(15), 1,
R+R*COS(30), C-R*SIN(30), 1,
R+R*COS(45), C-R*SIN(45), 1,
R+R*COS(60), C-R*SIN(50), 1,
R+R*COS(75), C-R*SIN(75), 1,
R+R*COS(90), C-R*SIN(90), 1,
R+R*COS(105), C-R*SIN(105), 1,
R+R*COS(120), C-R*SIN(120), 1,
R+R*COS(135), C-R*SIN(135), 1,
R+R*COS(150), C-R*SIN(150), 1,
R+R*COS(165), C-R*SIN(165), 1,
0, B, 1,
0, B, 0
MULY -1
NEXT I
DEL 1
ADDZ D
REVOLVE 16, 180, 0,
0, B, 0,
2*R, B, 0,
2*R, C, 1,
R+R*COS(15), C-R*SIN(15), 1,
R+R*COS(30), C-R*SIN(30), 1,
R+R*COS(45), C-R*SIN(45), 1,
R+R*COS(60), C-R*SIN(50), 1,
R+R*COS(75), C-R*SIN(75), 1,
R+R*COS(90), C-R*SIN(90), 1,
R+R*COS(105), C-R*SIN(105), 1,
R+R*COS(120), C-R*SIN(120), 1,
R+R*COS(135), C-R*SIN(135), 1,
R+R*COS(150), C-R*SIN(150), 1,
R+R*COS(165), C-R*SIN(165), 1,
0, B, 1,
0, B, 0
12 Instrucciones Especiales
para Puertas y Ventanas
Puertas/Ventanas Rectangulares en
Muros Rectos
Esta es la manera más sencilla y directa de crear puertas y ventanas.
Se recomienda el uso de comandos GDL simples, como PRISM_ o
RECT.
Si desea que los materiales de superficie de los elementos puerta/
ventana coincidan con los del muro, la superficie inferior debe
coincidir con el exterior, y la superficie superior con el interior del
muro. Puede conseguir esto en los scripts usando las variables
Globales G_, H_ e I_, que le dan los materiales del muro en el que
se coloca la puerta/ventana. En el script 2D, las variables globales
E_, F_ y A˜ pueden ser útiles pues le dan los números de pluma de
contorno y relleno del muro además del número de índice del
relleno del muro en que está colocada la puerta/ventana. En el
caso de muros compuestos, debe usar las variables globales
correspondientes. Vea el apéndice para más detalles.
La Biblioteca ArchiCAD viene con un amplio conjunto de macros
de puerta/ventana. Estos scripts GDL contienen elementos
constructivos comunes usados por muchas puertas/ventanas en la
Biblioteca ArchiCAD. Hay macros para generar marcos de uso
común, paneles y muchos otros tipos de elementos puerta/
ventana. Abra algunas puertas/ventanas para ver qué tipo de
macros llaman y qué tipo de elementos generan estos macros
Ejemplo:
Ventanas No-Rectangulares en
Muros Rectos
Al trabajar con puertas/ventanas, es importante saber que
ArchiCAD siempre corta un hueco rectangular en el muro en el que
coloca la puerta/ventana. El tamaño de este hueco está
determinado por los parámetros A y B de la puerta/ventana. Sin
embargo, cuando la puerta/ventana no tiene un alzado rectangular,
no llenará por completo el hueco rectangular. Hay dos soluciones:
1. El script 3D ha de contener partes que generen las zonas que
llenan el hueco entre el cuerpo de la puerta/ventana y los bordes
del hueco rectangular. En este caso, hay que poner atención a la
visibilidad de los bordes de estos rellenos.
WALLHOLE n, status,
x1, y1, mask1,
...
xn, yn, maskn
[, x, y, z]
y Z j3
x n
i+1
Y j2
j1
1
i X
RESOL 72
L1=2.7 : L2=1.2 : H1=2.1 : H2=0.3 : H3=0.9
R=((L1/2)^2+H2^2)/(2*H2)
A=ATN((L1/2)/(R-H2))
WALLHOLE 5,1,
-L1/2,H3,15,
L1/2,H3,15,
L1/2,H1-H2,13,
0,H1-R,915,
0,2*A,4015
WALLHOLE 4,1,
L1/2-L2,0,15,
L1/2,0,15,
L1/2,H3,15,
L1/2-L2,H3,15
WALLHOLE 5,1,
-0.45, 0, 15,
0.45, 0, 15,
0.45, 1.5, 15,
0, 1.95, 15,
-0.45, 1.5, 15
Puertas/Ventanas Rectangulares en
Muros Curvos
Al colocar puertas/ventanas en muros curvos, las caras del hueco
cortado en el muro pueden variar de acuerdo con la siguiente
figura.
Ejemplo:
RESOL 72
ROTX -90
MULY -1
C= 0.12 : Z=(360*A)/(2*R_*PI)
Y= (360*C)/(2*R_*PI)
A1= 270+Z/2 : A2=270-Z/2
GOSUB 1
ADDZ B
MULZ -1
GOSUB 1
DEL 2
ADDZ C
GOSUB 2
MULX -1
GOSUB 2
END
1:
PRISM_ 9, C,
COS(A2)*R_, SIN(A2)*R_+R_, 11,
COS(A2+Y)*R_, SIN(A2+Y)*R_+R_, 13,
0, R_, 900,
0, Z-2*Y, 4009,
COS(A1)*R_, SIN(A1)*R_+R_, 11,
COS(A1)*(R_-0.1), SIN(A1)*(R_-0.1)+R_, 11,
COS(A1-Y)*(R_-0.1), SIN(A1-Y)*(R_-0.1)+R_, 13,
0, -(Z-2*Y), 4009,
COS(A2)*(R_-0.1), SIN(A2)*(R_-0.1)+R_, 11
RETURN
2:
PRISM_ 4, B-2*C,
COS(A2)*R_, SIN(A2)*R_+R_, 10,
COS(A2+Y)*R_, SIN(A2+Y)*R_+R_, 15,
COS(A2+Y)*(R_-0.1), SIN(A2+Y)*(R_-0.1)+R_, 10,
COS(A2)*(R_-0.1), SIN(A2)*(R_-0.1)+R_, 10
RETURN
Puertas/Ventanas No Rectangulares
en Muros Curvos
Las reglas generales dadas para puertas/ventanas rectangulares en
muros curvos se aplican también aquí.
Ejemplo:
C=0.1 : D=0.025
Z=A/2-SQR(2)*C : Y=A/2-SQR(2)*C-D
ADDY A/2
WALLHOLE 4, 1,
0, -A/2, 15,
A/2, 0, 15,
0, A/2, 15,
-A/2, 0, 15
PRISM_ 10, 0.1,
0, -A/2, 15,
A/2, 0, 15,
0, A/2, 15,
-A/2, 0, 15,
0, -A/2, -1,
0, -Z, 15,
Z, 0, 15,
0, Z, 15,
-Z, 0, 15,
0, -Z, -1
ADDZ 0.02
GOSUB 1
ADDZ 0.03
GOSUB 1
ADDY -Z
SET MATERIAL "Glass"
ROTZ 45
RECT SQR(2)*Z, SQR(2)*Z
END
1:
PRISM_ 16, 0.03,
0, -Z, 15,
D, -Y, 15,
D, -D, 15,
Y, -D, 15,
Z, 0, 15,
Z, D, 15,
D, D, 15,
D, Y, 15,
0, Z, 15,
-D, Y, 15,
-D, D, 15,
-Y, D, 15,
-Z, 0, 15,
-Y, -D, 15,
-D, -D, 15,
-D, -Y, 15
RETURN
Apéndice
A Variables Globales
Las variables globales hacen posible guardar valores especiales del modelo. Esto le permite
acceder a información geométrica acerca del entorno del macro GDL. Por ejemplo, puede
acceder a los parámetros del muro cuando define una ventana que debe encajar en el muro.
Las variables Globales no se apilan durante las llamadas a macro.
Información de piso
GLOB_HSTORY_ELEV B_ altitud del piso origen
el piso origen es sobre el que está colocado el objeto
GLOB_HSTORY_HEIGHT Q_ altura del piso origen
el piso origen es sobre el que está colocado el objeto
GLOB_CSTORY_ELEV Q~ altitud del piso actual
el piso actual es el que está visible en la Ventana de Planta
GLOB_CSTORY_HEIGHT R~ altura del piso actual
el piso actual es el que está visible en la Ventana de Planta
GLOB_CH_STORY_DIST S~ posición relativa del piso actual respecto al piso origen
el piso actual es el que está visible en la Ventana de Planta
Información de animación
GLOB_FRAME_NR N_ número de cuadro actual en animación
sólo válido para animación, 0 para imagen fija
GLOB_FIRST_FRAME O_ índice del primer cuadro en animación
sólo válido para animación, 0 para imagen fija
B REQ
Funciones Especiales
(parameter_string)
Esta función pregunta el estado actual del programa. Este
parámetro - la pregunta - es una cadena. El intérprete GDL
responde con un valor numérico. Si no entiende la pregunta, la
respuesta es negativa.
Listado de preguntas actuales:
"GDL_version"
número de versión del intérprete/compilador del GDL.
(Atención: no es el mismo que la versión de ArchiCAD).
"Program"
código del programa (1: ArchiCAD, 2: topCAD, etc.).
"Serial_number"
el número de serie de la llave.
"Model_size"
tamaño en bytes de la estructura de datos 3D actual.
"Red_of_material name"
"Green_of_material name"
"Blue_of_material name"
Definen las componentes de color del material dado en
valores RGB entre 0 y 1.
"Red_of_pen index"
"Green_of_pen index"
"Blue_of_pen index"
Definen las componentes de color de una pluma dada en
valores RGB entre 0 y 1.
"Pen_of_RGB r g b"
Define el índice de pluma de color más próximo al color
dado. Las constantes r, g y b figuran en la cadena entre 0 y
1.
Columnas: cPRISM_
Forjados: cPRISM_
Mallas: MASS
Ventanas:
Puertas: CALL
Objetos:
Lámparas:
LIN_
RECT
POLY, POLY_
PLANE, PLANE_
CIRCLE
ARC
BLOCK, BRICK
CYLIND
SPHERE
ELLIPS
CONE
PRISM, PRISM_, CPRISM_, BPRISM_, FPRISM_, SPRISM_
SLAB, SLAB_, CSLAB_
CWALL_, BWALL_, XWALL_
WALLHOLE
CROOF_
ARMC
ARME
ELBOW
EXTRUDE
PYRAMID
REVOLVE
RULED
SWEEP
TUBE, TUBEA
COONS
MESH
MASS
LIGHT
PICTURE
TEXT
VERT, TEVE
VECT
EDGE
PGON, PIPG
COOR
BODY
BASE
BINARY
CUTPLANE
CUTSHAPE
CUTPOLY
CUTPOLYA
CUTEND
DEFINE MATERIAL
DEFINE TEXTURE
[SET] MATERIAL
SHADOW
MODEL
HOTSPOT2
LINE2
RECT2
POLY2, POLY2_, POLY2_A, POLY2_B
ARC2
CIRCLE2
SPLINE2, SPLINE2A
PICTURE2
TEXT2
FRAGMENT2
PROJECT2
DEFINE FILL
DEFINE FILLA
DEFINE LINE_TYPE
[SET] FILL
[SET] LINE_TYPE
DRAWING2
DRAWING3
POSITION
WALLS
COLUMNS
DOORS
WINDOWS
OBJECTS
PITCHED_ROOFS
HIP_ROOFS
LIGHTS
HATCHES
ROOMS
MESHES
DRAWING
BINARYPROP
J Lista de Conversión de
Antiguos Nombres de
Variables Globales
Pueden usarse los nombres antiguos de variables globales, sin
embargo se recomienda el uso de los nuevos nombres. Cada
variable global antigua corresponde a una nueva con nombre
largo.
A_ GLOB_SCALE
B_ GLOB_HSTORY_ELEV
C_ WALL_THICKNESS
D_ WALL_HEIGHT
E_ WALL_OUTLINE_PEN
F_ WALL_FILL_PEN
G_ WALL_MAT_A
H_ WALL_MAT_B
I_ WALL_MAT_EDGE
J_ GLOB_ELEVATION
K_ WIDO_SILL
L_ SYMB_PEN
N_ SYMB_MAT
N_ GLOB_FRAME_NR
M_ GLOB_FIRST_FRAME
P_ GLOB_LAST_FRAME
Q_ GLOB_HSTORY_HEIGHT
R_ WIDO_ORIG_DIST
S_ GLOB_USER_1
T_ GLOB_USER_2
U_ GLOB_USER_3
V_ GLOB_USER_4
W_ GLOB_USER_5
X_ GLOB_USER_6
Y_ GLOB_USER_7
Z_ GLOB_USER_8
A~ WALL_FILL
B~ WIDO_RIGHT_JAMB
C~ WIDO_THRES_DEPTH
D~ WIDO_HEAD_DEPTH
E~ WIDO_REVEAL_SIDE
F~ WIDO_FRAME_THICKNESS
G~ GLOB_USER_9
H~ WIDO_POSITION
I~ GLOB_USER_10
J~ WALL_RESOL
K~ GLOB_EYEPOS_X
L~ GLOB_EYEPOS_Y
M~ GLOB_EYEPOS_Z
N~ GLOB_TARGPOS_X
O~ GLOB_TARGPOS_Y
P~ GLOB_TARGPOS_Z
Q~ GLOB_CSTORY_ELEV
R~ GLOB_CSTORY_HEIGHT
S~ GLOB_CH_STORY_DIST
T~ GLOB_SCRIPT_TYPE
U~ GLOB_NORTH_DIR
V~ SYMB_MIRRORED
W~ SYMB_ROTANGLE
X~ SYMB_POS_X
Y~ SYMB_POS_Y
Z~ SYMB_POS_Z
ABS (x)
ACS (x)
ADD dx, dy, dz
ADD2 x, y
ADDX dx
ADDY dy
ADDZ dz
AND
ARC r, alpha, beta
ARC2 x, y, r, alpha, beta
ARMC r1, r2, l, h, d, alpha
ARME l, r1, r2, h, d
ASN (x)
ATN (x)
BASE
BINARY mode [, section]
BINARYPROP
BLOCK a, b, c
BODY status
BPRISM_ topmat, botmat, sidemat,
n, h, radius,
x1, y1, mask1, . . . xn, yn, maskn
BREAKPOINT expression
BRICK a, b, c
NSP
NTR ( )
OPEN (filter, filename, paramstring)
OR
OUTPUT channel, recordID, fieldID, expr1 [, expr2, . . .]
PEN n
PGON n, ivect, status, edge1, edge2, . . . edgen
PI
PICTURE filename, a, b, mask
PICTURE2 expression, a, b, mask
PIPG filename, a, b, mask,
n, ivect, status, edge1, edge2, . . . edgen
PLANE n, x1, y1, z1, . . . xn, yn, zn
PLANE_ n, x1, y1, z1, mask1, . . . xn, yn, zn, maskn
POLY n, x1, y1, . . . xn, yn
POLY_ n, x1, y1, mask1, . . . xn, yn, maskn
POLY2 n, framefill, x1, y1, . . . xn, yn
POLY2_ n, framefill, x1, y1, mask1, . . . xn, yn, maskn
POLY2_A n, framefill, fillpen,
x1, y1, mask1, . . . xn, yn, maskn
POLY2_B n, framefill, fillpen,
fillbkgdpen,
x1, y1, mask1, . . . xn, yn, maskn
POSITION position_keyword
PRINT [expression] [, expression] . . .
PRISM n, h, x1, y1, . . . xn, yn
PRISM_ n, h, x1, y1, mask1, . . . xn, yn, maskn
PROJECT2 projcode, angle, method
PUT expression [, expression] . . .
PYRAMID n, h, mask, x1, y1, s1, . . . xn, yn, sn
RADIUS rmin, rmax
RECT a, b
SIN (x)
SLAB n, h, x1, y1, z1, . . . xn, yn, zn
SLAB_ n, h, x1, y1, z1, mask1, . . . xn, yn, zn, maskn
SPHERE r
SPLINE2 n, status, x1, y1, angle1, . . . xn, yn, anglen
SPLINE2_A n, status,
x1, y1, angle1, lenPrev1, lenNext1,
...
xn, yn, anglen, lenPrevn, lenNextn
SPLIT (string, format, var1 [, var2, . . . varn])
SPRISM_ topmat, botmat, sidemat,
n, xb,yb, xe, ye, h, angle,
x1, y1, mask1, . . . xn, yn, maskn
SQR (x)
STR (numeric_expression, len, frac)
STR (formatstring, numeric_expression)
STRLEN (string_exp)
STRSTR (string_exp1, string_exp2)
STRSUB (string_exp, begpos, numchars)
STW (string_expression)
STYLE index
STYLE name_string
SURFACE3D ( )
SWEEP n, m, alpha, scale, mask,
u1, v1, s1, . . . un, vn, sn,
x1, y1, z1, . . . xm, ym, zm
TAN (x)
TEVE x, y, z, u, v
TEXT d, 0, expression
TEXT2 x, y, string
TOLER d
TUBE n, m, mask,
u1, w1, s1, . . . un, wn, sn,
x1, y1, z1, angle1, . . . xm, ym, zm, anglem
TUBEA n, m, mask,
u1, w1, s1, . . . un, wn, sn,
x1, y1, z1, . . . xm, ym, zm
USE (n)
VALUES name, val1 [, val2, . . . valn]
VECT x, y, z
VERT x, y, z
VOLUME3D ( )
WALLHOLE n, status,
x1, y1, mask1, . . . xn, yn, maskn
[, x, y, z]
WHILE condition DO
statements
ENDWHILE
XFORM a11, a12, a13, a14,
a21, a22, a23, a24,
a31, a32, a33, a34
XWALL_ leftmat, rightmat, sidevmat, sidehmat,
height, x1, x2, x3, x4,
y1, y2, y3, y4,
t, radius,
reserved1, reserved2,
mask1, mask2, mask3, mask4,
n,
xbeg1, lower1, xend1, upper1, framevis1,
...
xbegn, lowern, xendn, uppern, framevisn,
m,
a1, b1, c1, d1,
...
am, bm, cm, dm
L Extensión de Texto
Esta es una extensión de ejemplo que demuestra las posibilidades
de las operaciones de archivo I/O. Otras extensiones de este tipo
están disponibles desde Graphisoft u otros vendedores.
La extensión interpreta los textos en la lista de parámetros de los
comandos OPEN, INPUT, OUTPUT.
Asume que una carpeta llamada "ArchiCAD Data Folder" existe
aparte de ArchiCAD para archivos definidos por el usuario. (El
nombre de esta carpeta está definida en el recurso extensión, en
donde puede localizarse). Si esa carpeta no existe, la extensión
crea una. La carpeta puede contener subcarpetas en donde la
extensión busca archivos existentes. Los archivos de tipo TEXTO se
pueden leer y escribir.
4. CLOSE channel
Este comando cierra el archivo identificado por el valor de canal.
Ejemplo:
Un objeto GDL que simplemente copia el contenido del archivo
"f1" en el "f2" y "f3", y escribe todos los valores tabulados en "f1"
dentro de una fila separada en "f2" y "f3".
ch1 = OPEN ("TEXT", "f1", "MODE=ro")
ch2 = OPEN ("TEXT", "f2", "SEPARATOR='\n', MODE=wo")
ch3 = OPEN ("TEXT", "f3", "SEPARATOR='\n', MODE=wo")
i = 1
1:
n = INPUT (ch1, i, 1, var1, var2, var3, var4)
IF n <> -1 THEN
OUTPUT ch2, 1, 0, var1, var2, var3, var4
OUTPUT ch3, 1, 0, var1, var2, var3, var4
i = i + 1
GOTO 1
ELSE
GOTO 2
ENDIF
2:
CLOSE ch1
CLOSE ch2
CLOSE ch3
END
Índice
2D script 7
3D script 7
A
ABS 173
ACS 173
ADD 26
ADD2 29
ADDX 26
ADDY 26
ADDZ 26
Alias Wavefront 5–20
AND 172
ARC 36, 144
ARC2 124
ArchiSITE 2, 5
ARMC 64, 144
ARME 65, 144
Arrastrar & Soltar 20
ASN 173
ATN 173
B
BASE 109
BINARY 7, 110
BINARYPROP 7, 165
BLOCK 38
BODY 107
BPRISM_ 46, 134
BREAKPOINT 186
BRICK 38
BWALL_ 55
C E
CALL 190 EDGE 103
CEILS 166 ELBOW 66, 144
CIRCLE 36, 144 elementos de biblioteca 7
CIRCLE2 125 ELLIPS 39, 144
CLOSE 194 ELSE 185
COLUMNS 166 END 22, 186
comentario 8 ENDIF 185
COMPONENT 164, 165, 166 ENDWHILE 183
componentes 7 Etiqueta 22
CONE 40, 144 EXIT 22, 186
COONS 91 EXOR 172
COOR 105 EXP 174
COS 173 expresiones 24
CPRISM_ 45, 134 EXTRUDE 69, 134
CROOF_ 59, 134
CSLAB_ 51 F
CUTEND 112
CUTPLANE 112 FILL 149, 156, 191
CUTPOLY 115 FILLA 159
CUTPOLYA 118 FOR 182
CUTSHAPE 120 format string 174
CWALL_ 52 FPRISM_ 48, 134
CYLIND 38, 144 FRA 173
FRAGMENT2 7, 130
D
G
datos binarios 2D 7
datos binarios 3D 7 GET 187
datos binarios de propiedades 7 GOSUB 22, 184, 186
Declaraciones 22 GOTO 22, 184, 186
DEFINE FILL 156 Graphisoft Collection 4
DEFINE FILLA 159
DEFINE LINE_TYPE 161
H
DEFINE MATERIAL 151 HATCHES 166
DEFINE STYLE 162 HOTSPOT2 122
DEFINE TEXTURE 154
definición de atributos 18 I
DEL 30
DEL TOP 30 IF 184, 185
descripciones 7 imagen previa 8
DESCRIPTOR 164 IND 179, 221
DIM 170 INPUT 193, 243
DO 183 INT 173
DOORS 166
DRAWING2 132
DRAWING3 132
DXF 5
L P
LET 144 PARAMETERS 190
LGT 174 Parámetros 8, 24, 171
LIGHT 96 PEN 146, 191
LIGHTS 166 PGON 104
LIN_ 34 PI 173
LINE_TYPE 150, 161, 191 PICTURE 8, 99
LINE2 122 PICTURE2 8, 128
Línea 22 pila de transformación 26
Lista de Componentes 166 PIPG 105
lista de valores 18, 167 PITCHED_ROOFS 166
LOG 174 PLANE 35
PLANE_ 35
M POLY 34
POLY_ 35, 134
MASS 94 POLY2 123
Master script 7 POLY2_ 123, 134
MASTER_GDL 18, 23, 150, 167, 220 POLY2_A 124, 134
MASTEREND_GDL 18 POLY2_B 124, 134
MATERIAL 148, 151, 191 POSITION 166
MAX 174 PRINT 192
MESH 62 PRISM 40
MIN 174 PRISM_ 41, 134
MOD 172 PROJECT2 131
MODEL 147, 191 PUT 187
MUL 27 PYRAMID 72, 134
MUL2 29
MULX 27 R
MULY 27
MULZ 27 RADIUS 144, 191
RECT 34
N RECT2 122
REF 164
NEXT 182 REPEAT 183
NOT 174 REQ 179, 217
NSP 188 REQUEST 179, 218
NTR 30 RESOL 145, 191
RETURN 186
O REVOLVE 74, 134, 144
OBJECTS 166 RND 174
OPEN 193, 242 ROT 28
OR 172 ROT2 29
origen global 16 ROTX 27
OUTPUT 194, 244 ROTY 27
ROTZ 27
RULED 78
S U
script de lista de valores 7 UNTIL 183
Script de Propiedades 7, 164 USE 188
SET FILL 149
SET LINE_TYPE 150 V
SET MATERIAL 148
SET STYLE 146 valores de mask 42
SGN 173 VALUES 167
SHADOW 148, 191 Variables 23
SIN 173 variables globales 18
sistema de coordenadas local 16 VECT 103
sistema de coordenadas principal 16 VERT 102
SLAB 51 VisualGDL 5
SLAB_ 51 VOLUME3D 165
SOLID 147
SPHERE 39, 144
W
SPLINE2 125 WALLHOLE 199, 200
SPLINE2_A 127 WALLS 166
SPLIT 177 WHILE 183
SPRISM_ 50, 134 WINDOWS 166
SQR 173 WIRE 147
StairMaker 2, 4
STEP 182 X
STR 174
STRLEN 178 XFORM 28
STRSTR 178 XWALL_ 57
STRSUB 178
STW 177
STYLE 146, 162, 191
SURFACE 147
SURFACE3D 165
SWEEP 81, 134
T
TAN 173
TEVE 102
TEXT 100
TEXT2 129
TEXTURE 154
THEN 184, 185
Tipos simples 24
TO 182
TOLER 145, 191
trama bitmap 157
trama vectorial 157
TUBE 84, 134
TUBEA 89, 134
Contenido
1 Introducción 1
1.1 Acerca de este Manual ____________________________________________________ 2
1.2 Objetos de Biblioteca _____________________________________________________ 2
Sus fuentes de objetos de biblioteca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
La Biblioteca de Archicad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Bibliotecas Complementarias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
StairMaker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Extensiones de Terceras Partes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Bibliotecas en formato DXF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Uso de sus propias habilidades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Modelar en otras aplicaciones 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Modelar con las herramientas propias de ArchiCAD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Escritura en GDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.3 Escritura en GDL _________________________________________________________ 7
Qué es GDL? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Estructura del Elemento de Biblioteca de ArchiCAD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Analizar, descomponer y simplificar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Elaboración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Para empezar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Comandos de Nivel Básico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Comandos de Nivel Intermedio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Comandos y Características de Nivel Avanzado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Nivel Experto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.4 Cómo genera ArchiCAD una imagen 3D __________________________________ 16
El espacio 3D en ArchiCAD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
¿ Porqué necesita transformaciones de coordenadas ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
El motor de intérprete GDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
El orden de análisis de los scripts GDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.5 Creación de objetos en ArchiCAD ________________________________________ 19
3 Transformación de Coordenadas 25
3.1 Transformaciones en el espacio Tridimensional __________________________ 26
3.2 Transformaciones en el espacio Bidimensional ___________________________ 29
3.3 Manejo de la Pila de Transformación _____________________________________ 30
4 Formas Planas en 3D 33
5 Formas Tridimensionales 37
5.1 Formas básicas _________________________________________________________ 38
5.2 Formas generadas desde polilíneas ______________________________________ 67
5.3 Elementos para la Visualización __________________________________________ 96
5.4 Elemento de Texto _____________________________________________________ 100
5.5 Primitivas _____________________________________________________________ 101
5.6 Uso de los Datos 3D Binarios ___________________________________________ 110
5.7 Corte en 3D ____________________________________________________________ 112
8 Atributos 143
8.1 Directivas _____________________________________________________________ 144
Directivas Usadas en Scripts 3D y 2D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
Directivas utilizadas sólo en scripts 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
Directivas usadas sólo en scripts 2D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
8.2 Definición de Atributos _________________________________________________ 150
Definición de materiales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
Definición de trama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
Definición de Trama Avanzada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
Apéndice 207
A Variables Globales ____________________________________________________ 208
B Funciones Especiales _________________________________________________ 217
C GDL Creado desde la Planta ___________________________________________ 222
D Palabras Clave sólo para la Vista 3D ___________________________________ 223
E Palabras Clave sólo para el Símbolo 2D ________________________________ 225
F Palabras Clave para uso 2D y 3D ______________________________________ 226
G Palabras Clave para Scripts No Geométricos ____________________________ 227
H Palabras Clave Comunes ______________________________________________ 228
I Palabras Clave Reservadas ____________________________________________ 229
J Lista de Conversión de Antiguos Nombres de Variables Globales ________ 230
K Listado Alfabético Actual de Palabras Clave GDL ________________________ 232
L Extensión de Texto ___________________________________________________ 242
Índice 247