Safer rounded enclosure
This commit is contained in:
@@ -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();
|
||||||
|
|
||||||
|
|||||||
@@ -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();
|
||||||
Reference in New Issue
Block a user