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:

GDL
! Definierter Arrayparameter "param_array_1[2]" 

! ---------------------------------------------------------------------- !
!     Expand ARRAY parameters (SECURE)
! ---------------------------------------------------------------------- !

IF VARDIM1(param_array_1) < counter_param THEN
	arrDim = VARDIM1(param_array_1)
	FOR i = arrDim + 1 TO counter_param
		param_array_1[i] = 0
		PARAMETERS param_array_1[i] = param_array_1[i]
	NEXT i
ENDIF

Eine Routine, welche das Script dafür automatisch erstellt, findest Du hier.

Will man einen normalen Parameter in einen Arrayparameter umwandelt, 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.

GDL
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