Generating planar bench slats based on two profile curves

Hi everyone!

I’m looking for your thoughts on how to fabricate this kind of a bench. The method is that I control base 3d cuves to get the rails for the shape and than generate the planar wooden slats that sit right on top of it. The slats don’t need to be evenly distributed nor the spacing between them needs to be exacly the same.
Problem that has ocured during the proces is that this method generates non-planar geometry of the slats which is not suitable for the basic carpentry production (curved surfaces are not an option!).
Any ideas on how to do this, and if its doable at all without compromising the shape too much?
In fact, the slats can be triangular in some places if that solves the curvature problem.

Thanks very much for any input.

Here are some pics of what I have and how it should look like. Files attached. Cheers!

klupice.3dm (303.0 KB) (27.5 KB)

Thanks @Joseph_Oster

took a guick glance through the materials you linked. I’m affraid all those consider steam bending or natural bending of thins strips of wood. I’m looking to produce planar slats about 1,1/2-2" thick (4-5cm).


Seems to me that the only way to get planar slats is using triangles. Neither of the methods I tried (which are very similar) worked as well as I had hoped. Perhaps with more effort…? (21.7 KB)

Two curves are internalized, no need for Rhino file.

P.S. Version ‘a’: (16.1 KB)

1 Like

Yes Joseph, I had something similar on my mind. Here’s what I came up with.

Do you know any method that could divide initial curve by uneven spacing, eg. curvature parameter or anyithig else?

@Andres Are you still interested in a method which does not require triangles?

It is based on finding “no twist” lines between the curves, then creating planes through those lines which are perpendicular to the curves at the end of the lines, and then triming the planes. The “no twist” lines are the same as the ruling lines of a developable surface between the curves. I can provide more details including example in Rhino if there is interest.

Of course there is interest! Would be great if you use the two curves that @Andres has provided as the basis for your solution.

An interesting challenge. I managed to come up with an Anemone loop that draws polyline segments whose length is restricted by the distance between their midpoints and the curve. (white group)

Many caveats though…

  1. The loop handles only one curve at a time so the procedure is to internalize the polyline result for each curve before proceeding to “Step 2” (the cyan group) where the slats are extruded.
  2. Manual adjustment of a slider is required to get the same number of points (segments) for both curves.
  3. The Loft and Extrude that creates the slats is less than satisfactory, in part because the slats interfere with each other at the concave (middle) area of the curves. (36.4 KB)

The polyline segments from the Anemone group are shorter where there is more curvature, which is cool, but there is no provision for gaps between the slats, which is bad.

1 Like

Here is an amusing alternative to the cyan group that avoids triangles and has an adjustable gap between the slats. Some of the slats are slightly twisted though - known as “tortured” in boat building. (35.4 KB)

1 Like

it would be great if you could share the definition. Sounds interesting…

that is something similar with what I was getting the first time I started, with the exception that I was using fit curve component and control points to generate points on curve based on curvature. You’re using anemone which probably gives more “accurate” result but still - in bots methods - we both have to adjust the tolerance to get even number of points on both curves. Anyway, quads won’t work if they’re not planar.

The definition in the post I find quite satisfactory. I’ve managed to control the spacing of the slats via eval_crv component and than arranging those in the lists ready for creating a polyline and than extruded. Looks quite clean. There’s also a solution with triangle vertices pulled torwadrs the “spine” of the bench. (47.9 KB)

I’d still love to see Davids’ solution with planar quad slats.

1 Like

Here are some improvements to version ‘c’ that I posted yesterday, including an adjustable gap between the slats. As before, the Anemone loop (white group, included but not shown) is used once for each basis curve to get internalized polylines. The segments are shorter where there is more curvature, longer where there is less.

The two results are shown below in the yellow circles, pLine1b and pLine2b. The basis curves are from your latest post, which I noticed are different from what I used yesterday. The resulting slats are better, less skewed due to smaller differences in curvature between them.

The ‘Basis’ Value List (blue group) offers a “moved crv” option which replaces pLine2b with a moved copy of pLine1b. (35.3 KB)

Note: I use Rhino but don’t use Grasshopper. The information below references Rhino commands.

Method for finding “no twist” lines between two curves. If a flat surface can be laid along these lines and be tangent to both curves simultaneously. Developable surface - exact ruling lines from edge curves No twist lines may not exist between two curves, or between portions of two curves.

These surfaces show the only portion of Andres’ curves which can have a planar board laid which is tangent to both curves. The surfaces were determined using a combination of the method linked above, copying and splitting the curves, the DevSrf command, and considerable experience.
klupice_DC01.3dm (468.2 KB)

I’ll try to find time to explain a method for creating a faceted surface where possible with each facet tangent to both cuves.