Automating lap joints for fabrication?

I’m working with a lot of profiles like below for grid shell members up to 11m in length, to be built from two glued layers of plywood. I made this script to alternate the lap joints between the holes, this is the most structurally sound but results in 250+ unique length parts since the holes aren’t at regular intervals, I also end up with a handful of parts that a longer than the 2.5m plywood. Looks pretty but it’s a total failure in optimization since these will be cut and drilled manually and not on a CNC.

Original profile example:

My first attempt at generating laps:

Would love to hear some suggestions on a better method. I’ve attached the gh with just internalized curves (profile, holes, hole diameter) and my script (internalized) but I may have used some weird components. Because of school I have 40+ grasshopper plugins now, hard to know what I’m grabbing from where.

lap joint script - just (16.7 KB)
lap joint (40.3 KB)

this leads me to think you have plywood layers which are already cut into standard length 2.5 meters
I would seriously take full advantage of that :slight_smile:

I would first glue plywood strips together in such a way they can all “contain” the length of your elements, like this:

as all the final elements will be connected together (I assume where the holes are located) I honestly would not give too much weight on the thing that a hole might fall very close to a seam, but you can always correct that for that single element by -for instance- using shorter elements which are 1.2+1.3 meters instead of 1.25+1.25

does this look reasonable? for sure it would make life much easier :slight_smile:


Thanks @inno was hoping to report back a success but it’s feels pretty impossible to come up with a good solution that finds a balance between minimizing unique lengths and avoiding holes. It also makes the end joints very weak.

I think my original approach is still the most valid because it leaves a lot of room for error. Ultimately we just need to reach a fully joined member length that is solid once laminated and picking points center-ish between holes leaves a lot of wiggle room for measuring and drilling.

What I think I need to do is take the results from my original script and apply a solver to minimize unique lengths by shifting the breaks slightly up and down but still mostly centered. I’m not sure how to accomplish that. I used Gene Controller and Gene Pool to generate positive and negative Y movement for each set of members but I’m not very good with Galapagos, guessing Point Closest Point (joint curve mid points and hole centers) is the key. That target lengths would have to be synced among all members though.

Kind of like how I had high hope for Divide by Target Length in Wombat but the resulting length varies slightly between members.

what do you mean with “weak”?

is there a minimum length you want the shortest end-parts to be? (I mean these)

and what is the minimum acceptable distance “d” you are willing to allow between the center of any given hole and its closest seam-join?


Well I’m dealing with some restraints I really dislike, this is for an architecture grad school project (grid shell) our team is building this week. Due to budget and time constraints everything is being manually fabricated rather than CNC cut. I have fabrication experience but I’m attending remote. My goal here is to try and make the best of what we’ve got. That means finding a balance between maximizing overlaps (in my original script) and finding common lengths. I don’t really have an acceptable distance in mind, just as good as it can get.

Using meters though, ideally something like .5 between laps and at least .5 for minimum section length on the ends. Trying to work out a Galapagos solution.

EDIT: The biggest deal tho, is not going over 2.5m in length and not directly hitting any holes with joints.

Ok I think we finally got it, I’ll post the gh once it’s cleaned up a bit. We used Galapagos and Gene Pool w/ a Controller to generate the best solution under these constraints. The joints are still a little closer than I’d like to the holes but it’ll do.

1 Like