BOSL2 and dovetails

Please Login to Comment

Ok, i need help. I'm trying to create something like an "hook" (wrong term) with 2 dovetails in the opposite side, so that the object with the male dovetail could be fitted in both direction, normally and upside down.

The top dovetail is working, the bottom one seems a little bit too small, but i'm unable to figure out why.
Probably there is some bad measure that i'm using to create or position the dovetail.

Any help ? (the code is a mess, i've tried to clean a little bit for posting, but it's an extract from a bigger project)

main goal is to have the male dovetail with a little bit friction, easily movable by hand (but not by gravity) (i can change the female, but not the male, because it's already printed)

OK... here's a quick example of making something like what I think you want.

I didn't cut the opening in the block
I made no attempt to make things the same size as your example.
I didn't do any rounding or chamfering.
The sole purpose is to illustrate a fairly simple way to do it.

I first made the slider, then used the same module to scale it slightly smaller so it will fit.
The amount to scale would be best done on a trial and error basis on the machine you are going to print it with.
For that purpose, make the block and slider a lot shorter, separate test program with only the X dimensions changed.

include <BOSL2/std.scad>
//include <BOSL2/rounding.scad>
//include <BOSL2/joiners.scad>

back(20) scale([.99,.99,.99]) slider();

module block() {
difference() {
up(6) slider();

module slider() {
union() {

module dovetails() {
up(9) yrot(90) cyl(h=60,d=12,$fn=3);
down(9) xrot(180) yrot(90) cyl(h=60,d=12,$fn=3);

The technique i always use to fix things like this is just import the STL in blender :)
I made a screenshot for you and with this its easy to see the problems:
1 - You can see that the male part is extruded inside the female on the left for 0.8mm
2 - The others gaps are too much tight imo. With my Prusa MK3S (it depends on the printer precision) i usualy make 0.10mm or 0.15mm gaps when i need tight joint that can slide but with a little friction. The gaps 0.009mm, 0.04mm and 0.8mm are too tight, this is my opinion but you have to test.

Thank you lar3ry for the links to BOSL2.

If I were doing it, I would make the red part symmetrical, with a dovetail on both the top and bottom.

If you do that, and make it slightly larger than the one that will be printed separately, you can use it to make the slot in the cube, then make it again in the right size for printing.

I do think your code may be overly complex, though there may be considerations I am not aware of.

I'll see what I can come up with for you.

I'm not sure I can help, but you should post the include files or it makes it really hard to diagnose.

include <BOSL2/std.scad>
include <BOSL2/rounding.scad>
include <BOSL2/joiners.scad>

In many cases, posting the include files will serve only yo tell you what other include files are required.

BOSL2 is a huge library, and many include files call other include files.

It is also WELL worth putting BOSL2 into your OpenSCAD library folder.

You can get it at

The Wiki is a marvel, with a huge number of examples.