algorithmic modeling for Rhino

Hi everyone!

I've been using grasshopper for a couple of months, and wanted to start a project that would be useful for others too.

I've built a floor generator, that given a base surface and the measurements, will generate the different planks of a wooden floor, or it can be used to generate tiles and other things:

Here's what the definition looks like:

Basically, I take the base surface, calculate how many planks in each direction I will need to cover it, create a rectangular grid, offset some rows in a random distance either way, trim the excesses using the original surfaces outline and extrude the resulting cells.

This works fine for planar surfaces and orthogonal directions, because all the movements I do I do them using x, y and z vectors.

What I would like to do next, is convert the definition so that the coordinate system is derived from the base surface, so I can also tile walls and ramps.

Can anyone give me a hand with that?

thanks a lot!

Views: 4922


Replies to This Discussion

Hi Alejandro,

I think I would use the evaluate surface component for that. If you create a grid of points inside a 1x1 square, you can apply the points on the surface UV with the evaluate surface component.

Hope this helps!

This version gets rid of the 3D "BBox" features and sticks to the 2D plane of origin.

P.S.  Shapes are internalized, no need for any Rhino file.


P.S.  I fixed some, not all issues related to the tiling of floorboards...  One of them was returning the gap-shifted rectangles to the original plane so the intersection could work properly.  Another seems to be round-off error - insufficient coverage; possible intersect errors?  Maybe a better way to get the brick/gap pattern?


The edge problem was easily fixed using sliders you already had, offsetting the first brick floorboard between -1 and zero instead of -0.5 and +0.5.


Thanks a lot Joseph!

I took your modificartions, and added a deconstruct plane to get the x and y vectors, and now it works with surfaces on any direction, even vertical walls.

thanks again!


Hi Joseph,

is it possible to apply this to a curved surface using variable length planks where the curvature of the surface was tighter?



Well, this code obviously assumes a planar surface...  And if you want plank lengths shorter where curvature is high and longer where curvature is low, then just mapping the planar result to a curved surface won't work.

So I would start with a curved surface and divide it first into full length planks of a given width.  Then I would split those planks based on curvature...  But there are details to work out!!  The staggered pattern, minimum and maximum lengths, etc.

I started to mess around with it but don't have a clear vision in mind and don't have time today to play with it any further.


This is interesting! Im intermediate with grasshopper but I don't understand how you would split based on curvature and have interlocking "courses". Any advice?Im trying to do a Yokohama Passenger Terminal type wood plank on a vertical helix platform. I can send you files

How can I make a bevel?







  • Add Photos
  • View All

© 2020   Created by Scott Davidson.   Powered by

Badges  |  Report an Issue  |  Terms of Service