Skip to content

components.scad

pinkfish edited this page May 7, 2025 · 17 revisions

LibFile: components.scad

This file has all the modules needed to generate varioius inserts for board games. It makes the generation of the inserts simpler by creating a number of useful base modules for making boxes and lids of various types specific to board game inserts. Specifically it makes tabbed lids and sliding lids easily.

To use, add the following lines to the beginning of your file:

include <boardgame_toolkit.scad>

File Contents

  1. Section: Components

  2. Section: Curves

Section: Components

Building blocks to make all the rest of the items from. This has all the basic parts of the board game toolkit for making polygons and laying them out.

Module: RoundedBoxOnLength()

Topics: Recess

Usage:

  • RoundedBoxOnLength(100, 50, 10, 5);

Description:

Creates a rounded box for use in the board game insert with a nice radius on two sides (length side).

Arguments:

By Position What it does
width width of the cube
length of the cube
height of the cube
radius radius of the curve on the edges

Example 1:

RoundedBoxOnLength() Example 1
include <boardgame_toolkit.scad>
RoundedBoxOnLength(30, 20, 10, 7);




Module: RoundedBoxAllSides()

Topics: Recess

Usage:

  • RoundedBoxAllSides(30,20,10,5);

Description:

Creates a rounded box with all the sides rounded.

Arguments:

By Position What it does
width width of the cube
length of the cube
height of the cube
radius radius of the curve on the edges

Example 1:

RoundedBoxAllSides() Example 1
include <boardgame_toolkit.scad>
RoundedBoxAllSides(30, 20, 10, 7);




Module: RoundedBoxGrid()

Topics: Recess, Grid

Usage:

  • RoundedBoxGrid(20,20,10,5, rows=2, cols=1);

Description:

Create a grid of rounded boxes, this is useful for inserting a number of containers inside a insert box.

Arguments:

By Position What it does
width width of the space (total, inside will be divided by this)
length of the space (total, inside will be divided by this)
height of the space
radius radius of the curve on the edges
rows number of rows to generate
cols number of cols to generate
spacing number of mm between the spaces (default 2)
all_sides round all the sides (default false)

Example 1:

RoundedBoxGrid() Example 1
include <boardgame_toolkit.scad>
RoundedBoxGrid(30, 20, 10, 7, rows=2, cols=1);




Module: RegularPolygon()

Topics: Recess

Usage:

  • RegularPolygon(10, 5, 6);

Description:

Creates a regular polygon with specific height/width and number of edges.

Arguments:

By Position What it does
width total width of the piece, this is equivilant to the apothem of a polygon * 2
height how high to create the item
shape_edges number of edges for the polygon
finger_holes finger holes to put on the specific edges, from 0-shapeedges
finger_hole_height height of the finger holes
finger_hole_radius the radius of the finger holes

Example 1:

RegularPolygon() Example 1
include <boardgame_toolkit.scad>
RegularPolygon(10, 5, shape_edges = 6);



Example 2:

RegularPolygon() Example 2
include <boardgame_toolkit.scad>
RegularPolygon(10, 5, shape_edges = 6, finger_holes = [0, 3]);




Module: CircleWithIndents()

Description:

Makes a nice cylinder with finger holes bits at the spexific angles.

Arguments:

By Position What it does
radius radius of the circle
height of the cylinder
finger_holes finger holes at the specified degrees.
finger_hole_height how much to move it up from the bottom
finger_hole_radius the radius to use for the finger holes

Example 1:

CircleWithIndents() Example 1
include <boardgame_toolkit.scad>
CylinderWithIndents(15, 10, finger_holes = [30, 210]);




Module: CuboidWithIndentsBottom()

Description:

Makes a nice cuboid with finger holes bits at the specific sides, this anchors to the bottom. The holes are at: [LEFT + FRONT, RIGHT+BACK, LEFT, RIGHT, FRONT, BACK, ]

Arguments:

By Position What it does
size size of the cuboid
finger_holes finger holes at the specified places
finger_hole_height how much to move it up from the bottom finger_hole_radius =
the radius to use for the finger holes

Example 1:

CuboidWithIndentsBottom() Example 1
include <boardgame_toolkit.scad>
CuboidWithIndentsBottom([15, 10, 5], finger_holes = [1, 5]);



Example 2:

CuboidWithIndentsBottom() Example 2
include <boardgame_toolkit.scad>
CuboidWithIndentsBottom([15, 10, 5], finger_holes = [0, 4]);




Module: RegularPolygonGrid()

Topics: Grid

Usage:

  • RegularPolygonGrid(10, 2, 1, 2)

Description:

Lays out the grid with all the polygons as children. The layout handles any shape as children. This uses the exact width of the polygon to layout the underlying grid. This just does all the spacing, the actual generation is done using the children to this module. This is usually used in conjuction with RegularPolygon()

Arguments:

By Position What it does
width total width of the piece, this is equivilant to the apothem of a polygon * 2
rows number of rows to generate
cols number of cols to generate
spacing spacing between shapres
aspect_ratio ratio between shape and width, the dy is * this (default 1.0)

Example 1:

RegularPolygonGrid() Example 1
include <boardgame_toolkit.scad>
RegularPolygonGrid(width = 10, rows = 2, cols = 1, spacing = 2)
   RegularPolygon(width = 10, height = 5, shape_edges = 6);

Module: RegularPolygonGridDense()

Topics: Grid

Usage:

  • RegularPolygonGridDense(10, 2, 1)

Description:

Lays out the grid with all the polygons as children in a dense layout, this only works for triangles and hexes. It will do a dense space filling using the spacing as the distance between the polygons. This uses the exact width of the polygon to layout the underlying grid. This just does all the spacing, the actual generation is done using the children to this module. This is usually used in conjuction with RegularPolygon()

Arguments:

By Position What it does
radius this is the radius of the polygon, distance from center to edges
rows number of rows to generate
cols number of cols to generate
spacing spacing between shapres

Example 1:

RegularPolygonGridDense() Example 1
include <boardgame_toolkit.scad>
RegularPolygonGridDense(radius = 10, rows = 3, cols = 2)
   RegularPolygon(width = 10, height = 5, shape_edges = 6);




Module: HexGridWithCutouts()

Topics: Recess Grid

Usage:

  • HexGridWithCutouts(rows = 4, cols = 3, height = 10, spacing = 0, push_block_height = 1, tile_width = 29);

Description:

This creates a hex grid with cutouts that can be used to cut out piece of a box to make a nice hex spacing inside the box.

Arguments:

By Position What it does
rows rows of the grid
cols colrs of the grid
height height of the grid
spacing space between the tiles
tile_width width of the tiles
push_block_height height of the pushblock to use (default 0)

Example 1:

HexGridWithCutouts() Example 1
include <boardgame_toolkit.scad>
HexGridWithCutouts(rows = 4, cols = 3, height = 10, spacing = 0, push_block_height = 1, tile_width = 29);

Module: FingerHoleBase()

Topics: FingerHole

Usage: FingerHoldBase(10, 20);

Description:

Creates a hole in the floor of the box with a rounding over at the top to allow for picking up of cards and other things. Center on the side of the wall and the radius of the main section is the offset to the middle.

Arguments:

By Position What it does
radius radius of the hole
height height of the wall
wall_thickness this is used as an offset to move in from the wall by this amount to cut through it (default
2)
rounding_radius rounding radius at the top of the hole (default 3)
orient orintation of the hole, from BSOL2 (default UP)
spin spin of the hole, from BSOL2 (default 0)
anchor location to anchor everything (from BSOL2)

Example 1:

FingerHoleBase() Example 1
include <boardgame_toolkit.scad>
FingerHoleBase(10, 20);



Example 2:

FingerHoleBase() Example 2
include <boardgame_toolkit.scad>
FingerHoleBase(10, 20, rounding_radius = 7);




Section: Curves

Module: HilbertCurve()

Usage: HilbertCurve(3, 100);

Description:

Generates a hilbert curve for uses in board games.

Arguments:

By Position What it does
order depth of recursion to use 3 is a reasonable number
size size to generate the curve, this is a square size
line_thickness how thick to generate the lines in the curve (default = 20)
smoothness how smooth to make all the curves (default 32)

Example 1:

HilbertCurve() Example 1
include <boardgame_toolkit.scad>
HilbertCurve(3, 100);




Clone this wiki locally