/* Pièce intérieure de la disqueuse bosh */ width = 20; tail_height = 8.3; tail_len = 12.5; tail_conn_radius_min = 8; mid_radius_min = 11.7; module tail_rep1() { /* Tail part */ translate([-tail_len, 0, (tail_height / 2)]) rotate([-90, 0, 0]) difference() { union() { cylinder(d = tail_height, h = width, $fn = 50); translate([0, -(tail_height / 2), 0]) cube([tail_len, tail_height, width]); } union() { translate([0, 0, 12]) cylinder(d = (tail_height - 2.5), h = 9, $fn = 50); translate([0, 0, -1]) cylinder(d = (tail_height - 2.5), h = 9, $fn = 50); } } /* Bend part 1 */ translate([0, 0, -tail_conn_radius_min]) rotate([-90, 0, 0]) difference() { cylinder(r = (tail_conn_radius_min + tail_height), h = width, $fn = 200); union() { translate([0, 0, -0.1]) cylinder(r = tail_conn_radius_min, h = (width + 0.2), $fn = 200); translate([-50, -50, -1]) cube([50, 100, 22]); rotate([0, 0, -(90 - 30)]) translate([-50, 0, -1]) cube([100, 50, 22]); } } /* Bend part 2 */ translate([(28 * sin(30)), 0, ((28 * cos(30)) - 8)]) rotate([0, 30, 0]) translate([0, width, 0]) rotate([90, 0, 0]) difference() { cylinder(r = (mid_radius_min + tail_height), h = width, $fn = 200); union() { translate([0, 0, -0.1]) cylinder(r = mid_radius_min, h = (width + 0.2), $fn = 200); translate([-50, -50, -1]) cube([50, 100, 22]); rotate([0, 0, -45]) translate([-50, 0, -1]) cube([100, 50, 22]); } } } module tail() { rotate([0, 4, 0]) translate([0, 0, 20]) rotate([0, 45, 0]) translate([0, 0, -28]) rotate([0, -30, 0]) translate([0, 0, 8]) tail_rep1(); } d_ext_blocker = 11; d_ext_blocker_top_washer = 15.25; h_blocker = 15; d_int_blocker = 6.2; d1_ext_screw_housing = 12; h1_ext_screw_housing = 14.5; d2_ext_screw_housing = 6.6; h2_ext_screw_housing = 16; d_int_screw_hole = 4.25; d_int_bearing = 12.2; d_ext_bearing = 16; module body() { difference() { union() { /* Blocker housing */ difference() { union() { translate([(d_ext_blocker / 2), (width / 2), -2]) cylinder(d = d_ext_blocker, h = h_blocker, $fn = 200); cube([10, width, tail_height]); } translate([11.5, 5.6, 3.5]) rotate([90, 0, 0]) cylinder(d = d1_ext_screw_housing, h = h1_ext_screw_housing, $fn = 200); } translate([(d_ext_blocker / 2), (width / 2), (h_blocker - 4)]) cylinder(d = d_ext_blocker_top_washer, h = 1, $fn = 200); /* Front screw housing */ translate([11.5, 20, 3.5]) rotate([90, 0, 0]) { cylinder(d = d1_ext_screw_housing, h = h1_ext_screw_housing, $fn = 200); cylinder(d = d2_ext_screw_housing, h = h2_ext_screw_housing, $fn = 200); } /* Bearing */ translate([-6.5, (width / 2), -2]) cylinder(d1 = d_ext_bearing, d2 = (d_ext_bearing + 2), h = 10, $fn = 200); translate([-6.5, (width / 2), 8]) cylinder(d = (d_ext_bearing + 2), h = 1.5, $fn = 200); /* Tail */ tail(); /* Ailettes */ translate([-14.5, -3, 7]) minkowski() { cube([14.5, 25.5, 0.8]); sphere(r = 0.5, $fn = 50); } } union() { /* Blocker housing */ translate([(d_ext_blocker / 2), (width / 2), -4]) cylinder(d = d_int_blocker, h = 20, $fn = 200); translate([(d_ext_blocker / 2), (width / 2), -3.52]) cylinder(d = (d_int_blocker + 2), h = 2, $fn = 200); /* Front screw housing - left */ translate([11.5, 21, 3.5]) rotate([90, 0, 0]) cylinder(d = d_int_screw_hole, h = 21, $fn = 200); /* Front screw housing - right */ translate([11.5, 21, 3.5]) rotate([90, 0, 0]) cylinder(d = 8, h = 6.5, $fn = 200); /* Bearing */ translate([-6.5, (width / 2), -2.1]) cylinder(d = d_int_bearing, h = 8.1, $fn = 200); translate([-6.5, (width / 2), -2.1]) cylinder(d1 = (d_int_bearing + 1), d2 = d_int_bearing, h = 1.1, $fn = 200); /* Grinder tool shaft */ translate([-6.5, (width / 2), -2.1]) cylinder(d = d_int_bearing - 3, h = 10, $fn = 200); /* Bearing top hole */ translate([-2.5, (width / 2), -2.1]) cylinder(d = 2.5, h = 12, $fn = 200); /* Limit support */ translate([0, 0, -4]) cube([50, 50, 2]); } } } body();