Parametric Japanese Timber Joinery for post and beam construction

This one adds a ‘Construction Plane’ at the top (light blue group), with Yaw, Pitch and Roll sliders to position the work - the two crossed beams and the “cutting tools” that slice them. (43.0 KB)

Still want those trim cuts (yellow group) to be separately optional…

Later, got it! Lime green group ‘Optional Trim’ has toggle switches to choose between untrimmed or trimmed beams, before applying cutting tools (SDiff not shown below). (42.5 KB)


Nice job for two pieces!
How could we implement the different corner junctions of an assembled frame according to priorities defined for example with a Boolean button (priority / no priority)?
The exterior shape of the frame could be defined by a polyline for example?

:star_struck: awesome stuff Joseph! Thanks so much. Your script is giving me hope that it’s not an impossible mission. The planar split you’re doing seems to be a good way to go about trimming excess.

I also really like the tree/ List viewer script you’re using, I’ll definately keep using that. :slight_smile:

I’ve been distracted by how to make a “timber” frame from a wireframe sketch (as suggested by @martynjhogg) so haven’t spent much time on the joinery part. My script takes a wireframe (line or mesh) and makes a brep for each.

2019 Parametric Joinery Dev01.3dm (77.8 KB) 2019 Parametric Joinery (9.3 KB)

@Philippe_HAMON how would that matrix be generated? by calculating proximity of the start/end points of lines in space? Or a button for each joint?

I am thinking to detect collisions between BReps and then, for each collision, use the vector of the underlying line to calculate the joinery geometry…

Or possibly use the start/end points for each join as way of working out how many members intersect, by selecting points that occupy the same point in space and then get the lines they’re attached to and use that info…

Eventually you could possibly check to see if there’s a specific vector set for a join and if so use a specific joint… . (e.g. one joint has three colliding members with one underneath so a 3-way joint with the bottom joint bearing the weight is used… )

I can’t open your R6 file in R5: 2019 Parametric Joinery Dev01.3dm
You could internalize your ‘Geometry’ in the GH file instead of relying on the .3dm file?

Just looking at this image, I see three distinct types of connections, circled in white below. All others on this structure appear to be one of these three, oriented in different ways?

  • Corner
  • Face middle
  • Edge Middle

These pages have great imagery:


Also think about what output you need from this project. If your goal is to manufacture on a 6-axis robot then what input does this need for programming? Is it programmed from solids or planes, lines and arcs?

Perhaps you can generate planes, lines and arcs at points along each strut that give you all the info you need to program the robot?

It’s programmed from solids. The general process would be:

  1. Create solid geometry in Rhino.
  2. Use CAM software (maybe powermill?, but it’s very expensive) to generate machining paths
  3. Use machining paths with RoboDK to control actual robot

Possibly, later on, have an aditional step with the robot and doing automated photogrammetry of the work piece, but yeah that’s a year or two away…

Thanks for the the links. I’ve seen the GIFs before, but not the TimberframeHQ site. :+1:

You are correct, but there are an almost infinite amount of joints possible, best to just to attempt to deal with members meeting at 90deg to start with and go from there.

Here’s a version with internalised geometry.
2019 Parametric Joinery (13.7 KB)


Can you give a reference of the paper that you posted the picture from?

Have you looked at Fusion360?

Here you go.

Yes I have looked at fusion360. It doesn’t really do what grasshopper does with regards to scripting.

It does 5-axis milling paths, but I haven’t really tested that feature out. I do like it tho. It has a great UI

I wonder in anyone is working in something like RiF, similar to RiR ( so you can have Grasshopper-driven geometry inside Fusion and then do your toolpath work from within Fusion.

I don’t see any 5-axis toolpaths here, though.

It’s indexed 3 axis or indexed 4 axis.

I don’t see many examples where you’d need to be moving through all five axes simultaneously.

Fig. 6 can be done on any machine with a C-axis aggregate.

This cobbles together some bits used previously to explore the scarf joint. Rather simple until you get into its variants.

Scarf Joint With A Wedge has two wrinkles: 1) the scarf surfaces interlock, requiring two levels on each block and 2) the wedge (or pair of wedges).

The best example I found was this one: Undersquinted wedged scarf joint

Complicated! So I looked at an easier one: Post or Rafter Scarf Joint (45.4 KB)

P.S. More variants of the scarf joint - precise and invisible, fine craftsmanship!

And with hidden pegs:


Just a heads up: the angle in the middle is too acute to be cut with a CNC router unless you either do a finish pass with a V-bit, set at an angle or you fillet the inside corner.

Are we talking about a 6 axis robot with a tool changer on it?

That is the end goal. No tool changer yet, a bit out of my price range.

An interesting plugin for timber joints is out from food4rhino and looks very promising. I tested the sample files, it gives a lot of ideas!


Japanese Timber Joints

I saw this yesterday and it’s quite relevant to some of the discussions that have cropped up on this forum.

I haven’t tried the software yet but it’s free apparently.

I would need to convert my CNC to be able to hold beams vertically to machine the ends to make use of this software but it looks like they have thought of everything in terms of angles, number of members meeting at nodes, router cutter radius, friction surfaces etc etc etc.

Check it out and if you remember any of the other timber joint discussions on here perhaps share the link on those too.


1 Like

Thanks for the info Martyn. Finally getting my robot up and running again. Good to see some new research being done. :slight_smile:

1 Like

This could be particularly good if you have a robot as you could machine the ends and faces on the same setup by holding the timber flat and in the centre with access to each end so machining sets the length of the timber too.

I couldn’t get the software set up but it looks like everything is provided to do so if you know what you are doing (I don’t :slight_smile: )