$fn = 64;
+hole_tolerance = 0.6; // widen holes a bit, may still need to drill out
+
+// Size of mounting bolt heads so they can be recessed
+bolthead_depth = 1.6;
+bolthead_diameter = 5.5 + hole_tolerance;
+
carriage_height = 64;
carriage_width = 52;
plate_width = 75; // wilson carriage is only 50mm wide!
-plate_depth = 6; // wilson default depth = 8, makerfarm = 6
-
-hole_tolerance = 0.25; // widen holes a bit, may still need to drill out
+plate_depth = 6 + bolthead_depth; // wilson default depth = 8, makerfarm = 6
plate_cut_height = 6.5;
plate_cut_width = 6;
-plate_cut_distance = 13;
-plate_cut_center = 25.1;
+plate_cut_distance = 13.3;
plate_cut_y_offset = 27;
plate_cut_bolt = 3 + hole_tolerance;
-plate_cut_x_bolt_offset = 10.5 + plate_cut_bolt / 2;
+plate_cut_x_bolt_offset = plate_cut_distance + plate_cut_bolt / 2;
plate_extra_height = 4; // make plate a bit taller so it is structurally sound
-plate_height = plate_cut_height + plate_cut_y_offset + plate_extra_height;
+plate_height = plate_cut_height + plate_cut_y_offset + plate_extra_height;
lower_cut_y_offset = 5.33; // 5.325 in CAD
lower_bolt_x_offset = 1.5 + plate_cut_bolt / 2;
carriage_clearance = 20; // holes are 20mm from bottom of plate
carriage_y_offset = plate_cut_y_offset + plate_cut_height + carriage_clearance;
carriage_nut_depth = 3.2 + 3.2/2 + 0.1; // m4 nut depth + half of an m4 nut + tolerance
+carriage_offset = [(plate_width - carriage_width) / 2, 0 , 0];
corner_radius = 3; // round off the corners to make it look nicer
-shelf_mount ();
-translate ([(plate_width - carriage_width) / 2, plate_height - plate_extra_height/2, 0]) carriage_mount ();
-// mount to wilson x-carriage
-module carriage_mount () {
- difference () {
- linear_extrude (height = plate_depth, convexity = 8) {
- // outline of plate + bolt holes
- difference () {
- translate ([corner_radius, corner_radius, 0]) {
- minkowski () {
- square ([carriage_width - corner_radius*2, carriage_height - corner_radius]);
- circle (r = corner_radius);
- }
- }
+difference () {
+ union () {
+ translate (carriage_offset) carriage_mount_base ();
+ shelf_mount_base ();
+ }
+ translate (carriage_offset) carriage_mount_holes ();
+ shelf_mount_holes ();
+}
- #translate ([(carriage_width - carriage_hole_spacing) / 2, (carriage_height - carriage_hole_spacing) /2, 0])
- for (x = [0, carriage_hole_spacing], y = [0, carriage_hole_spacing]) {
- translate ([x, y, 0]) circle (d = carriage_bolt);
- }
+// mount to wilson x-carriage
+module carriage_mount_base () {
+ linear_extrude (height = plate_depth, convexity = 8) {
+ // outline of plate + bolt holes
+ translate ([corner_radius, corner_radius, 0]) {
+ minkowski () {
+ square ([carriage_width - corner_radius*2, carriage_height - corner_radius]);
+ circle (r = corner_radius);
}
}
- // after extruding, cut out spaces for M4 hex nuts.
- translate ([(carriage_width - carriage_hole_spacing) / 2, (carriage_height - carriage_hole_spacing) /2, plate_depth - carriage_nut_depth]) {
- for (x = [0, carriage_hole_spacing], y = [0, carriage_hole_spacing]) {
- translate ([x, y, 0]) linear_extrude (height = carriage_nut_depth + 0.01) nutHole (size = carriage_bolt, proj = 1);
- }
+ }
+}
+
+module carriage_mount_holes () {
+ #translate ([(carriage_width - carriage_hole_spacing) / 2, (carriage_height - carriage_hole_spacing) /2, 0])
+ for (x = [0, carriage_hole_spacing], y = [0, carriage_hole_spacing]) {
+ translate ([x, y, -0.1]) cylinder (d = carriage_bolt, h = plate_depth+1);
+ }
+
+ // after extruding, cut out spaces for M4 hex nuts.
+ translate ([(carriage_width - carriage_hole_spacing) / 2, (carriage_height - carriage_hole_spacing) /2, plate_depth - carriage_nut_depth]) {
+ for (x = [0, carriage_hole_spacing], y = [0, carriage_hole_spacing]) {
+ translate ([x, y, 0]) linear_extrude (height = carriage_nut_depth + 0.01) nutHole (size = carriage_bolt, proj = 1);
}
}
}
// mount for makerfarm extruder shelf
-module shelf_mount () {
- linear_extrude (height = plate_depth, convexity = 8) {
- difference () {
- translate ([corner_radius, corner_radius, 0]) {
- minkowski () {
- square ([plate_width - corner_radius*2, plate_height - corner_radius*2]);
- circle (r = corner_radius);
- }
+module shelf_mount_base () {
+ linear_extrude (height = plate_depth, convexity = 8) {
+ translate ([corner_radius, corner_radius, 0]) {
+ minkowski () {
+ square ([plate_width - corner_radius*2, plate_height - corner_radius*2]);
+ circle (r = corner_radius);
}
+ }
+ }
+}
+module shelf_mount_holes () {
+ depth = plate_depth+0.2;
+ translate ([0, 0, -0.1]) {
// upper shelf mount
- translate ([0, plate_cut_y_offset, 0]) {
- for (x = [-0.01, plate_cut_width + plate_cut_distance, plate_cut_width*2 + plate_cut_distance + plate_cut_center, plate_cut_width*3 + plate_cut_distance*2 + plate_cut_center + 0.01])
- #translate ([x - hole_tolerance/2, 0, 0]) square ([plate_cut_width + hole_tolerance, plate_cut_height]);
+ translate ([plate_cut_width/2, plate_cut_y_offset, 0]) {
+ for (x = [-0.001, plate_cut_width + plate_cut_distance,
+ plate_width - plate_cut_width + 0.001, plate_width - plate_cut_width*2 - plate_cut_distance])
+ #translate ([x, plate_cut_height/2, 0]) cube ([plate_cut_width + hole_tolerance, plate_cut_height, depth], center = true);
+
+ // looks like the bolt is at the midpoint between the cut outs
+ for (x = [plate_cut_x_bolt_offset - plate_cut_width, plate_width - plate_cut_x_bolt_offset])
+ translate ([x, plate_cut_height / 2, 0]) {
+ #cylinder (d = plate_cut_bolt, h = depth);
+ cylinder (d = bolthead_diameter, h = bolthead_depth+0.1);
+ }
- // looks like the bolt is at the midpoint between the cut outs
- for (x = [plate_cut_x_bolt_offset, plate_width - plate_cut_x_bolt_offset])
- translate ([x, plate_cut_height / 2, 0]) circle (d = plate_cut_bolt + hole_tolerance);
}
// lower shelf mount
translate ([0, lower_cut_y_offset, 0]) {
for (x = [plate_cut_width/2 - 0.01, plate_width - plate_cut_width/2 + 0.01]) {
// lower cut out is closer to 6mm than 6.5mm in cad drawings
- translate ([x, plate_cut_height/2, 0]) square ([plate_cut_width, plate_cut_height - 0.5], center=true);
- }
+ translate ([x, plate_cut_height/2, 0]) cube ([plate_cut_width, plate_cut_height - 0.5, depth*2], center=true);
+ }
// I think the intention is for the screw holes to be centered over the cut out
for (x = [lower_bolt_x_offset, plate_width - lower_bolt_x_offset])
- translate ([x, plate_cut_height + lower_bolt_y_offset, 0]) circle (d = plate_cut_bolt + hole_tolerance);
+ translate ([x, plate_cut_height + lower_bolt_y_offset, 0]) {
+ cylinder (d = plate_cut_bolt, h = depth);
+ cylinder (d = bolthead_diameter, h = bolthead_depth+0.1);
+ }
}
}
- }
}