Wenn man in einem GDL-Objekt, welches bereits in Verwendung ist, nachträglich Array-Parameter einbaut, kann es bei bereits platzierten Objekten zu Fehlermeldungen kommen, weil die Arraywerte der platzierten Objekte in der ArchiCAD-Datenbank nicht existieren.
Man kann dieses Problem umgehen, indem man für den Fall, dass ein Arrayparameter nicht existiert, das Parameterscript durchlaufen lassen, damit das Array befüllt wird.
Dies könnte wie folgt aussehen:
! Definierter Arrayparameter "str_arry_name[2][4]"
IF VARDIM1(str_arry_name) < 2 OR VARDIM2(str_arry_name) < 4 THEN
FOR i = 1 TO 2
FOR j = 1 TO 4
str_arry_name[i][j] = ""
PARAMETERS str_arry_name[i][j] = str_arry_name[i][j]
NEXT j
NEXT i
ENDIF
Will man einen normalen Parameter in einen Arrayparameter umwandeln, muss man zusätzlich etwas beachten: z.B. habe ich bei einem Satteldachobjekt 4 Fallrohre, deren Fallrohrfußpunkt bei allen Fallrohren über den Parameter „fallobst“ eingestellt wird. Will ich jedes Fallrohr einzeln über einen Arraywert eines Parameters einstellen, erzeuge ich am besten einen neuen Parameter, damit die vorhandene Parametereinstellung bei bereits platzierten Objekten nicht „zerschossen“ wird.
Ich ändere dann zwar im 3D-Script die Höhenvariable der Fallrohre von „fallobst“ in „fallobst_dim[1]“, „fallobst_dim[2]“, „fallobst_dim[3]“, „fallobst_dim[4]“, weise aber diesen neuen Werten den Wert der alten Variable zu, für den Fall, dass das Array kleiner als 4 Felder ist.
IF VARDIM1(fallobst_dim) < 4 THEN
FOR i = 1 TO 4
fallobst_dim[i] = fallobst
PARAMETERS fallobst_dim[i] = fallobst_dim[i]
NEXT i
ENDIF