use <./common/common.scad> PLATE_X = -6; PLATE_Y = 25; module bolex_debug (pad = 0) { cylinder(r = R(29) + pad, h = 10, center = true, $fn = 80); translate([0, 0, 6]) cylinder(r = R(29), h = 10, center = true, $fn = 80); translate([3 + 18.5, 17, 50 - 4]) rotate([0, 90, 0]) cylinder(r = R(100), h = 36,center = true, $fn = 180); translate([5.55, 0, 35]) rotate([0, 90, 0]) rounded_cube([50, 135, 67.9], d = 15, center = true); } module debug () { bolex_debug(); base_plate([-PLATE_X, -PLATE_Y, 3]); } module bolt_voids () { $fn = 80; translate([10, -25, 0]){ //base reference // cube([50, 71.5, 40], center = true); //holes //translate([0, (71.5 / 2) - 12, 0]) cylinder(r = 10 / 2, h = 100, center = true); translate([0, (71.5 / 2) - 34, 0]) { cylinder(r = R(6.5), h = 100, center = true); translate([0, 0, 9]) cylinder(r = R(13), h = 10, center = true, $fn = 6); } translate([(-50 / 2) + 18, (71.5 / 2) - 62, 0]) { cylinder(r = R(10), h = 100, center = true); translate([0, 0, 9]) cylinder(r = R(16.5), h = 10, center = true, $fn = 6); } } } module base_plate (pos = [0, 0, 0], rot = [0, 0, 0]) { translate(pos) rotate(rot) { difference () { rotate([0, 90, 0]) rounded_cube([28, 90.5, 55.3], d = 4, center = true, $fn = 40); translate([PLATE_X, PLATE_Y, -3]) { bolex_debug(0.2); cylinder(r = R(10), h = 60, center = true, $fn = 40); translate([0, 0, -37]) cylinder(r = R(17), h = 60, center = true, $fn = 40); bolt_voids(); } translate([-20, 58, 0]) cube([40, 40, 40], center = true); } } } PART = ""; if (PART == "") { base_plate(); } else { debug(); }