Triangular Blanket Extrusion

I assume this is the panel thickness.

Good grief :exclamation: I don’t have Lunchbox so looked at your Rhino file to find that most of your layers are empty except for ‘Layer 07’, which has three sets of what appeared to be triangular surfaces, so I started with one set of them… 270 breps.

It took me a long time to realize that these are extruded surfaces, not the triangular surfaces I want. :frowning:

If you (@Tristan_Ahlquist) can internalize the Surface param (output from Lunchbox?), I’ll take another look, unless you already have a solution. :cry:

P.S. I did some additional work to isolate the two largest surfaces of each brep and sort them by their X position, assuming that one is the base triangle and the other is the extrusion. When I zoom in I see gaps between these surfaces. Why?

Triangular Blanket (20.6 KB)

Martin / Alessio / Rajeev / Mohammad - Thank you all for the quick responses and helpful edits to the script. You all absolutely rock for taking a stab at it. Very impressed.

The thickness of our 12 ply Birch is 3/4" = The constant thickness I’m looking for in each panel.
@Joseph_Oster Preferably each panel will be fastened as a but joint with zero gap between. My desired method of joining panels is the “Lamello Zeta P2 P-System” seen below

Upon reflection… It seems unlikely to have a truly flat connection between panels… or even a flat surface from the secondary surface from the loft for that matter. IMO this could still work if panels are glued together at seams or fastened from behind.

Would be really interested if ya’ll had better ideas on how to make a seamless “Triangulated Blanket” surface that had no curves between joints. A direct panel-to-panel connection. Not married to just triangles either. Is a secondary structure inevitable?


Tristan, it’s right there. Just keep in mind that connecting all these panels with Lamello Zeta also means you have to assemble adjacent parts in perfect perpendicular direction. Zeta is good for anyting orthogonal but what you’re attempting here will be very complicated if not impossible with Zeta.

I’ve been there before.

Here’s a slightly more complex project I created:

Labyrinth @boulderhallebasel - Gallery - McNeel Forum

The miter surfaces in my definition are planar. But if the backside is never visible why don’t you cut all parts with let’s say -20° or -30° and use some good adhesive to glue all parts together using a waffle sub structure?


Thanks for the points you notified me
here is a different approach here the thickness is maintained and all the top is surface have same common edge

230806_Blanket (25.0 KB)

If you’re not married to the exact surface shape either you can try to approximate a panelization to a conical (torsion free) mesh, which would ensure planar thickness faces.

See this post by Daniel Piker for example:

He’s making the example with planar quad (PQ in short) meshes. Planarization and, ahem… “conicalization” (not sure if it’s a proper term) will move some points away from the original surface (there is a way of constraining the edge points to maintain the portal shape though), and the end result will depend on panel size, etc., but, if size and angle between panels remain within the interlocking system constraints, you should be able to use it without secondary structures.

1 Like

This is a very laborious flawed effort using Anemone to trim scaled offset triangles. It has four flaws where it appears to me that adjacent triangles are so close to co-planar that their intersections fail.

The clutter at the bottom left of the first image is diagnostic output that could be hidden. My method for examining each offset triangle is to disable both loop components (start and end, orange group) and move the wires connected to FastLoopStart ‘C’ (Counter) to the integer slider in the yellow group. This allows me to access each triangle separately to see its intersections.

Triangular Blanket (51.3 KB)

It takes the loop ~21 seconds to complete so there is a delay when opening the file or changing parameters. Not shown (because I just wrote it) is a simple ‘“unroll” / layout’ group.

The miter bevels are so slight that it’s probably not worth doing, as @martinsiegrist said. Glue or thickened epoxy would easily fill any gaps.

P.S. I used TriRemesh instead of Lunchbox to get the triangles. Curves to create the lofted base surface are internalized, no need for a Rhino file.

P.P.S. The best way to see the flaws is “preview mode” (green button).


Then select the FastLoopEnd and Tag components:

1 Like

Agreed - Lamello system along a curved system isn’t the answer here and something I doubt could work properly. Our team favored this system due to the speed of production → reduction in lead times. A -20° cut upon a waffle structure / foam backing / manually attaching torsion sides with adhesive are our next investigations.

Thank you for the reference this is great help. In square formations this might seem to work actually.

Thanks for taking a stab at it in another direction to validate the curved connections. Agreed - at such a small width, a mitered curved would be time consuming.

Working now on the following:

  1. Generate extruded panels w/ uniform angle
  2. Substructure that panels can drop into
  3. Square geometry option

Thanks everyone for the help!

What “uniform angle”? Especially since some triangles appear to require a reverse angle on miters. Might as well just make the edges square and deal with gaps, eh?

I used this code from @DanielPiker, posted here:

To produce very different code that is fast and looks accurate.

Triangular Blanket (49.3 KB)

As an afterthought, I added back components I didn’t use (yellow group at the bottom) that shows “dihedral angles” between faces, which range from -32.934998 To 17.201252 degrees with an average of -1.705997 degrees. The sorted list shows quite a few that are ±5 degrees or more.

I also modified the ‘“unroll” / layout’ group to use a grid:

P.S. Come to think of it, those “dihedral angles” in the yellow group are angles between face normal vectors so miter angles would be half of those values? The range is -16.5 To 8.6 degrees with an average of -0.853 degrees?
Triangular Blanket (46.8 KB)

1 Like

I wish I had thought of this before spending so much time constructing the mitered triangles :exclamation:

Seems to me what you want is the miter angles for each edge. Those are available directly from Daniel Piker’s code! I’m not sure what format you want for constructing mitered triangles but it’s all there.

Triangular Blanket (35.3 KB)

Increasing the TriRemesh ‘Length’ input reduces the number of faces. 12.2 looks good? 186 faces.

P.S. The word “Extrusion” in this thread title is misleading. Nothing is extruded.


@Joseph_Oster Thanks for the constant efforts

The panelization seems to navigate away from the desired scheme - a flowing pattern.
The “Extrusion” focus was that each panel would extrude to a depths of 3/4", which is seemingly not possible…especially with connections that are flat (no torsion).

“penalization” :question:

I don’t know what you are talking about. Extrusion was always the wrong word, you want to trim triangles of a certain thickness. If what I posted this morning is of no use to you, I give up :exclamation:

It’s certainly a big help as I work through this!
Since this is going onto a CNC that drills out the angles autonomously - is there a way to add the 3/4" thickness to each panel within the script that corresponds to the given angle shown?

Yes, I did that yesterday in version ‘Aug28a’. But thickness is irrelevant except for “nesting”. Do you understand any of this GH code?

What does that mean? That you prefer triangles from Lunchbox over TriRemesh triangles? As I said, I don’t have Lunchbox. Code I’ve posted should work with either method.

I added thickened mitered triangular panels to my version ‘Aug29a’ using a similar but different method to what I did in version ‘Aug28a’. Results are identical in volume. This method projects edges to face offset surfaces using Daniel Piker’s edge vectors and trims the offset surfaces with them.

As in version ‘Aug28a’, the big problem was handling the “naked edges” which are missing from Daniel’s code. All the edges and miters look good to me except where they meet adjacent triangles:

Triangular Thick Panels_2023Aug30a2

I’m not sure yet what’s going on there or how to deal with it? :thinking:

Triangular Thick (56.7 KB)

P.S. I added vertex normals (dark gray group at the top) from here:

I’m not using them, just showing them as white lines… This is a vertex at the edge, which I thought was a problem but now realize it’s just showing what happens at all vertices.

Triangular Thick (68.5 KB)

@Joseph_Oster Brilliant! The connected panels have a flat connection which was the major goal here! Huge thanks for solving that. I’m 4 years removed from Grasshopper, which was a priceless tool in graduate school. Jumping back into the waters again is taking some time.

The above image shows a comparison of how the panels connection creates a gradual “clean flow” to all sides. However, your solution seems to be the only way to achieve a flat connection without any torsion, which at this rate shouldn’t be an issue.

Might cut a 30degree miter in all panels as @martinsiegrist suggested to start this project immediately.

I had that two days ago in version ‘Aug28a’.

I don’t understand your issues with Lunchbox triangles vs, TriRemesh triangles :question: Doesn’t the code work with either one? Seven days ago I said this:

Again, I don’t understand this, sorry?

Here is a solution to vertex overlap on the back of this “shell”, though there may be a few areas of this base surface that are concave, creating overlap on some front vertices too? This is compute-intensive (which cooks my laptop!) so is disabled in the attached GH file. (3.8 minutes!!)

Triangular Thick (60.7 KB)

P.S. After closing Rhino and re-opening it, enabling the disabled slow bits, it takes 2.7 minutes, which is what I saw earlier. Apparently it slows down with repetition? :frowning:

1 Like

Good point! Using Lunchbox Triangle Panels B creates the desired pattern. The connection is not as consistent on the backside with Lunchbox, but this should be perfectly fine for the LaMelo System when measured + drilled from front face. Reason for this desire is the resulting light reflections as individuals navigate around the wall seen in the very first image.

That’s fantastic - Really need to brush up on my skills again!!! Thank you for the help. This should get our team to the finish line!

Your image shows the numeric labels are all zero? So you’ve done something wrong. I don’t like to repeat myself but if you internalize and post the geometry from Lunchbox, I can make it work.

Personally, I like the TriRemesh triangles better. :slight_smile:

P.S. Just in case you don’t know what I mean by “internalize”: