Insert for Nautilus Island
FleetingI want to organize the pieces somehow like this:

It’s a good opportunity to try the Boardgame-Insert-Toolkit.
Let’s start with a fresh project.
rm -rf /home/sam/test/insert
mkdir -p /home/sam/test/insert
And get into it.
cd /home/sam/test/insert
Then, simply clone the repository.
git clone https://github.com/dppdppd/The-Boardgame-Insert-Toolkit bit
Cloning into 'bit'...
remote: Enumerating objects: 890, done.
(301/301), done.
(67/67), done.
(855/890), 30.28 MiB | 6.37 MiB/s
remote: Total 890 (delta 256), reused 254 (delta 226), pack-reused 589 (from 1)
(890/890), 32.51 MiB | 5.99 MiB/s, done.
The author suggests not to expect the API to remain stable, hence keeping track of the commit used might prove useful in the future.
pushd bit
git log -1 --pretty=format:"%H" "$@"
popd
~/test/insert/bit ~/test/insert
8a38cbdf5846a919d13e81cb5c9759cebd850c6f𒆸 ~/test/insert
Now, I copy pasted the example3 file and changed the component. With a lot of trials and errors, I eventually got to this:
include <./bit/boardgame_insert_toolkit_lib.3.scad>;
include <./bit/bit_functions_lib.3.scad>;
// Determines whether lids are output.
g_b_print_lid = true;
// Determines whether boxes are output.
g_b_print_box = true;
// Only render specified box
g_isolated_print_box = "nautilusisland";
// Used to visualize how all of the boxes fit together.
g_b_visualization = false;
// Outer wall thickness
// Default = 1.5mm
g_wall_thickness = 1.5;
// Provided to make variable math easier
// i.e., it's a lot easier to just type "wall" than "g_wall_thickness"
wall = g_wall_thickness;
// The tolerance value is extra space put between planes of the lid and box that fit together.
// Increase the tolerance to loosen the fit and decrease it to tighten it.
//
// Note that the tolerance is applied exclusively to the lid.
// So if the lid is too tight or too loose, change this value ( up for looser fit, down for tighter fit ) and
// you only need to reprint the lid.
//
// The exception is the stackable box, where the bottom of the box is the lid of the box below,
// in which case the tolerance also affects that box bottom.
//
g_tolerance = 0.15;
// This adjusts the position of the lid detents downward.
// The larger the value, the bigger the gap between the lid and the box.
g_tolerance_detents_pos = 0.1;
g_default_font = "Arial:style=Bold";
// Variables for nautilusisland box
row2 = 27;
card_length = 64;
card_width = 45;
tile_diameter = 36;
tile_length = 26;
data =
[
["nautilusisland",
[
[BOX_SIZE_XYZ, [95, 140, 36]],
[BOX_NO_LID_B, t],
[BOX_STACKABLE_B, f],
[LABEL,
[
[LBL_TEXT, "Nautilus Island"],
[LBL_SIZE, AUTO],
[LBL_PLACEMENT, FRONT],
]
],
[BOX_COMPONENT, // square tiles
[
[CMP_COMPARTMENT_SIZE_XYZ, [tile_length, tile_length, 27]],
[CMP_NUM_COMPARTMENTS_XY, [1,3]],
[CMP_SHAPE, SQUARE],
[POSITION_XY, [0, CENTER]],
[CMP_SHAPE_ROTATED_B, f],
[CMP_SHAPE_VERTICAL_B, f],
[CMP_CUTOUT_SIDES_4B, [t, t, f, f]],
[CMP_PADDING_XY, [0, 18]],
[CMP_CUTOUT_WIDTH_PCT, 80],
],
],
[BOX_COMPONENT, // cards
[
[CMP_COMPARTMENT_SIZE_XYZ, [card_length, card_width, 35]],
[CMP_NUM_COMPARTMENTS_XY, [1,1]],
[CMP_SHAPE, SQUARE],
[CMP_SHAPE_ROTATED_B, f],
[CMP_SHAPE_VERTICAL_B, f],
[POSITION_XY, [row2, 85]],
[CMP_CUTOUT_SIDES_4B, [f, f, f, t]],
[CMP_CUTOUT_WIDTH_PCT, 50],
],
],
[BOX_COMPONENT, // round tiles
[
[CMP_COMPARTMENT_SIZE_XYZ, [tile_diameter, tile_diameter, 27]],
[CMP_NUM_COMPARTMENTS_XY, [1,1]],
[CMP_SHAPE, ROUND],
[CMP_SHAPE_ROTATED_B, f],
[CMP_SHAPE_VERTICAL_B, t],
[POSITION_XY, [row2 + card_length/2 - tile_diameter / 2, 0]],
[CMP_CUTOUT_SIDES_4B, [f, f, t, t]],
[CMP_CUTOUT_WIDTH_PCT, 80],
[CMP_PADDING_XY, [21, 0]],
],
],
[BOX_COMPONENT, // meeples
[
[CMP_COMPARTMENT_SIZE_XYZ, [60, 40, 35]],
[CMP_NUM_COMPARTMENTS_XY, [1,1]],
[CMP_SHAPE, OCT2],
[CMP_SHAPE_ROTATED_B, f],
[CMP_SHAPE_VERTICAL_B, f],
[POSITION_XY, [row2 + card_length / 2 - 60 / 2, 37]],
[CMP_CUTOUT_SIDES_4B, [f, f, f, f]],
],
],
],
],
];
MakeAll();
openscad insert.scad -o insert.stl
ECHO: "
The Boardgame Insert Toolkit
https://github.com/dppdppd/The-Boardgame-Insert-Toolkit
Copyright 2020 Ido Magal
Creative Commons - Attribution - Non-Commercial - Share Alike.
https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode
Version 3.00
"
CGAL Cache insert: difference(){cube(size=[95,140,36],cente (6093520 bytes)
CGAL Cache hit: difference(){cube(size=[95,140,36],cente (6093520 bytes)
CGAL Cache hit: difference(){cube(size=[95,140,36],cente (6093520 bytes)
CGAL Cache hit: difference(){cube(size=[95,140,36],cente (6093520 bytes)
CGAL Cache hit: difference(){cube(size=[95,140,36],cente (6093520 bytes)
CGAL Cache hit: difference(){cube(size=[95,140,36],cente (6093520 bytes)
CGAL Cache insert: group(){multmatrix([[1,0,0,0],[0,1,0,26] (22592 bytes)
CGAL Cache hit: group(){multmatrix([[1,0,0,0],[0,1,0,26] (22592 bytes)
CGAL Cache insert: group(){cube(size=[26,0,34.5],center=fal (22592 bytes)
CGAL Cache insert: group(){group(){cube(size=[26,0,34.5],ce (32848 bytes)
CGAL Cache hit: group(){group(){cube(size=[26,0,34.5],ce (32848 bytes)
CGAL Cache hit: group(){group(){cube(size=[26,0,34.5],ce (32848 bytes)
CGAL Cache hit: group(){group(){cube(size=[26,0,34.5],ce (32848 bytes)
CGAL Cache insert: multmatrix([[1,0,0,0],[0,1,0,0],[0,0,1,- (32848 bytes)
CGAL Cache insert: multmatrix([[1,0,0,0],[0,1,0,0],[0,0,1,0 (32848 bytes)
CGAL Cache insert: multmatrix([[1,0,0,0],[0,1,0,0],[0,0,1,1 (32848 bytes)
CGAL Cache insert: multmatrix([[1,0,0,1.5],[0,1,0,13],[0,0, (32848 bytes)
CGAL Cache insert: multmatrix([[1,0,0,-14.5],[0,1,0,-70],[0 (32848 bytes)
CGAL Cache insert: multmatrix([[1,0,0,0],[0,1,0,0],[0,0,1,0 (32848 bytes)
CGAL Cache insert: multmatrix([[1,0,0,14.5],[0,1,0,70],[0,0 (32848 bytes)
CGAL Cache hit: multmatrix([[1,0,0,14.5],[0,1,0,70],[0,0 (32848 bytes)
CGAL Cache hit: multmatrix([[1,0,0,14.5],[0,1,0,70],[0,0 (32848 bytes)
CGAL Cache hit: multmatrix([[1,0,0,14.5],[0,1,0,70],[0,0 (32848 bytes)
CGAL Cache hit: multmatrix([[1,0,0,14.5],[0,1,0,70],[0,0 (32848 bytes)
CGAL Cache hit: multmatrix([[1,0,0,14.5],[0,1,0,70],[0,0 (32848 bytes)
CGAL Cache hit: multmatrix([[1,0,0,14.5],[0,1,0,70],[0,0 (32848 bytes)
CGAL Cache hit: multmatrix([[1,0,0,14.5],[0,1,0,70],[0,0 (32848 bytes)
CGAL Cache hit: multmatrix([[1,0,0,14.5],[0,1,0,70],[0,0 (32848 bytes)
CGAL Cache hit: multmatrix([[1,0,0,14.5],[0,1,0,70],[0,0 (32848 bytes)
CGAL Cache hit: multmatrix([[1,0,0,14.5],[0,1,0,70],[0,0 (32848 bytes)
CGAL Cache hit: multmatrix([[1,0,0,14.5],[0,1,0,70],[0,0 (32848 bytes)
CGAL Cache insert: group(){multmatrix([[1,0,0,0.001],[0,1,0 (561184 bytes)
CGAL Cache insert: group(){multmatrix([[1,0,0,3],[0,1,0,3], (561184 bytes)
CGAL Cache insert: group(){multmatrix([[1,0,0,2.6],[0,1,0,- (420416 bytes)
CGAL Cache insert: multmatrix([[1,0,0,0],[0,1,0,0],[0,0,1,0 (420416 bytes)
CGAL Cache hit: multmatrix([[1,0,0,0],[0,1,0,0],[0,0,1,0 (420416 bytes)
CGAL Cache insert: group(){multmatrix([[1,0,0,0.001],[0,1,0 (561184 bytes)
CGAL Cache insert: group(){multmatrix([[1,0,0,3],[0,1,0,3], (561184 bytes)
CGAL Cache insert: group(){multmatrix([[1,0,0,2.6],[0,1,0,- (302144 bytes)
CGAL Cache hit: group(){multmatrix([[1,0,0,2.6],[0,1,0,- (302144 bytes)
CGAL Cache hit: group(){multmatrix([[1,0,0,2.6],[0,1,0,- (302144 bytes)
CGAL Cache insert: multmatrix([[1,0,0,0],[0,1,0,0],[0,0,1,0 (302144 bytes)
CGAL Cache insert: multmatrix([[1,0,0,0],[0,1,0,44],[0,0,1, (302144 bytes)
CGAL Cache insert: multmatrix([[1,0,0,0],[0,1,0,88],[0,0,1, (302144 bytes)
CGAL Cache insert: group(){multmatrix([[1,0,0,0],[0,1,0,0], (894496 bytes)
CGAL Cache hit: group(){multmatrix([[1,0,0,0],[0,1,0,0], (894496 bytes)
CGAL Cache insert: group(){multmatrix([[1,0,0,0],[0,1,0,0], (1045024 bytes)
CGAL Cache hit: group(){multmatrix([[1,0,0,0],[0,1,0,0], (1045024 bytes)
CGAL Cache insert: group(){group(){multmatrix([[1,0,0,0],[0 (1045024 bytes)
CGAL Cache hit: group(){group(){multmatrix([[1,0,0,0],[0 (1045024 bytes)
CGAL Cache hit: group(){group(){multmatrix([[1,0,0,0],[0 (1045024 bytes)
CGAL Cache hit: group(){group(){multmatrix([[1,0,0,0],[0 (1045024 bytes)
CGAL Cache hit: group(){group(){multmatrix([[1,0,0,0],[0 (1045024 bytes)
CGAL Cache insert: multmatrix([[1,0,0,0],[0,1,0,0],[0,0,1,- (1045024 bytes)
CGAL Cache insert: multmatrix([[1,0,0,0],[0,1,0,0],[0,0,1,0 (1045024 bytes)
CGAL Cache insert: multmatrix([[1,0,0,0],[0,1,0,0],[0,0,1,1 (1045024 bytes)
CGAL Cache insert: multmatrix([[1,0,0,1.5],[0,1,0,13],[0,0, (1045024 bytes)
CGAL Cache insert: multmatrix([[1,0,0,-14.5],[0,1,0,-70],[0 (1045024 bytes)
CGAL Cache insert: multmatrix([[1,0,0,0],[0,1,0,0],[0,0,1,0 (1045024 bytes)
CGAL Cache insert: multmatrix([[1,0,0,14.5],[0,1,0,70],[0,0 (1045024 bytes)
CGAL Cache hit: multmatrix([[1,0,0,14.5],[0,1,0,70],[0,0 (1045024 bytes)
CGAL Cache hit: multmatrix([[1,0,0,14.5],[0,1,0,70],[0,0 (1045024 bytes)
CGAL Cache hit: multmatrix([[1,0,0,14.5],[0,1,0,70],[0,0 (1045024 bytes)
CGAL Cache hit: multmatrix([[1,0,0,14.5],[0,1,0,70],[0,0 (1045024 bytes)
CGAL Cache hit: multmatrix([[1,0,0,14.5],[0,1,0,70],[0,0 (1045024 bytes)
CGAL Cache hit: multmatrix([[1,0,0,14.5],[0,1,0,70],[0,0 (1045024 bytes)
CGAL Cache hit: multmatrix([[1,0,0,14.5],[0,1,0,70],[0,0 (1045024 bytes)
CGAL Cache hit: multmatrix([[1,0,0,14.5],[0,1,0,70],[0,0 (1045024 bytes)
CGAL Cache hit: multmatrix([[1,0,0,14.5],[0,1,0,70],[0,0 (1045024 bytes)
CGAL Cache hit: multmatrix([[1,0,0,14.5],[0,1,0,70],[0,0 (1045024 bytes)
CGAL Cache hit: multmatrix([[1,0,0,14.5],[0,1,0,70],[0,0 (1045024 bytes)
CGAL Cache insert: difference(){multmatrix([[1,0,0,14.5],[0 (32848 bytes)
CGAL Cache insert: union(){difference(){multmatrix([[1,0,0, (1108048 bytes)
CGAL Cache insert: group(){multmatrix([[1,0,0,3],[0,1,0,3], (646208 bytes)
CGAL Cache insert: group(){multmatrix([[1,0,0,3],[0,1,0,3], (1077280 bytes)
CGAL Cache insert: group(){multmatrix([[1,0,0,0],[0,1,0,0], (339280 bytes)
CGAL Cache hit: group(){multmatrix([[1,0,0,0],[0,1,0,0], (339280 bytes)
CGAL Cache insert: group(){group(){multmatrix([[1,0,0,0],[0 (339280 bytes)
CGAL Cache hit: group(){group(){multmatrix([[1,0,0,0],[0 (339280 bytes)
CGAL Cache hit: group(){group(){multmatrix([[1,0,0,0],[0 (339280 bytes)
CGAL Cache hit: group(){group(){multmatrix([[1,0,0,0],[0 (339280 bytes)
CGAL Cache hit: group(){group(){multmatrix([[1,0,0,0],[0 (339280 bytes)
CGAL Cache insert: multmatrix([[1,0,0,0],[0,1,0,0],[0,0,1,- (339280 bytes)
CGAL Cache insert: multmatrix([[1,0,0,0],[0,1,0,0],[0,0,1,0 (339280 bytes)
CGAL Cache insert: multmatrix([[1,0,0,0],[0,1,0,0],[0,0,1,1 (339280 bytes)
CGAL Cache insert: multmatrix([[1,0,0,28.5],[0,1,0,86.5],[0 (339280 bytes)
CGAL Cache insert: multmatrix([[1,0,0,-60.5],[0,1,0,-109],[ (339280 bytes)
CGAL Cache insert: multmatrix([[1,0,0,0],[0,1,0,0],[0,0,1,0 (339280 bytes)
CGAL Cache insert: multmatrix([[1,0,0,60.5],[0,1,0,109],[0, (339280 bytes)
CGAL Cache hit: multmatrix([[1,0,0,60.5],[0,1,0,109],[0, (339280 bytes)
CGAL Cache hit: multmatrix([[1,0,0,60.5],[0,1,0,109],[0, (339280 bytes)
CGAL Cache hit: multmatrix([[1,0,0,60.5],[0,1,0,109],[0, (339280 bytes)
CGAL Cache hit: multmatrix([[1,0,0,60.5],[0,1,0,109],[0, (339280 bytes)
CGAL Cache hit: multmatrix([[1,0,0,60.5],[0,1,0,109],[0, (339280 bytes)
CGAL Cache hit: multmatrix([[1,0,0,60.5],[0,1,0,109],[0, (339280 bytes)
CGAL Cache hit: multmatrix([[1,0,0,60.5],[0,1,0,109],[0, (339280 bytes)
CGAL Cache hit: multmatrix([[1,0,0,60.5],[0,1,0,109],[0, (339280 bytes)
CGAL Cache hit: multmatrix([[1,0,0,60.5],[0,1,0,109],[0, (339280 bytes)
CGAL Cache hit: multmatrix([[1,0,0,60.5],[0,1,0,109],[0, (339280 bytes)
CGAL Cache hit: multmatrix([[1,0,0,60.5],[0,1,0,109],[0, (339280 bytes)
CGAL Cache insert: difference(){multmatrix([[1,0,0,60.5],[0 (11344 bytes)
CGAL Cache insert: union(){difference(){multmatrix([[1,0,0, (355408 bytes)
CGAL Cache insert: difference(){cube(size=[36,36,34.5],cent (290048 bytes)
CGAL Cache hit: difference(){cube(size=[36,36,34.5],cent (290048 bytes)
CGAL Cache insert: multmatrix([[1,0,0,0],[0,1,0,0],[0,0,1,0 (290048 bytes)
CGAL Cache hit: multmatrix([[1,0,0,0],[0,1,0,0],[0,0,1,0 (290048 bytes)
CGAL Cache hit: multmatrix([[1,0,0,0],[0,1,0,0],[0,0,1,0 (290048 bytes)
CGAL Cache insert: group(){group(){cube(size=[36,0,34.5],ce (286160 bytes)
CGAL Cache hit: group(){group(){cube(size=[36,0,34.5],ce (286160 bytes)
CGAL Cache hit: group(){group(){cube(size=[36,0,34.5],ce (286160 bytes)
CGAL Cache hit: group(){group(){cube(size=[36,0,34.5],ce (286160 bytes)
CGAL Cache insert: multmatrix([[1,0,0,0],[0,1,0,0],[0,0,1,- (286160 bytes)
CGAL Cache insert: multmatrix([[1,0,0,0],[0,1,0,0],[0,0,1,0 (286160 bytes)
CGAL Cache insert: multmatrix([[1,0,0,0],[0,1,0,0],[0,0,1,1 (286160 bytes)
CGAL Cache insert: multmatrix([[1,0,0,42.5],[0,1,0,1.5],[0, (286160 bytes)
CGAL Cache insert: multmatrix([[1,0,0,-60.5],[0,1,0,-19.5], (286160 bytes)
CGAL Cache insert: multmatrix([[1,0,0,0],[0,1,0,0],[0,0,1,0 (286160 bytes)
CGAL Cache insert: multmatrix([[1,0,0,60.5],[0,1,0,19.5],[0 (286160 bytes)
CGAL Cache hit: multmatrix([[1,0,0,60.5],[0,1,0,19.5],[0 (286160 bytes)
CGAL Cache hit: multmatrix([[1,0,0,60.5],[0,1,0,19.5],[0 (286160 bytes)
CGAL Cache hit: multmatrix([[1,0,0,60.5],[0,1,0,19.5],[0 (286160 bytes)
CGAL Cache hit: multmatrix([[1,0,0,60.5],[0,1,0,19.5],[0 (286160 bytes)
CGAL Cache hit: multmatrix([[1,0,0,60.5],[0,1,0,19.5],[0 (286160 bytes)
CGAL Cache hit: multmatrix([[1,0,0,60.5],[0,1,0,19.5],[0 (286160 bytes)
CGAL Cache hit: multmatrix([[1,0,0,60.5],[0,1,0,19.5],[0 (286160 bytes)
CGAL Cache hit: multmatrix([[1,0,0,60.5],[0,1,0,19.5],[0 (286160 bytes)
CGAL Cache hit: multmatrix([[1,0,0,60.5],[0,1,0,19.5],[0 (286160 bytes)
CGAL Cache hit: multmatrix([[1,0,0,60.5],[0,1,0,19.5],[0 (286160 bytes)
CGAL Cache hit: multmatrix([[1,0,0,60.5],[0,1,0,19.5],[0 (286160 bytes)
CGAL Cache insert: group(){multmatrix([[1,0,0,0.001],[0,1,0 (561184 bytes)
CGAL Cache insert: group(){multmatrix([[1,0,0,3],[0,1,0,3], (561184 bytes)
CGAL Cache insert: group(){multmatrix([[1,0,0,-12],[0,1,0,3 (420416 bytes)
CGAL Cache insert: multmatrix([[1,0,0,0],[0,1,0,0],[0,0,1,0 (420416 bytes)
CGAL Cache hit: multmatrix([[1,0,0,0],[0,1,0,0],[0,0,1,0 (420416 bytes)
CGAL Cache insert: group(){multmatrix([[1,0,0,0.001],[0,1,0 (561184 bytes)
CGAL Cache insert: group(){multmatrix([[1,0,0,3],[0,1,0,3], (561184 bytes)
CGAL Cache insert: group(){multmatrix([[1,0,0,-10.5],[0,1,0 (302144 bytes)
CGAL Cache insert: multmatrix([[1,0,0,0],[0,1,0,0],[0,0,1,0 (302144 bytes)
CGAL Cache hit: multmatrix([[1,0,0,0],[0,1,0,0],[0,0,1,0 (302144 bytes)
CGAL Cache hit: multmatrix([[1,0,0,0],[0,1,0,0],[0,0,1,0 (302144 bytes)
CGAL Cache insert: group(){multmatrix([[1,0,0,0],[0,1,0,0], (452672 bytes)
CGAL Cache hit: group(){multmatrix([[1,0,0,0],[0,1,0,0], (452672 bytes)
CGAL Cache insert: group(){group(){multmatrix([[1,0,0,0],[0 (452672 bytes)
CGAL Cache hit: group(){group(){multmatrix([[1,0,0,0],[0 (452672 bytes)
CGAL Cache hit: group(){group(){multmatrix([[1,0,0,0],[0 (452672 bytes)
CGAL Cache hit: group(){group(){multmatrix([[1,0,0,0],[0 (452672 bytes)
CGAL Cache hit: group(){group(){multmatrix([[1,0,0,0],[0 (452672 bytes)
CGAL Cache insert: multmatrix([[1,0,0,0],[0,1,0,0],[0,0,1,- (452672 bytes)
CGAL Cache insert: multmatrix([[1,0,0,0],[0,1,0,0],[0,0,1,0 (452672 bytes)
CGAL Cache insert: multmatrix([[1,0,0,0],[0,1,0,0],[0,0,1,1 (452672 bytes)
CGAL Cache insert: multmatrix([[1,0,0,42.5],[0,1,0,1.5],[0, (452672 bytes)
CGAL Cache insert: multmatrix([[1,0,0,-60.5],[0,1,0,-19.5], (452672 bytes)
CGAL Cache insert: multmatrix([[1,0,0,0],[0,1,0,0],[0,0,1,0 (452672 bytes)
CGAL Cache insert: multmatrix([[1,0,0,60.5],[0,1,0,19.5],[0 (452672 bytes)
CGAL Cache hit: multmatrix([[1,0,0,60.5],[0,1,0,19.5],[0 (452672 bytes)
CGAL Cache hit: multmatrix([[1,0,0,60.5],[0,1,0,19.5],[0 (452672 bytes)
CGAL Cache hit: multmatrix([[1,0,0,60.5],[0,1,0,19.5],[0 (452672 bytes)
CGAL Cache hit: multmatrix([[1,0,0,60.5],[0,1,0,19.5],[0 (452672 bytes)
CGAL Cache hit: multmatrix([[1,0,0,60.5],[0,1,0,19.5],[0 (452672 bytes)
CGAL Cache hit: multmatrix([[1,0,0,60.5],[0,1,0,19.5],[0 (452672 bytes)
CGAL Cache hit: multmatrix([[1,0,0,60.5],[0,1,0,19.5],[0 (452672 bytes)
CGAL Cache hit: multmatrix([[1,0,0,60.5],[0,1,0,19.5],[0 (452672 bytes)
CGAL Cache hit: multmatrix([[1,0,0,60.5],[0,1,0,19.5],[0 (452672 bytes)
CGAL Cache hit: multmatrix([[1,0,0,60.5],[0,1,0,19.5],[0 (452672 bytes)
CGAL Cache hit: multmatrix([[1,0,0,60.5],[0,1,0,19.5],[0 (452672 bytes)
CGAL Cache insert: difference(){multmatrix([[1,0,0,60.5],[0 (283408 bytes)
CGAL Cache insert: union(){difference(){multmatrix([[1,0,0, (598960 bytes)
CGAL Cache insert: union(){multmatrix([[1,0,0,30],[0,1,0,40 (24784 bytes)
CGAL Cache insert: multmatrix([[1,0,0,0],[0,1,0,0],[0,0,1,- (24784 bytes)
CGAL Cache hit: multmatrix([[1,0,0,0],[0,1,0,0],[0,0,1,- (24784 bytes)
CGAL Cache hit: multmatrix([[1,0,0,0],[0,1,0,0],[0,0,1,- (24784 bytes)
CGAL Cache insert: difference(){cube(size=[60,40,34.5],cent (22592 bytes)
CGAL Cache hit: difference(){cube(size=[60,40,34.5],cent (22592 bytes)
CGAL Cache insert: multmatrix([[1,0,0,0],[0,1,0,0],[0,0,1,0 (22592 bytes)
CGAL Cache hit: multmatrix([[1,0,0,0],[0,1,0,0],[0,0,1,0 (22592 bytes)
CGAL Cache hit: multmatrix([[1,0,0,0],[0,1,0,0],[0,0,1,0 (22592 bytes)
CGAL Cache insert: group(){group(){cube(size=[60,0,34.5],ce (22592 bytes)
CGAL Cache hit: group(){group(){cube(size=[60,0,34.5],ce (22592 bytes)
CGAL Cache hit: group(){group(){cube(size=[60,0,34.5],ce (22592 bytes)
CGAL Cache hit: group(){group(){cube(size=[60,0,34.5],ce (22592 bytes)
CGAL Cache insert: multmatrix([[1,0,0,0],[0,1,0,0],[0,0,1,- (22592 bytes)
CGAL Cache insert: multmatrix([[1,0,0,0],[0,1,0,0],[0,0,1,0 (22592 bytes)
CGAL Cache insert: multmatrix([[1,0,0,0],[0,1,0,0],[0,0,1,1 (22592 bytes)
CGAL Cache insert: multmatrix([[1,0,0,30.5],[0,1,0,38.5],[0 (22592 bytes)
CGAL Cache insert: multmatrix([[1,0,0,-60.5],[0,1,0,-58.5], (22592 bytes)
CGAL Cache insert: multmatrix([[1,0,0,0],[0,1,0,0],[0,0,1,0 (22592 bytes)
CGAL Cache insert: multmatrix([[1,0,0,60.5],[0,1,0,58.5],[0 (22592 bytes)
CGAL Cache hit: multmatrix([[1,0,0,60.5],[0,1,0,58.5],[0 (22592 bytes)
CGAL Cache hit: multmatrix([[1,0,0,60.5],[0,1,0,58.5],[0 (22592 bytes)
CGAL Cache hit: multmatrix([[1,0,0,60.5],[0,1,0,58.5],[0 (22592 bytes)
CGAL Cache hit: multmatrix([[1,0,0,60.5],[0,1,0,58.5],[0 (22592 bytes)
CGAL Cache hit: multmatrix([[1,0,0,60.5],[0,1,0,58.5],[0 (22592 bytes)
CGAL Cache hit: multmatrix([[1,0,0,60.5],[0,1,0,58.5],[0 (22592 bytes)
CGAL Cache hit: multmatrix([[1,0,0,60.5],[0,1,0,58.5],[0 (22592 bytes)
CGAL Cache hit: multmatrix([[1,0,0,60.5],[0,1,0,58.5],[0 (22592 bytes)
CGAL Cache hit: multmatrix([[1,0,0,60.5],[0,1,0,58.5],[0 (22592 bytes)
CGAL Cache hit: multmatrix([[1,0,0,60.5],[0,1,0,58.5],[0 (22592 bytes)
CGAL Cache hit: multmatrix([[1,0,0,60.5],[0,1,0,58.5],[0 (22592 bytes)
CGAL Cache insert: difference(){multmatrix([[1,0,0,60.5],[0 (22096 bytes)
CGAL Cache insert: union(){difference(){multmatrix([[1,0,0, (22096 bytes)
CGAL Cache insert: group(){union(){difference(){multmatrix( (2084224 bytes)
CGAL Cache insert: difference(){group(){union(){difference( (2084224 bytes)
CGAL Cache insert: difference(){difference(){cube(size=[95, (8082640 bytes)
CGAL Cache insert: difference(){difference(){difference(){c (8082640 bytes)
CGAL Cache hit: difference(){difference(){difference(){c (8082640 bytes)
CGAL Cache hit: difference(){difference(){difference(){c (8082640 bytes)
CGAL Cache hit: difference(){difference(){difference(){c (8082640 bytes)
CGAL Cache hit: difference(){difference(){difference(){c (8082640 bytes)
CGAL Cache hit: difference(){difference(){difference(){c (8082640 bytes)
CGAL Cache hit: difference(){difference(){difference(){c (8082640 bytes)
CGAL Cache hit: difference(){difference(){difference(){c (8082640 bytes)
Geometries in cache: 146
Geometry cache size in bytes: 8639568
CGAL Polyhedrons in cache: 93
CGAL cache size in bytes: 59449056
Total rendering time: 0:00:31.779
Top level object is a 3D object:
Simple: yes
Vertices: 6010
Halfedges: 18030
Edges: 9015
Halffacets: 6044
Facets: 3022
Volumes: 2
ipfa insert.stl|sed 's/filename=//'
The result is great

If the height was a little bigger, it would have been even better, but then the box would not close.