On 14.11.2009 18:03, Mahadev Ittina wrote: > $array_floor = [] > for i in (0..7) > for n in (0..8) > $array_floor [n,i] = [i*var1,0.0,n*var2] > end > end > > I am trying to create a array, which basically forms a grid, which is > evenly spaced in a Cartesian plane. The spacing is var1 and var2, in the > x and z directions. Plan is to copy columns on these 'points', which is > done in Sketchup using Ruby API scripts. So there are going to 8 and 9 > columns respectively, and there are points when n = i, where there will > be common columns. > > This is not working out for me very well. It makes sense to me, somehow > it doesn't seem to be working (it returns with no values).Any > suggestions? And If I want floors to this array, i.e. making it 3D, how > will it work? $array_floor[n,i]=... does not assign to a two dimensional Array. Rather, it assigns to a portion of the array: irb(main):004:0> a=(1..10).to_a => [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] irb(main):005:0> a[3,2] = 555 => 555 irb(main):006:0> a => [1, 2, 3, 555, 6, 7, 8, 9, 10] irb(main):007:0> Here's another option array_floor = Array.new 7 do |i| Array.new 8 do |n| [i,0,n] end end Note though that this will create a three dimensional matrix. Btw, for structures like this "pp" is a useful utility for printing: require 'pp' pp array_floor Kind regards robert -- remember.guy do |as, often| as.you_can - without end http://blog.rubybestpractices.com/