Array-Parameter nachträglich einbauen

Zuletzt geändert: 11. März 2021
Du bist hier:
Geschätzte Lesezeit: 1 min

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
War dieser Artikel hilfreich?
Mag ich nicht 0 0 of 0 fanden diesen Artikel hilfreich.
Anzahl Aufrufe: 289

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert