Skip to content

Tutorial simple_boxes

pinkfish edited this page Mar 20, 2026 · 13 revisions

Create simple boxes with simple cutouts.

Sliding boxes

Simple box

Create a sliding lid box with a cut of the entire inside of the box. This also makes the matching sliding lid.

include <boardgame_toolkit.scad>

money_thickness = 10;
money_length = 134;
money_width = 60;
wall_thickness = 2;

money_section_width = money_width + wall_thickness * 2;
money_section_length = money_length + wall_thickness * 2;
top_section_height = 20;

module SquareBox()
{
    MakeBoxWithSlidingLid(size = [money_section_width, money_section_length, top_section_height])
    {
        cube([ money_width, money_length, top_section_height ]);
    }
    text_str = "Square";
    translate([ money_section_width + 10, 0, 0 ]) SlidingBoxLidWithLabel(
        size = [money_section_width, money_section_length], 
        text_str = text_str);
}

SquareBox();

Figure 1

Simple box, rounded cutout

include <boardgame_toolkit.scad>

money_thickness = 10;
money_length = 134;
money_width = 60;
wall_thickness = 2;

money_section_width = money_width + wall_thickness * 2;
money_section_length = money_length + wall_thickness * 2;
top_section_height = 20;

module TokensBox()
{
    MakeBoxWithSlidingLid(size = [money_section_width, money_section_length, top_section_height])
    {
        RoundedBoxAllSides([money_width, money_length, top_section_height], radius = 10);
    }
    text_str = "Tokens";
    translate([ money_section_width + 10, 0, 0 ]) SlidingBoxLidWithLabel(
        size = [money_section_width, money_section_length], 
        text_str = text_str);
}

TokensBox();

Figure 2

Simple Box with finger cutout

Create a sliding lid box with a cut of the entire inside of the box, adding in a finger cutout to access the cards.
This also makes the matching sliding lid.

include <boardgame_toolkit.scad>

money_thickness = 10;
money_length = 134;
money_width = 60;
wall_thickness = 2;

money_section_width = money_width + wall_thickness * 2;
money_section_length = money_length + wall_thickness * 2;
top_section_height = 20;

module MoneyBox()
{
    MakeBoxWithSlidingLid(size = [money_section_width, money_section_length, top_section_height])
    {
        cube([ money_width, money_length, top_section_height ]);
        
        translate([ money_section_width / 2 - 15, 0, top_section_height - 20 ])
            FingerHoleBase(radius = 15, height = 20);
    }
    text_str = "Money";
    translate([ money_section_width + 10, 0, 0 ]) SlidingBoxLidWithLabel(
        size = [money_section_width, money_section_length], 
        text_str = text_str);
}

MoneyBox();

Figure 3

Simple box with 2x2 compartments

Creates a box with a 2x2 grid compartments.

include <boardgame_toolkit.scad>

money_thickness = 10;
money_length = 134;
money_width = 60;
wall_thickness = 2;

money_section_width = money_width + wall_thickness * 2;
money_section_length = money_length + wall_thickness * 2;
top_section_height = 20;

module GridBox()
{
    MakeBoxWithSlidingLid(size = [money_section_width, money_section_length, top_section_height])
    {
        RoundedBoxGrid([money_width, money_length, top_section_height], rows = 2, cols = 2, radius = 4, all_sides = true);
    }
    text_str = "Grid";
    text_width = 80;
    translate([ money_section_width + 10, 0, 0 ]) SlidingBoxLidWithLabel(
        size = [money_section_width, money_section_length], 
        text_str = text_str,
        label_options=MakeLabelOptions(text_length = text_width));
}

GridBox();

Figure 4

Tabbed Boxes

Simple tabbed box

Create a tabbed lid box with a cut of the entire inside of the box. This also makes the matching tabbed lid.

include <boardgame_toolkit.scad>

money_thickness = 10;
money_length = 134;
money_width = 60;
wall_thickness = 2;

money_section_width = money_width + wall_thickness * 2;
money_section_length = money_length + wall_thickness * 2;
top_section_height = 20;

module TabbedBox()
{
    MakeBoxWithInsetLidTabbed(size = [money_section_width, money_section_length, top_section_height])
    {
        cube([ money_width, money_length, top_section_height ]);
    }
    text_str = "Tabbed";
    translate([ money_section_width + 10, 0, 0 ]) InsetLidTabbedWithLabel(
        size = [money_section_width, money_section_length], text_str = text_str);
}

TabbedBox();

Figure 5

Capped box

Make a lid and base for a capped box.

include <boardgame_toolkit.scad>

canvas_piece_box_width = 41;
canvas_piece_box_length = 73;
canvas_piece_box_height = 29;
wall_thickness = 3;

MakeBoxWithCapLid(size = [canvas_piece_box_width, canvas_piece_box_length, canvas_piece_box_height], 
                    wall_thickness = wall_thickness, lid_thickness = 2,
                    lid_finger_hold_len = 14)
    RoundedBoxAllSides([canvas_piece_box_width - wall_thickness * 2, canvas_piece_box_length - wall_thickness * 2, canvas_piece_box_height], radius = 5);

Figure 6

Slipover box

Make a lid and base for a slipover box.

include <boardgame_toolkit.scad>

canvas_piece_box_width = 41;
canvas_piece_box_length = 73;
canvas_piece_box_height = 29;
wall_thickness = 3;

MakeBoxWithSlipoverLid([canvas_piece_box_width, canvas_piece_box_length, canvas_piece_box_height], 
        wall_thickness = wall_thickness, lid_thickness = 2)
    RoundedBoxAllSides([canvas_piece_box_width - wall_thickness * 2,
                        canvas_piece_box_length - wall_thickness * 2, canvas_piece_box_height],
                        radius = 5);

Figure 7

Sliding Catch box

Make a lid and base for a sliding catch box.

include <boardgame_toolkit.scad>

canvas_piece_box_width = 41;
canvas_piece_box_length = 73;
canvas_piece_box_height = 29;

MakeBoxWithSlidingCatchLid([canvas_piece_box_width, canvas_piece_box_length, canvas_piece_box_height])
    RoundedBoxAllSides([$inner_width, $inner_length, canvas_piece_box_height], radius = 5);

Figure 8

Magnetic box

Make a lid and base for a magnetic box.

include <boardgame_toolkit.scad>

canvas_piece_box_width = 41;
canvas_piece_box_length = 73;
canvas_piece_box_height = 29;
wall_thickness = 3;


MakeBoxWithMagneticLid([canvas_piece_box_width, canvas_piece_box_length,
                    canvas_piece_box_height], wall_thickness = wall_thickness, lid_thickness = 2,
                    magnet_diameter = 5, magnet_thickness = 1) {
    intersection() {
        MakeBoxWithMagneticLidInsideSpace([canvas_piece_box_width, canvas_piece_box_length, 
            canvas_piece_box_height], magnet_diameter = 5, magnet_thickness = 1);
        RoundedBoxAllSides([canvas_piece_box_width - wall_thickness * 2,
                            canvas_piece_box_length - wall_thickness * 2, canvas_piece_box_height],
                            radius = 5);
    }
}

Figure 9

Rabbit Clip box

Make a lid and base for a rabbit clip box.

include <boardgame_toolkit.scad>

canvas_piece_box_width = 41;
canvas_piece_box_length = 73;
canvas_piece_box_height = 29;
wall_thickness = 3;


MakeBoxWithInsetLidRabbitClip([canvas_piece_box_width, canvas_piece_box_length,
                    canvas_piece_box_height], wall_thickness = wall_thickness, lid_thickness = 2) {
    RoundedBoxAllSides([canvas_piece_box_width - wall_thickness * 2,
                        canvas_piece_box_length - wall_thickness * 2, canvas_piece_box_height],
                        radius = 5);
}

Figure 10

Hinge box

Make a box with a hinge in it, the hinge and box are in the same print, this is a print in place box.

include <boardgame_toolkit.scad>

canvas_piece_box_width = 41;
canvas_piece_box_length = 73;
canvas_piece_box_height = 29;
wall_thickness = 3;

MakeBoxAndLidWithInsetHinge([canvas_piece_box_width, canvas_piece_box_length,
                    canvas_piece_box_height], wall_thickness = wall_thickness, lid_thickness = 2) {
    // Box section.
    RoundedBoxAllSides([canvas_piece_box_width - wall_thickness * 4,
                        canvas_piece_box_length - wall_thickness * 2,  canvas_piece_box_height],
                        radius = 5);
    // Lid section.
    cube([canvas_piece_box_width - wall_thickness * 4,canvas_piece_box_length - wall_thickness * 2,canvas_piece_box_height]);
}

Figure 11

Clone this wiki locally