We value your input!
Please participate in Archicad 28 Home Screen and Tooltips/Quick Tutorials survey

GDL
About building parametric objects with GDL.

Length/Size of one of the sub-arrays of a multi-dim array

dushyant
Enthusiast
Hi
Is there a way to get the length/size of a sub-array of a multi-dimensional array?
DIM myArray[][]
myArray[1][1] = 500
myArray[1][2] = 510
myArray[2][1] = 600
myArray[2][2] = 610
myArray[2][3] = 620
myArray[3][1] = 700
myArray[3][2] = 710
myArray[3][3] = 720
myArray[3][4] = 730
VARDIM1(myArray[1]) !gives 4, but I need the size of just myArray[1], which is 2

I tried VARDIM2(myArray[1]) also but it doesn't give the required output.
32 REPLIES 32
Podolsky
Ace
Why VARDIM1(myArray[1])?

Must be VARDIM1(myArray) and VARDIM2(myArray)
dushyant
Enthusiast
Because I need the size of the sub-array myArray[1] (that is the value 2 in my example) and not the entire parent array myArray
Podolsky
Ace
So, VARDIM1(myArray) will give you 4 and VARDIM2(myArray) will give you 3.

If you just need to find out it is one-dimensional or two dimensional array (i.e. one bracket or two brackets), make some sort of check:

something=1
IF VARDIM2(myArray) THEN something=2

I didn't try it, but hope it will work this way.
Podolsky
Ace
dushyant wrote:
Because I need the size of the sub-array myArray[1] (that is the value 2 in my example) and not the entire parent array myArray
What do you call sub-array? Could you refer to GDL manual page about (and provide AC version)? Because one of us does not understand it correct.
dushyant
Enthusiast
Podolsky wrote:
So, VARDIM1(myArray) will give you 4 and VARDIM2(myArray) will give you 3.
Yes, but I don't need that.

By sub-array, I mean this array: myArray[1]
For your understanding, other sub-arrays here are: myArray[2], myArray[3]
The main/parent array of these sub-arrays being myArray

myArray[1] is an array having two items: myArray[1][1] and myArray[1][2] , so its size is 2. I want this '2' as the size value of the array myArray[1].

Hope that clarifies it for you Podolsky.
Barry Kelly
Moderator
Podolsky wrote:
So, VARDIM1(myArray) will give you 4 and VARDIM2(myArray) will give you 3.

Actually in this case it is VARDIM1(myArray) = 3 and VARDIM2(myArray) = 4.

It is simply the dimensional size of your array - 3x4.

I am no expert on arrays, but I think because you have defined ... myArray[3][4] = 730
you have automatically defined all four fields for the second dimension in all 3 of the first dimension fields.

Does that make sense?

So although you have not defined ... myArray [1][3] or myArray [1][4], you have now by default and their values will be zero.

An array can have zero values (values of zero), but it can't have missing values.

Not sure if I have explained that well.


Barry.
One of the forum moderators.
Versions 6.5 to 27
i7-10700 @ 2.9Ghz, 32GB ram, GeForce RTX 2060 (6GB), Windows 10
Lenovo Thinkpad - i7-1270P 2.20 GHz, 32GB RAM, Nvidia T550, Windows 11
dushyant
Enthusiast
Barry, so you mean it builds like a matrix of 3x4 cells and assigns 0 to any non-assigned cells?
Dominic Wyss
Booster
Sub-arrays all have the same length. two dimensional array are just tables with n x m cells.
Derived Types
Variables and parameters can also be arrays, and parameters can be value lists of a simple type.

Arrays are one- or two-dimensional tables of numeric and/or string values, which can be accessed directly by indexes.
http://gdl.graphisoft.com/reference-guide/rules-of-gdl-syntax

hth Dominic
AC27 CHE - macOS Ventura M1
dushyant
Enthusiast
In that case, multi-dim arrays might not be helpful for what I am trying to do. Thanks guys for the help.

Can dictionaries be looped through?

Didn't find the answer?

Check other topics in this Forum

Back to Forum

Read the latest accepted solutions!

Accepted Solutions

Start a new conversation!