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

Bienvenidos a una entrada más de nuestro archiBLOG, apreciados lectores y usuarios, quienes se hayan adentrado un poco más en el mundo del GDL, se habrán dado cuenta que la programación lineal se queda un poco corta y debemos de crear algoritmos, llamadas a grandes bloques de programación, etc. Algunos hemos tenido el dilema… ¿Qué diferencia hay entre Group, Call y Go? ¿Cual debo usar?

La respuesta es: Depende. Simplemente dependiendo de qué queremos hacer con ello, debemos usar una u otra ya que son bastante diferentes una de otra ya que no solo sirven para empaquetar lineas de código.

GROUP: Si nosotros empaquetamos un código entre group y endgroup, creamos una memoria de datos invariables que la máquina escribirá una y otra vez que llamemos a placegroup. Por ejemplo:

group “cosa”

material mat
brick A, B, ZZYZX

endgroup

Si hacemos placegroup “cosa” pondrá el brick de esas medidas y ese material. Inconvenientes y observaciones: el programa debe leer el código de primeras, así que debemos crear los group antes de hacer los placegroup. Segundo, una vez leído, no relee el código. ¿Qué ocurre aquí?

altura=20
group “cosa”

material mat
brick A, B, altura

endgroup
placegroup “cosa”
altura=50
placegroup “cosa”

Pues que crea dos brick exactamente iguales de altura=20. ¿Por qué? El programa guarda en memoria cambiar el material a la variable mat que leyó en un inicio y un brick de AxBx20. Y así seguirá.

CALL: Llama a un objeto externo en la biblioteca de archiCAD y lo coloca tal cual con los parámetros de entrada dados.

Call “macro” PARAMETERS x1=x, x2=y, ….

Se usa cuando queremos crear objetos complejos que son un grupo de objetos complejos e independientes. Es una forma más a lo grande que Group o Go ya que debemos crear objetos separados para formar uno solo. Es decir, creamos una biblioteca entera para un solo objeto. Si el objeto lo merece y es necesario, bienvenido sea, en otro caso, no es optimo ya que arrastra mucha información de todos los objetos y eso se traduce en peso. Además de posibles errores si no se encuentra el objeto en la macro por error del usuario, del desarrollador, del programa, etc. Cuanto más grande es el castillo de naipes, más fácil es que se desmorone.

GOSUB: Se utiliza cuando queremos hacer algo parecido a GROUP pero variable. Si group almacena en memoria lo que lee, GOSUB hace saltar la lectura del código y va actualizandose al momento. Por ejemplo:

altura=10
gosub “cosa”
addx 5
altura=20
gosub “cosa”
end
“cosa”:

brick A, B, altura

return

¿Qué ocurre aquí? Pues que crea dos brick de alturas distintas, una de 10 y otra de 20. ¿Por qué aquí si y en GROUP no? Porque aquí el código lee que altura vale 10, luego que debe ir al final del código (por eso el END es importante) y buscar una subrrutina llamada “cosa” y leerla, pone el brick AxBx10 y al leer return, vuelve donde estaba, se mueve 5 en el eje X, la variable altura cambia a 20 y vuelve a irse abajo a buscar la subrrutina “cosa”.

Estas son las mayores diferencias entre cada una. Depende de lo que necesitemos, entonces podemos usar la que más se adapte a nuestras necesidades. Además de que GROUP permite hacer operaciones entre otros GROUP pero eso es otra historia y está en la guía de referencia de GDL.

Soy Javier Farratell, un saludo desde ArchiCADero