Safer rounded enclosure

This commit is contained in:
2026-01-03 09:07:42 +01:00
parent 9d6b8f6ddb
commit 2747df0265
2 changed files with 26 additions and 26 deletions

View File

@@ -1,8 +1,8 @@
// FABULA open source storyteller enclosure // FABULA open source storyteller enclosure
// Global dimensions, change here // Global dimensions, change here
width = 120; width = 200;
height = 60; height = 100;
depth = 40; depth = 40;
screw_diameter = 3; screw_diameter = 3;
@@ -23,11 +23,11 @@ module screw_hole() {
cylinder(h = depth - 2, d = screw_diameter, center = true); cylinder(h = depth - 2, d = screw_diameter, center = true);
// Hole where the screw will pass with slack, without threading (in the lid) // Hole where the screw will pass with slack, without threading (in the lid)
translate([0, 0, depth/2 - box_cut_height/2]) { translate([0, 0, depth/2 - box_cut_height/2]) {
cylinder(h = box_cut_height + 2, d = screw_diameter*1.5, center = true); cylinder(h = box_cut_height + 12, d = screw_diameter*1.5, center = true);
} }
// Screw head bevel // Screw head bevel
bevel_depth = 1; bevel_depth = 1;
translate([0, 0, depth/2 - bevel_depth/2 + 0.1]) { translate([0, 0, depth/2 - bevel_depth/2 + 6]) {
cylinder(h = bevel_depth, d2 = screw_diameter * 2.5, d1 = screw_diameter*1.5, center = true); cylinder(h = bevel_depth, d2 = screw_diameter * 2.5, d1 = screw_diameter*1.5, center = true);
} }
} }
@@ -60,39 +60,42 @@ module closed_box() {
union() { union() {
// Hollow box // Hollow box
difference() { difference() {
// Round all edges to avoid danger for the children
minkowski() {
$fn = 64;
main_body(); main_body();
scale([0.95, 0.95, 0.95]) { sphere(6);
main_body();
} }
main_body();
} }
// Screws standoffs near curved edges // Screws standoffs near curved edges
translate([width/2 - rounded_edge_diameter/2, -height/2 + standoff_diameter/2, 0]) { translate([width/2 - rounded_edge_diameter/2, -height/2, 0]) {
standoff(); standoff();
} }
translate([-width/2 + rounded_edge_diameter/2, height/2 - standoff_diameter/2, 0]) { translate([-width/2 + rounded_edge_diameter/2, height/2, 0]) {
standoff(); standoff();
} }
// Screws standoff near sharp edges // Screws standoff near sharp edges
translate([-width/2 + standoff_diameter/2, -height/2 + standoff_diameter/2, 0]) { translate([-width/2 + standoff_diameter/2, -height/2, 0]) {
standoff(); standoff();
} }
translate([width/2 - standoff_diameter/2, height/2 - standoff_diameter/2, 0]) { translate([width/2 - standoff_diameter/2, height/2, 0]) {
standoff(); standoff();
} }
} }
// Screw holes near curved edges // Screw holes near curved edges
translate([width/2 - rounded_edge_diameter/2, -height/2 + standoff_diameter/2, 0]) { translate([width/2 - rounded_edge_diameter/2, -height/2, 0]) {
screw_hole(); screw_hole();
} }
translate([-width/2 + rounded_edge_diameter/2, height/2 - standoff_diameter/2, 0]) { translate([-width/2 + rounded_edge_diameter/2, height/2, 0]) {
screw_hole(); screw_hole();
} }
// Screws holes near sharp edges // Screws holes near sharp edges
translate([-width/2 + standoff_diameter/2, -height/2 + standoff_diameter/2, 0]) { translate([-width/2 + standoff_diameter/2, -height/2, 0]) {
screw_hole(); screw_hole();
} }
translate([width/2 - standoff_diameter/2, height/2 - standoff_diameter/2, 0]) { translate([width/2 - standoff_diameter/2, height/2, 0]) {
screw_hole(); screw_hole();
} }
} }
@@ -121,24 +124,22 @@ module cap() {
translate([0, 0, box_cut_height - 1]) { translate([0, 0, box_cut_height - 1]) {
intersection() { intersection() {
difference() { difference() {
scale([0.95, 0.95, 0.95]) {
main_body(); main_body();
} scale([0.96, 0.96, 0.96]) {
scale([0.92, 0.92, 0.92]) {
main_body(); main_body();
} }
// Clear screws standoffs near curved edges // Clear screws standoffs near curved edges
translate([width/2 - rounded_edge_diameter/2, -height/2 + standoff_diameter/2, 0]) { translate([width/2 - rounded_edge_diameter/2, -height/2, 0]) {
standoff(); standoff();
} }
translate([-width/2 + rounded_edge_diameter/2, height/2 - standoff_diameter/2, 0]) { translate([-width/2 + rounded_edge_diameter/2, height/2, 0]) {
standoff(); standoff();
} }
// Clear screws standoff near sharp edges // Clear screws standoff near sharp edges
translate([-width/2 + standoff_diameter/2, -height/2 + standoff_diameter/2, 0]) { translate([-width/2, -height/2, 0]) {
standoff(); standoff();
} }
translate([width/2 - standoff_diameter/2, height/2 - standoff_diameter/2, 0]) { translate([width/2, height/2, 0]) {
standoff(); standoff();
} }
} }
@@ -148,4 +149,3 @@ module cap() {
} }
closed_box(); closed_box();

View File

@@ -2,5 +2,5 @@ use <fabula_enclosure.scad>
$fn=32; $fn=32;
translate([0, -50, 0]) box(); translate([0, -60, 0]) box();
translate([0, 50, 0]) rotate([180, 0, 0]) cap(); translate([0, 60, 0]) rotate([180, 0, 0]) cap();