AnsweredAssumed Answered

problem reusing (global) variables in different parts of CGA code

Question asked by mdekys_bagira on Feb 16, 2017
Latest reply on Oct 26, 2017 by CLau-esristaff

Hello, I am having a problem while setting a variable in one part of code and then reusing it in another part of code:

 

let's say I have a simple square footprint shape and I use following rule on it:

 

attr counter = 0
Lot -->
set(counter,counter+1)
set(counter,counter+1)

print (counter)

 

and it works pefectly fine and print returns:

2

 

when I try to use it from two different parts of code e.g. Lot and Cube

 

attr counter = 0


Lot -->
set(counter,counter+1)
print("output from Lot: "+counter)
extrude(3) Cube(counter)

 

Cube(cnt) -->
set(counter,cnt+1)
print("output from Cube: "+counter)

 

it also works fine (because I passed the variable from one rule to another in as an argument )  and the otuput is:

output from Lot: 1
output from Cube: 2

 

but when I extend the previous rule so that:

 

attr counter = 0


Lot -->
set(counter,counter+1)
print("output from Lot: "+counter)
extrude(3) Cube(counter)

 

Cube(cnt) -->
set(counter,cnt+1)
print("output from Cube: "+counter)

comp(f){side:Sides(counter)}

Sides(cnt) -->
set(counter,cnt+1)
print("output from Sides: "+counter)

 

I get the output:

 

output from Lot: 1
output from Cube: 2
output from Sides: 3
output from Sides: 3
output from Sides: 3
output from Sides: 3

 

and I'm expecting output:

output from Lot: 1
output from Cube: 2
output from Sides: 3
output from Sides: 4
output from Sides: 5
output from Sides: 6

 

because I expect that Sides(cnt) part of a code runs 4 times (for each face of the box) thus each iteration will increment counter by 1

 

another weird thing is that the mentioned attribude value doesn't change in Inspector:

 

any ideas?

 

thanks,

Marek

Outcomes