Welcome to the Onshape forum! Ask questions and join in the discussions about everything Onshape.

First time visiting? Here are some places to start:
  1. Looking for a certain topic? Check out the categories filter or use Search (upper right).
  2. Need support? Ask a question to our Community Support category.
  3. Please submit support tickets for bugs but you can request improvements in the Product Feedback category.
  4. Be respectful, on topic and if you see a problem, Flag it.

If you would like to contact our Community Manager personally, feel free to send a private message or an email.

CNC Corner Joint custom feature (update of Board Corner Joint feature)

hendrik_kueckhendrik_kueck Member Posts: 11 ✭✭
edited January 15 in FeatureScript
This is a custom feature for creating different types of CNC millable joints connecting two flat boards meeting at a 90 degree angle.
It is an update of Aaron Hoover's "Board Corner Joint" custom feature. 

Get the custom feature and read its documentation here

I was working on a custom stand for PowerBlock dumbbells I recently bought, with parts designed to be CNC milled from a plywood sheet. I was excited to find Aaron's FeatureScript and tried to use it to create the CNC compatible joints. However I found that it frequently failed if the boards where not extruded in a very specific way. This motivated me to learn FeatureScript and update and improve Aaron's script. 

The main differences from Aaron's implementation are:
  • It should be significantly more robust to the boards being extruded in different ways.
  • I added adjustable positioning of the overcuts (dogbones), which can be helpful for hiding them (see below).
  • Added an option to fillet the overcuts (for smoother CNC toolpaths)
  • Made finger joints symmetric (both ends are either tenon or mortise)
  • Fixed tenon and mortise being reversed for hammer joints.
  • Removed "fingertip tenons with key" joint type because it seemed broken to me. I didn't really touch the fingertip joint implementation otherwise. It definitely could be improved and made more consistent with the other joints in the future.
  • I simplified and modernized some of the code and removed all dependencies.
  • Added new PDF documentation
The new overcut positioning feature let's you control their placement relative to the joint's main axis using a value between 0 and 1:

I found that a value of 0 can be quite useful in practice for hiding the overcuts from the inside of the joint, or to completely hide them in the case of a joint between two boards in a T configuration.
I used this in the design of my weights stand to hide all of the overcuts. 

I hope others will find this useful. 


  • MichaelPascoeMichaelPascoe Member Posts: 1,482 PRO

    Fantastic! Thanks for sharing  B)

    Learn more about the Gospel of Christ  ( Here )

    🅲🅰🅳🆂🅷🅰🆁🅿  -  We make custom features and integrated Onshape apps!   CADSharp.com
  • hendrik_kueckhendrik_kueck Member Posts: 11 ✭✭
    I just updated the custom feature to version 1.2.

    I added the option to specify multiple tenon and mortise parts. Joints (of the specified type and using the same parameters) will be created between each pair of a tenon and mortise part. This requires each tenon part to intersect each mortise part at a 90 degree angle. Either at a corner, or in a T configuration. 

    I also added a new "Edge offset / margin" parameter that lets you control the width of the tenon or mortise bits at the ends of the joint:

    Finally I further improved robustness (fixed failure cases), especially for through joints and lapped and secret joint types. 

    Updated documentation is here
Sign In or Register to comment.