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/