Konubinix' opinionated web of thoughts

Insert for Nautilus Island

Fleeting

tag: learning 3D printing

I 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.