Option Explicit
Call Main()
Sub Main()
	Dim testhex, testOrigin, testSize, testIter
	testOrigin = Rhino.GetPoint("Center point of grid")
	testSize = Rhino.GetReal("Grid size", 2, 0.1)
	testIter = Rhino.GetInteger("Number of Iterations", 5, 1)
	testhex = hexGrid(testOrigin, testSize, testIter)
	' Rhino.SelectObject testhex(3, 5)
End Sub

Function hexGrid(ptOrigin, intSize, intIter)
	'**************************************************************
	' Purpose: Draw hexagonal grid
	' Inputs : ptOrigin: Origin point of the grid
	'          intSize: Size of grid cells
	'		   intIter: Number of iterations
	' Returns: A 2-dimensional array of grid cells (polygons)
	'**************************************************************
	Dim hexReturn(100,100), hexOrigin, hexOrigin2, i, j, arrPly(100), arrHex(100)
	hexOrigin = Rhino.MovePlane(Rhino.WorldXYPlane, ptOrigin)
	hexReturn(0, 0) = Rhino.AddPolygon(hexOrigin, intSize, 6, True)
	For i = 1 To intIter
		arrPly(i) = Rhino.AddPolygon(hexOrigin, intSize * 1.5 * i, 6, False)
		arrHex(i) = Rhino.DivideCurve(arrPly(i), i * 6, True, True)
		Rhino.DeleteObject arrPly(i)
		For j = 0 To (i * 6) - 1
			hexOrigin2 = Rhino.MovePlane(Rhino.WorldXYPlane, arrHex(i)(j))
			hexReturn(i, j) = Rhino.AddPolygon(hexOrigin2, intSize, 6, True)
		Next
	Next
	hexGrid = hexReturn
End Function