2023-05-26 06:45 AM
Hi all,
Any idea why the following is only changing the size of the sg_gridToggle & sg_lengthToggle arrays and not their values?
IF sg_noStoreyAbove > sg_noBasement then
sizetokeep = min(vardim1(sg_customName), sg_noStoreyAbove)
! copy existing values
dim sg_lengthCustom_temp[][]
dim sg_lengthCustom2_temp[][]
dim sg_lengthToggle_temp[][]
dim sg_gridToggle_temp[][]
dim sg_gridToggle_display_temp[][]
dim lp1_temp[][]
dim lp2_h_temp[][]
dim lp2_v_temp[][]
dim marker_flip_temp[][]
dim marker_flip_display_temp[][]
for i = 1 to sizetokeep
sg_lengthCustom_temp[i][1] = sg_lengthCustom[i][1]
sg_lengthCustom_temp[i][2] = sg_lengthCustom[i][2]
sg_lengthCustom2_temp[i][1] = sg_lengthCustom2[i][1]
sg_lengthCustom2_temp[i][2] = sg_lengthCustom2[i][2]
sg_lengthToggle_temp[i][1] = sg_lengthToggle[i][1]
sg_lengthToggle_temp[i][2] = sg_lengthToggle[i][2]
sg_gridToggle_temp[i][1] = sg_gridToggle[i][1]
sg_gridToggle_temp[i][2] = sg_gridToggle[i][2]
sg_gridToggle_display_temp[i][1] = sg_gridToggle_display[i][1]
sg_gridToggle_display_temp[i][2] = sg_gridToggle_display[i][2]
lp1_temp[i][1] = lp1[i][1]
lp1_temp[i][2] = lp1[i][2]
lp1_temp[i][3] = lp1[i][3]
lp1_temp[i][4] = lp1[i][4]
lp2_h_temp[i][1] = lp2_h[i][1]
lp2_h_temp[i][2] = lp2_h[i][2]
lp2_h_temp[i][3] = lp2_h[i][3]
lp2_h_temp[i][4] = lp2_h[i][4]
lp2_v_temp[i][1] = lp2_v[i][1]
lp2_v_temp[i][2] = lp2_v[i][2]
lp2_v_temp[i][3] = lp2_v[i][3]
lp2_v_temp[i][4] = lp2_v[i][4]
marker_flip_temp[i][1] = marker_flip[i][1]
marker_flip_temp[i][2] = marker_flip[i][2]
marker_flip_display_temp[i][1] = marker_flip_display[i][1]
marker_flip_display_temp[i][2] = marker_flip_display[i][2]
next i
! initialize new values, will be skipped when decreasing size
for i = sizetokeep + 1 to sg_noStoreyAbove
sg_lengthCustom_temp[i][1] = sg_length
sg_lengthCustom_temp[i][2] = 0
sg_lengthCustom2_temp[i][1] = 0
sg_lengthCustom2_temp[i][2] = 0
sg_lengthToggle_temp[i][1] = 1
sg_lengthToggle_temp[i][2] = 1
sg_gridToggle_temp[i][1] = 1
sg_gridToggle_temp[i][2] = 1
sg_gridToggle_display_temp[i][1] = "Show"
sg_gridToggle_display_temp[i][2] = "Show"
lp1_temp[i][1] = marker_length/4
lp1_temp[i][2] = marker_length/4
lp1_temp[i][3] = marker_length/4
lp1_temp[i][4] = marker_length/4
lp2_h_temp[i][1] = marker_length/4
lp2_h_temp[i][2] = marker_length/4
lp2_h_temp[i][3] = marker_length/4
lp2_h_temp[i][4] = marker_length/4
lp2_v_temp[i][1] = 0
lp2_v_temp[i][2] = 0
lp2_v_temp[i][3] = 0
lp2_v_temp[i][4] = 0
marker_flip_temp[i][1] = 1
marker_flip_temp[i][2] = 1
marker_flip_display_temp[i][1] = "Top"
marker_flip_display_temp[i][2] = "Top"
next i
! store array with new size
sg_lengthCustom = sg_lengthCustom_temp
sg_lengthCustom2 = sg_lengthCustom2_temp
sg_lengthToggle = sg_lengthToggle_temp
sg_gridToggle = sg_gridToggle_temp
sg_gridToggle_display = sg_gridToggle_display_temp
lp1 = lp1_temp
lp2_h = lp2_h_temp
lp2_v = lp2_v_temp
marker_flip = marker_flip_temp
marker_flip_display = marker_flip_display_temp
parameters sg_lengthCustom = sg_lengthCustom
parameters sg_lengthCustom2 = sg_lengthCustom2
parameters sg_lengthToggle = sg_lengthToggle
parameters sg_gridToggle = sg_gridToggle
parameters sg_gridToggle_display = sg_gridToggle_display
parameters lp1 = lp1
parameters lp2_h = lp2_h
parameters lp2_v = lp2_v
parameters marker_flip = marker_flip
parameters marker_flip_display = marker_flip_display
Snippet from this object.
Ling.
AC22-23 AUS 7000 | Help Those Help You - Add a Signature |
Self-taught, bend it till it breaks | Creating a Thread |
Win10 | R5 2600 | 16GB | GTX1660 |
2023-05-27 02:53 AM
You might want to add ;
sg_gridToggle = sg_gridToggle_temp
before ;
parameters sg_gridToggle = sg_gridToggle
2023-05-27 11:53 AM - edited 2023-05-28 12:55 PM
You could try resetting the parameter values with an empty array e.g.
Dim arrNull2 [1] [1]
arrNull2 [1] [1] = "initial value"
oldarray = arrNull2
parameters oldarray = oldarray
I have situations where my parameter arrays wouldn't downsize and rebuilding from an empty array seemed to cure it.
2023-05-29 04:02 AM
@Palawat You might want to add ;
sg_gridToggle = sg_gridToggle_temp
That was done just a few lines above.
@DGSketcher You could try resetting the parameter values with an empty array e.g.
Isn't that what DIM sg_gridToggle_temp[ ][ ] does? Or is there something else I should be doing?
Ling.
AC22-23 AUS 7000 | Help Those Help You - Add a Signature |
Self-taught, bend it till it breaks | Creating a Thread |
Win10 | R5 2600 | 16GB | GTX1660 |
2023-05-29 11:24 AM
I started doing that in order to force the original dynamic parameter array to shrink before repopulating it with updated values. Maybe Parameter Arrays are processed differently to simple variable arrays. Sorry I'm not a GDL expert and my solutions usually come from trial & error.