Dividing Surface into Planks for a timber boardwalk

I want to divide a surface into planks to create a boardwalk as seen in the reference image. The planks do not need to be the exact same and only need to follow the surface approximately.
Does anyone have any ideas on how this can be done in Rhino or Grasshopper.
Intermediate level user, just very stuck on the most efficient way to do this.

Hello - one way would be to draw a centerline curve in Top, Project this to the surface and then ArrayCrv or ArrayCrvOnSrf a single plank. This may be too regular and mechanical looking however.


1 Like

Hi Pascal, appriciate your reply
Tried this but where the turns are tight on the boardwalk, the planks start to intersect.
I’ve also tried converting the edges into straight-line sections and lofting in between but this seems time very time consuming and there is no gap inbetween planks (I have many boardwalks to create across a whole site)

This would still be a pretty fiddly way of approaching it but -

For the above pic, you have an s turn - one left and one right. You could divide those guide curves into two, so you’d want to treat each curve as its own segment of boardwalk. The crux here is the spacing on inside of each curve - so that the boards don’t end up overlapping. So for the “inside” curve, you’d want to divide the curve by LENGTH, using some length that’s a bit more than your board width. So you’d use Curve - Point Object - Divide Curve by - Length of Segments. Then you specify your board width, plus a little. Then, you need to divide up the other side by the same number, so you know where all your boards sit, relative to the guide curves - you can easily figure out how many segments you just made by selecting all the points you just created, realizing that number of segments is points minus 1. Then you use Curve - Point Object - Divide Curve by - Number of segments to divide the opposite curve.

This should at least solve the problem of “collisions” between adjacent boards. I’m hoping someone else can chime in with a way of flowing the boards across the points created.

ETA - You can then populate all your boards using Transform-Orient- 2 Points with Copy = Yes and Scale set to 1D. This is the fiddly bit, but the sort of thing you can do without too much mental strain. I totally get this might not be fast enough or automated enough, but it’ll get you there.

Thank you for your reply. It’s a very straightforward way of dividing the curves.
I managed to get something using the Flow command but the geometry is very dense. Any way of fixing this or stopping the Flow command from distorting the planks so much? I tried using QuadRemesh but it takes 10sec for each plank

1 Like

Do you have Rigid set to Yes in FlowAlongSrf? That might help with the density in the transformation.

Yes I did but I found with Rigid set to Yes, the spacing between the planks becomes too large.
This is the solution i found.
If I just flow a planar srf, it stretches uniformly. Then i can just extrude all at once.
I think this is a little time consuming but seems to give the best results.

Thank you to everyone that replied. Hope this helps others somewhat.

1 Like

Nice! That’ll do it for sure.