You could do this all sorts of ways. Pattern generation is simply an image, so you could draw an image and query for pixels in the image. If you're going to be doing all sorts of shapes, I'd use a generic system that could take drag and drop textures.
You could do programmer art with an array...
var positions =
[
[1,0,0,0,0,0,0,0,0,0],
[1,1,0,0,0,0,0,0,0,0],
[1,0,1,0,0,0,0,0,0,0],
[1,0,0,1,0,0,0,0,0,0],
[1,0,0,0,1,0,0,0,0,0],
[1,0,0,0,0,1,0,0,0,0],
[1,0,0,0,0,0,1,0,0,0],
[1,0,0,0,0,0,0,1,0,0],
[1,0,0,0,0,0,0,0,1,0],
[1,1,1,1,1,1,1,1,1,1]
];
for (i = 0; i < 10; i++)
{
for (j = 0; j < 10; j++)
{
var xpos = i * 10;
var zpos = j * 10;
if(positions*[j] > 0)*
*{*
*var instanceObj = Instantiate(myBox, Vector3(xpos, 0, zpos), Quaternion.identity);*
*}*
*}*
*}*
*```*
*<p>Loop through the array and check if an integer is not zero. You could expand that to use different integers for different object types. Of course, you could do that with an image and the rgba values. :)</p>*