summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordakkar <dakkar@thenautilus.net>2023-06-24 18:46:42 +0100
committerdakkar <dakkar@thenautilus.net>2023-06-24 18:46:42 +0100
commitf224e8d86161920e554691abad8124d8ae382486 (patch)
tree3d7806ecdcdf66957565415827a1e8e20d2bfd59
downloadsoap-box-f224e8d86161920e554691abad8124d8ae382486.tar.gz
soap-box-f224e8d86161920e554691abad8124d8ae382486.tar.bz2
soap-box-f224e8d86161920e554691abad8124d8ae382486.zip
start
-rw-r--r--soap-box.scad77
1 files changed, 77 insertions, 0 deletions
diff --git a/soap-box.scad b/soap-box.scad
new file mode 100644
index 0000000..5ff2772
--- /dev/null
+++ b/soap-box.scad
@@ -0,0 +1,77 @@
+wall_thickness_mm=1.5;
+length_mm=120;
+width_mm=70;
+height_mm=30;
+net_slack_pc=0;
+net_thickness_mm=0.5;
+peg_diam_mm=1;
+slot_tolerance=0.1;
+peg_hole_tolerance=0.2;
+
+module notched_wall(x,y,z,side) {
+ module notch() {
+ translate ([-slot_tolerance,side*(y/2-slot_tolerance),-z/2])
+ cube([z+slot_tolerance*2,y,z*2]);
+ }
+ difference() {
+ cube ([x,y,z]);
+ translate ([x/2,0,-z/2])
+ scale ([(x-z*5)/2,y/2,1])
+ cylinder(r=1,h=z*2, $fs=0.1, $fn=0);
+ translate ([z,0,0]) notch();
+ translate ([x-z*2,0,0]) notch();
+ }
+}
+
+module wall_NS() {
+ module peg_hole() {
+ translate([0,0,-wall_thickness_mm/2])
+ cylinder(
+ d=(peg_diam_mm+peg_hole_tolerance),
+ h=wall_thickness_mm*2,
+ $fs=0.1, $fn=0
+ );
+ }
+ difference() {
+ notched_wall(width_mm,height_mm,wall_thickness_mm,-1);
+ translate([wall_thickness_mm*2.5,height_mm-wall_thickness_mm,0]) peg_hole();
+ translate([width_mm-wall_thickness_mm*2.5,height_mm-wall_thickness_mm,0]) peg_hole();
+ }
+}
+
+module wall_EW() {
+ notched_wall(length_mm,height_mm,wall_thickness_mm,1);
+}
+
+module soap_net() {
+ net_width_mm=(width_mm-wall_thickness_mm*5)*(1+net_slack_pc/100);
+ net_length_mm=length_mm-wall_thickness_mm*5;
+
+ module peg() {
+ intersection() {
+ translate([0,0,peg_diam_mm*0.4])
+ rotate([-90,0,0])
+ cylinder(
+ d=peg_diam_mm,
+ h=length_mm-wall_thickness_mm*2,
+ $fs=0.1, $fn=0
+ );
+ translate([-peg_diam_mm,-length_mm*0.5,0])
+ cube([peg_diam_mm*2,length_mm*2,peg_diam_mm*2]);
+ }
+ }
+
+ union() {
+ cube ([net_width_mm,net_length_mm,net_thickness_mm]);
+ translate ([0,-wall_thickness_mm*1.5,0]) peg();
+ translate ([net_width_mm,-wall_thickness_mm*1.5,0]) peg();
+ }
+}
+
+wall_NS();
+translate([0,height_mm*1.2,0]) wall_NS();
+
+translate ([width_mm*1.2,0,0]) wall_EW();
+translate ([width_mm*1.2,height_mm*1.2,0]) wall_EW();
+
+translate ([wall_thickness_mm*2.5,height_mm*2.5 ,0]) soap_net();