summaryrefslogtreecommitdiff
path: root/body/stand.scad
diff options
context:
space:
mode:
Diffstat (limited to 'body/stand.scad')
-rw-r--r--body/stand.scad318
1 files changed, 290 insertions, 28 deletions
diff --git a/body/stand.scad b/body/stand.scad
index 8b801e4..73f7073 100644
--- a/body/stand.scad
+++ b/body/stand.scad
@@ -1,3 +1,4 @@
+include <body.scad>
include <helpers.scad>
include <holes.scad>
@@ -21,9 +22,12 @@ bshs = back_screw_holder_s;
base_wall_thickness = 10;
bwt = base_wall_thickness;
-side_wall_s = [bwt, 50, 55];
+side_wall_s = [bwt, 65, 55];
sws = side_wall_s;
+limit_switch_pcb_s = [40, 17, 1.6];
+ls_pcb_s = limit_switch_pcb_s;
+
module profile_20x20x50()
{
scale([1, 1, 2])
@@ -31,39 +35,297 @@ module profile_20x20x50()
import("Modular profile 20x20 - 973094/files/Profilo_20x20_L50.stl");
}
-// back plate/motor holder
-color("black", 0.5)
-translate([0, -bps[1] / 2, bps[2] / 2 - 20])
-cube(bps, center = true);
+// hot inserts for m4 are not needed
+module m4_screw_hole(hole_side)
+{
+ screw_hole(
+ m = m4 + 0.2,
+ id = m4 + 0.5,
+ il = 15,
+ hd = m4_head_diameter + 1,
+ hh = m4_head_height,
+ hs = hole_side);
+}
+
+module base_side_screw_holes()
+{
+ // right x offset
+ rxo = bshs[0] / 2 + bwt - m4_head_height;
+ lxo = -rxo;
+ // back y offset
+ byo = sws[1] * 1 / 8;
+ fyo = sws[1] * 7 / 8;
+ zo = -20 / 2;
+
+ translate([lxo, byo, zo])
+ m4_screw_hole(hole_side_left);
-// back screw holder
-color("black", 0.5)
-translate([0, bshs[1] / 2 + bp_bsh_dist, bshs[2] / 2])
-cube(bshs, center = true);
+ translate([lxo, fyo, zo])
+ m4_screw_hole(hole_side_left);
-// profiles base
-color("grey")
+ translate([rxo, byo, zo])
+ m4_screw_hole(hole_side_right);
+
+ translate([rxo, fyo, zo])
+ m4_screw_hole(hole_side_right);
+}
+
+limit_switch_pcb_screw_hole_d = 3.5;
+lspshd = limit_switch_pcb_screw_hole_d;
+// dist betw holes 19 14
+// dist betw hole side and short qpcb side = 1-1.1,
+// and 1.3 for long pcb side
+ls_pcb_h_delta_long = 1.3;
+ls_pcb_h_delta_short = 1.1;
+ls_pcb_h_delta_btw_holes = 19;
+
+// limit switch designed by makerbot.com
+// instructions: www.bigtree-tech.com
+// license: GPLv3
+module limit_switch()
{
- translate([-(bshs[0] - 20) / 2, 0, -20 / 2])
- rotate([-90, 0, 0])
- profile_20x20x50();
+ translate([0, -ls_pcb_s[1] / 2, 0])
+ union()
+ {
+ limit_switch_size = [13, 6.5, 6.5];
+ lss = limit_switch_size;
+ // pcb
+ color("red", 0.7)
+ translate([0, 0, -ls_pcb_s[2] / 2])
+ cube(ls_pcb_s, center = true);
+
+ // switch itself
+
+ // 6.5
+ lss_xo = lss[0] / 2 - ls_pcb_s[0] / 2 + 6.5;
+ lss_yo = -lss[1] / 2 + ls_pcb_s[1] / 2;
+ lss_zo = -lss[2] / 2 - ls_pcb_s[2] / 2;
+ color("black", 0.7)
+ translate([lss_xo, lss_yo, lss_zo])
+ cube(lss, center = true);
+ }
+
+ d = lspshd;
+ x_delta = ls_pcb_h_delta_short;
+ y_delta = ls_pcb_h_delta_long;
+ xd = d / 2 - ls_pcb_s[0] / 2 + x_delta;
+ yd = -d / 2 - y_delta;
+
+ // screw holes
+ color("green", 0.4)
+ union()
+ {
+ translate([xd, yd, 0])
+ cylinder($fn = dToFn(d), d = d, h = 4, center = true);
+
+ translate([xd + ls_pcb_h_delta_btw_holes, yd, 0])
+ cylinder($fn = dToFn(d), d = d, h = 4, center = true);
+ }
+
+ // holes to cut
+ color("blue", 0.4)
+ {
+ m3_id = m3_hole_insert_diameter;
+ m3_h = m3_hole_insert_height;
+ translate([xd, yd, m3_h / 2])
+ cylinder($fn = dToFn(m3_id), d = m3_id, h = m3_h, center = true);
+
+ translate([xd + ls_pcb_h_delta_btw_holes, yd, m3_h / 2])
+ cylinder($fn = dToFn(m3_id), d = m3_id, h = m3_h, center = true);
+ }
+}
- translate([(bshs[0] - 20) / 2, 0, -20 / 2])
- rotate([-90, 0, 0])
- profile_20x20x50();
+module base()
+{
+
+ // base
+ color("orange", 0.4)
+ {
+ // left wall
+ translate([-sws[0] / 2 - bshs[0] / 2, sws[1] / 2, sws[2] / 2 - 20])
+ cube(sws, center = true);
+
+ // right wall
+ translate([sws[0] / 2 + bshs[0] / 2, sws[1] / 2, sws[2] / 2 - 20])
+ cube(sws, center = true);
+
+ // top wall
+ top_s = [bshs[0] + bwt * 2, sws[1], bwt];
+ translate([0, top_s[1] / 2, top_s[2] / 2 + bshs[2]])
+ cube(top_s, center = true);
+ }
+}
+
+module stand()
+{
+ // back plate/motor holder
+ color("black", 0.5)
+ translate([0, -bps[1] / 2, bps[2] / 2 - 20])
+ cube(bps, center = true);
+
+ // back screw holder
+ color("black", 0.5)
+ translate([0, bshs[1] / 2 + bp_bsh_dist, bshs[2] / 2])
+ cube(bshs, center = true);
+
+ // profiles base
+ color("grey")
+ {
+ translate([-(bshs[0] - 20) / 2, 0, -20 / 2])
+ rotate([-90, 0, 0])
+ profile_20x20x50();
+
+ translate([(bshs[0] - 20) / 2, 0, -20 / 2])
+ rotate([-90, 0, 0])
+ profile_20x20x50();
+ }
}
-// base
-color("orange", 0.4)
-union()
+module stand_top_m3_holes()
{
- translate([-sws[0] / 2 - bshs[0] / 2, sws[1] / 2, sws[2] / 2 - 20])
- cube(sws, center = true);
+ m3_id = m3_hole_insert_diameter;
+ m3_h = m3_hole_insert_height;
- translate([sws[0] / 2 + bshs[0] / 2, sws[1] / 2, sws[2] / 2 - 20])
- cube(sws, center = true);
+ rxo = bshs[0] / 2 + bwt / 2;
+ lxo = -rxo;
- top_s = [bshs[0] + bwt * 2, sws[1], bwt];
- translate([0, top_s[1] / 2, top_s[2] / 2 + bshs[2]])
- cube(top_s, center = true);
-} \ No newline at end of file
+ for (xo = [rxo, lxo], yo = [sws[1] * 1 / 6, sws[1] * 3 / 6, sws[1] * 5 / 6])
+ {
+ translate([xo, yo, -20 + sws[2] + bwt + $tiny_padding])
+ cylinder($fn = dToFn(m3_id), d = m3_id, h = m3_h * 2, center = true);
+ }
+}
+
+module stand_top_m3_screw_holes()
+{
+ m3_id = m3_hole_insert_diameter;
+ m3_h = m3_hole_insert_height;
+
+ rxo = bshs[0] / 2 + bwt / 2;
+ lxo = -rxo;
+
+
+ for (xo = [rxo, lxo], yo = [sws[1] * 1 / 6, sws[1] * 3 / 6, sws[1] * 5 / 6])
+ {
+ translate([xo, yo, -20 + sws[2] + bwt + $tiny_padding])
+ //cylinder($fn = dToFn(m3_id), d = m3_id, h = m3_h * 2, center = true);
+ scale([1, 1, 2])
+ screw_hole(
+ m = m3,
+ id = m3_hole_insert_diameter,
+ il = m3_hole_insert_height * 2,
+ hd = m3_head_diameter,
+ hh = m3_head_height,
+ hs = hole_side_top);
+ }
+}
+
+module base_to_print()
+{
+ difference()
+ {
+ base();
+ translate([0, sws[1], -20 + sws[2]])
+ limit_switch();
+ base_side_screw_holes();
+ stand_top_m3_holes();
+ }
+}
+
+module scanner_side_hole_cutters()
+{
+ id = 4;
+
+ side_offsets = [
+ back_bottom_side_hole_offset + [0, 0, 0],
+ back_top_side_hole_offset + [0, 0, 0],
+ top_side_hole_offset + [0, -id, -id],
+ front_bottom_side_hole_offset + [0, -id * 2, 0],
+ front_top_side_hole_offset + [0, -id * 2, 0]
+ ];
+
+ // left x offset
+ lxo = -main_frame_width_x / 2;
+ rxo = -lxo;
+
+ color("red")
+ //translate([0, 0, 0])
+ translate([0, wt, 0])
+
+ for (so = side_offsets)
+ {
+ translate(so + [lxo, 0, 0])
+ screw_hole(
+ m = m2,
+ id = 4,
+ il = m2_hole_insert_height * 2,
+ hd = m2_head_diameter,
+ hh = m2_head_height,
+ hs = hole_side_left);
+
+ translate(so + [rxo, 0, 0])
+ screw_hole(
+ m = m2,
+ id = 4,
+ il = m2_hole_insert_height * 2,
+ hd = m2_head_diameter,
+ hh = m2_head_height,
+ hs = hole_side_right);
+ }
+}
+
+module scanner_holder()
+{
+ top_s = [bshs[0] + bwt * 2, sws[1], wt * 2];
+ cut_s = [main_frame_width_x, sws[1] * 2, wt + $tiny_padding * 2];
+
+ difference()
+ {
+ color("green", 0.3)
+ translate([0, top_s[1] / 2, top_s[2] / 2 + bshs[2] + bwt])
+ cube(top_s, center = true);
+
+
+ color("red", 0.3)
+ translate([0, top_s[1] / 2, cut_s[2] / 2 + bshs[2] + bwt + wt])
+ cube(cut_s, center = true);
+ }
+}
+
+*stand();
+
+*union()
+{
+ base();
+ translate([0, sws[1], -20 + sws[2]])
+ limit_switch();
+ base_side_screw_holes();
+ stand_top_m3_holes();
+}
+
+module scanner_holder_to_print()
+{
+ difference()
+ {
+ scanner_holder();
+ stand_top_m3_screw_holes();
+ }
+}
+
+*translate([0, -back_wall_offset + wt, -20 + sws[2] + bwt + wt])
+translate([0, 0, laser_holder_size()[2] / 2 + wt])
+{
+ scanner_side_hole_cutters();
+
+ color("yellow", 0.2)
+ body_to_print();
+}
+
+//stand_top_m3_holes();
+//stand_top_m3_screw_holes();
+
+color("grey", 0.6)
+base_to_print();
+
+//scanner_holder();
+scanner_holder_to_print(); \ No newline at end of file