Diabolobox is an OpenSCAD box building library with 3D printing in mind.
- no screw, no glue needed !
- flat printing makes it easy to print and allows complex and neat cuts on any face of the box.
- strong joints with the dovetail-like diabolo shape.
- scales very well since everything is parametric. Want a micro box or a huge one ? You got it.
- easy customization through the OpenSCAD customizer and the panels modules.
- the box has a self-locking lid.
- ready to use optional vents are available. Just diff them with the panel :
diabolize_lr("right") difference() { db_panel("left_right"); vents(); }
- handy optional feets.
- optional pillars for printed circuit boards.
A box is a set of six panels which are connected together with rails and slides.
The connector shape is a variation around the good old dovetail joint (but it looks more like a diabolo, hence the name. Amazing, isn't it ?).
To get an easy print, the width of the rails matches the thickness of a panel.
All dimensions are calculated from inner or outer dimensions of the finished box.
Each panel is generated individually and can be customized. A built-in assembled view is available to adjust settings in a visual and easy way.
Just clone this repository to a location where OpenSCAD will find it.
Include the library in your work by using the well named include statement :
include <diabolobox/diabolobox.scad>;To get a nice 42 x 84 x 21 box, just use the following code :
include <diabolobox/diabolobox.scad>;
width = 42; // size along X axis
depth = 84; // size along Y axish
height = 21; // size along Z axis
thickness = 3; // panel thickness
flat = true; // toggle between print-ready and assembled 3D view
plain_box();Here are some other variables you can use:
edge_offset = 1.5; // left/right panel offset for top and bottom edges
corner_radius = 1; // rounded top and bottom angle. 0 to disable.
fit_clearance = 0.3; // assembly tighteness
inner_dim = true; // are width, depth and height outer or inner lengths ?You can of course have far more control on the box customization.
You can generate a blank panel with the db_panel module.
A blank panel does not have the diabolo joint system attached to it. Why not ? Because this is a convenient way to add or substract volume to the panel without bother with calculating offset due to the diabolo and rails.
The connectors are added by applying a diabolize_xx module to the panel.
here is a example on how to cut circle in the middle of a side panel :
diabolize_lr("left")
difference() {
db_panel("left_right");
translate([od/2, ih/2, -0.01]) cylinder(d=2, h=th+0.02);
}od, ih and th are variables you can use in your code.
They respectively stand for outer depth, inner height and thickness.
There some other variables like this, please refer to the source code to get the list and usage.
I would be glad to add more projects here, feel free to add your own by editing this file and make a pull request.
- Diabolopi: parametric Raspberry Pi cases.
The code is under GPLv3, fork it, modify it, use it, make pull requests and create issues !
This is GPLv3, please read the LICENSE file.


