The first day of school, my middle school art teacher set down a box of drawing supplies and asked everyone to draw a rectangle. Some kids used markers, others pencils, some picked up their pen between each line, some did it all in one go, etc. He explained that even though the results were largely the same (we all had a rectangle) we had used different tools and approaches to get there. With that in mind, I'm going to talk about writing a script to help expedite my latest freelance project.
The project itself is very simple: A local ceramics company, Heath Ceramics, asked if I could draft up the patterns of their tile offerings as a resource for designers. The patterns would be a simple 10'x10' grid with the various size and pattern offerings from their collections. After some back and forth to lay out the scope of the project, I started with the simple stuff. The Classic Field Collection is made up of mostly rectangular tiles, with 2 hexagon sizes. While there are many ways to layout tiles, we decided for now to stick with 2 of the more common patterns: Stacked and Running Bonds.
As I proved in middle school, I'm perfectly capable of drawing a rectangle, but to do so a million times (even with drafting software) is a little tedious. Instead, I chose to use this exercise to practice building scripts in Grasshopper. Here's the script I ended ended up using to export both stacked and running bond patterns in 10'x10' fields for various size tiles.
I'll see if I can do a brief, summary/translation for what's going on here: The yellow panels are my areas of input for tile dimensions and other given constants (1/8" Grout, 10' boundary box.) I add the grout width to each dimensions and plug those numbers into the X and Y input of a rectangular grid (RecGrid
.) I divide 120 (10 ft in inches) by the width and height, round down, and subtract 1 to get the number of tiles will fit in the boundary in each dimension. I plug that into RecGrid
as the number of cells in the grid. The P
(for point) output gives me each vertex in the grid, which I use to draw a rectangle of dimension width and height. Since the size of the grid cell is increased by an 1/8" the rectangles are created with equal spacing for the grout. I can bake
(export to Rhino) these rectangles to get the stacked bond. The running bond is a little more tricky. Without getting into the nature of grasshopper data trees, lets say I needed to switch the X and Y of my grid. The the split
module selects every other row (I had to learn about path mapping/selection for this.) I then shift each selected row over by half the dimension of tile width + grout. Combining these rows with the un-shifted rectangles in the Geometry
tab gives me an easy combined collection of rectangles for baking my running bond.
Kudos to you if you got through all of that and understood it. I'm sure there are a bevy of different ways to make these patterns in grasshopper, just like there are plenty of ways to draw a rectangle, but this happened to be the script method I chose. It works, so I'm satisfied.
bevy.
nice.