X-Git-Url: http://git.hcoop.net/clinton/prusa3.git/blobdiff_plain/00a217e3d3dd905af40a884ac0a10ee7d92d9e3d..HEAD:/box_frame/z-axis.scad diff --git a/box_frame/z-axis.scad b/box_frame/z-axis.scad index c1de637..ca011c8 100644 --- a/box_frame/z-axis.scad +++ b/box_frame/z-axis.scad @@ -21,34 +21,35 @@ // todo -// - fix motor holder wall removal so it is sensible and actually -// removes the right thing // - fix changing board_thickness, add way to specify # of bolts in // side of frame (assume even spacing for now) include module zmotorholder(thickness=(frame_type == frame_single ? 38 : 23), bottom_thickness=5){ - position_y = board_to_xz_distance + zaxis_delta_y + zmotor_delta_y; + // fixme: position_y magic number (x-end leadscrew placement has + // same issue -- should share some base value + offset for part + // being generated) + position_y = 26 + zaxis_delta_y + zmotor_delta_y; position_x = board_to_xz_distance + zaxis_delta_x + zmotor_delta_x; difference(){ union(){ // Motor holding part difference(){ union(){ - zrodholder(thickness=thickness, xlen=45 + zmotor_delta_x + zaxis_delta_x, ylen=48 + 5 + zmotor_delta_y + zaxis_delta_y, zdelta=((i_want_to_use_single_plate_dxf_and_make_my_z_weaker == 0) ? 0 : 5), bottom_x = 50 + zaxis_delta_x + zmotor_delta_x, bottom_y = 15 + zmotor_delta_y + zaxis_delta_y, am_top=0, bottom_thickness=bottom_thickness); + zrodholder(thickness=thickness, xlen=board_to_xz_distance+21 + zmotor_delta_x + zaxis_delta_x, ylen=48 + 5 + zmotor_delta_y + zaxis_delta_y, zdelta=((i_want_to_use_single_plate_dxf_and_make_my_z_weaker == 0) ? 0 : 5), bottom_x = board_to_xz_distance-12 + zaxis_delta_x + zmotor_delta_x, bottom_y = 15 + zmotor_delta_y + zaxis_delta_y, am_top=0, bottom_thickness=bottom_thickness); translate([position_x, position_y, 0]) { - nema17(places=[1, 1, 1, 1], h=bottom_thickness + layer_height, $fn=23, shadow=layer_height + 2); + nema17(places=[0, 1, 1, 1], h=bottom_thickness + layer_height, $fn=23, shadow=false/*layer_height + 2*/); } } // remove any interfering walls - translate([position_x, position_y, layer_height + 2 + 21 +3]) { - cube([43 + zmotor_delta_x + zaxis_delta_x,43,42], center = true); + translate([5 + zaxis_delta_x + zmotor_delta_x, 5 + zaxis_delta_y + zmotor_delta_y, -42.001]) { + cube([43,43,42]); } // motor rotor clearance translate([position_x, position_y, 0]) { - cylinder(r=11,h=20, center = true); + #cylinder(r=11,h=20, center = true); } // motor screw holes @@ -60,7 +61,7 @@ module zmotorholder(thickness=(frame_type == frame_single ? 38 : 23), bottom_thi // not use this to offset the leadscrew hole either. translate([position_x, position_y, thickness]) { mirror([0, 0, 1]) translate([0, 0, thickness-8]) - #nema17(places=[1, 1, 1, 1], holes=true, h=bottom_thickness + 1, $fn=small_hole_segments); + nema17(places=[1, 1, 1, 1], holes=true, h=bottom_thickness + 1, $fn=small_hole_segments); //shadow=-6 + layer_height); } } @@ -72,24 +73,24 @@ module zmotorholder(thickness=(frame_type == frame_single ? 38 : 23), bottom_thi module zrodholder(thickness=(frame_type == frame_single ? 14 : 15), bottom_thickness=5, ylen=44, xlen=34, zdelta=0, bottom_y=14, bottom_x=14, am_top=1){ holder_inner_r = 9; holder_inner_r2 = 2; - smooth_rod_insert_radius = bushing_z[0] + 5 * single_wall_width; + smooth_rod_insert_radius = bushing_z[0] + 6 * single_wall_width; difference(){ union(){ difference(){ union() { //piece along the flat side of a board - cube_fillet([bottom_x, ylen, bottom_thickness], vertical=[8, 3, 0, 0]); + cube_fillet([bottom_x, ylen, bottom_thickness], vertical=[8, 3, 0, 0]); if (frame_type == frame_alu) { top_radius = am_top ? thickness : thickness / 3; - cube_fillet([5, ylen, thickness], vertical=[0, 0, 0, 0], top = [top_radius, 0, 0, 0]); + translate ([0, 0, -thickness + bottom_thickness]) cube_fillet([5, ylen, thickness], vertical=[0, 0, 0, 0], bottom = [top_radius, 0, 0, 0]); // FIXME: make rear/top bit optional, but don't remove entirely // (printer seems to make less noise with the rear bit) %if (am_top) { // rear bracket - translate ([-board_thickness - 5, 0, 0]) - cube_fillet([5, ylen, thickness], vertical=[0, 0, 0, 0], top = [top_radius, 0, 0, 0]); - translate ([-board_thickness, 5, 0]) + translate ([-board_thickness - 5, 0, -thickness + bottom_thickness]) + cube_fillet([5, ylen, thickness], vertical=[0, 0, 0, 0], bottom = [top_radius, 0, 0, 0]); + translate ([-board_thickness, 5, bottom_thickness/2]) cube ([board_thickness, ylen - 6, bottom_thickness/2]); } } @@ -120,9 +121,13 @@ module zrodholder(thickness=(frame_type == frame_single ? 14 : 15), bottom_thick } // leadscrew bearing hole is cut from this if (am_top) { - lead_bearing_y = board_to_xz_distance + zaxis_delta_y + zmotor_delta_y; + // fixme: position_y magic number (x-end leadscrew placement has + // same issue -- should share some base value + offset for part + // being generated) + // FIXME: share these values with the subtracted part + lead_bearing_y = 26 + zaxis_delta_y + zmotor_delta_y; lead_bearing_x = board_to_xz_distance + zaxis_delta_x + zmotor_delta_x; - translate ([lead_bearing_x, lead_bearing_y, 0]) cylinder (d = bearing_608[0] + 1 + 2, h = bearing_608[2] + layer_height*4); + translate ([lead_bearing_x, lead_bearing_y, -(bearing_608[2] + layer_height * 6 - bottom_thickness)]) cylinder (d = bearing_608[0] + single_wall_width * 6, h = bearing_608[2] + layer_height*6); } //piece along cut side of the board if (frame_type == frame_box) { @@ -133,28 +138,25 @@ module zrodholder(thickness=(frame_type == frame_single ? 14 : 15), bottom_thick translate ([0, 0 /* zaxis_delta_y */, 0]) { // back - translate([-board_thickness, 0, 0]) { + translate([-board_thickness, 0, -thickness + bottom_thickness]) { cube_fillet([board_thickness, side_thickness, thickness], vertical = [0, 0, 0, 0], top = [0, 0, 0, 0]); } // front - //cube_fillet([am_top ? board_to_xz_distance + zaxis_delta_x - smooth_rod_insert_radius : xlen + zaxis_delta_x , side_thickness, thickness], vertical = [2, 0, 0, 0], top = [0, 0, 0, thickness]); - cube_fillet([am_top ? board_to_xz_distance + zaxis_delta_x - smooth_rod_insert_radius : xlen , side_thickness, thickness / (am_top ? 1 : 1.5)], vertical = [2, 0, 0, 0], top = [0, 0, 0, thickness]); - - // extra support for motor - if (!am_top) { - translate ([0, ylen - side_thickness, 0]) cube_fillet([xlen/* board_to_xz_distance + zaxis_delta_x - smooth_rod_insert_radius */ , side_thickness, thickness/1.5], vertical = [2, 0, 0, 0], top = [0, 0, 0, thickness]); - } + front_support_thickness = thickness / (am_top ? 1 : 1.5); + translate ([0, 0, -front_support_thickness + bottom_thickness]) cube_fillet([am_top ? board_to_xz_distance + zaxis_delta_x - smooth_rod_insert_radius : xlen , side_thickness, front_support_thickness], vertical = [0, 0, 0, 0], bottom = [0, 0, 0, thickness]); } - // extra support along edge of smooth rod hole - radius_diff = smooth_rod_insert_radius - bushing_z[0]; - hull () { - translate([-board_thickness/3, -zaxis_delta_y/3, 0]) { - cube_fillet([board_thickness/3 + board_to_xz_distance + zaxis_delta_x - bushing_z[0] , -zaxis_delta_y/3 , thickness/2], vertical = [2, 0, 4, 0], top = [0, 0, 4, thickness/2]); - } - translate([board_to_xz_distance/2, -zaxis_delta_x + radius_diff/6, 0]) { - cube_fillet([board_to_xz_distance/2 + zaxis_delta_x + smooth_rod_insert_radius*0.75, radius_diff/3 , bottom_thickness*2], vertical = [2, 0, 4, bushing_z[0] * smooth_rod_insert_radius/bushing_z[0]], top = [0, 0, 2, thickness/4]); + if (zaxis_delta_x > 0 || zaxis_delta_y < 0) { + // extra support along edge of smooth rod hole, if it has been moved away from the frame + radius_diff = smooth_rod_insert_radius - bushing_z[0]; + hull () { + translate([-board_thickness/3, zaxis_delta_x/3, -(thickness/2 - bottom_thickness)]) { + cube_fillet([board_thickness/3 + board_to_xz_distance + zaxis_delta_x - bushing_z[0] , -zaxis_delta_y/3 , thickness/2], vertical = [2, 0, 4, 0], bottom = [0, 0, 4, thickness/2]); + } + translate([board_to_xz_distance/2, zaxis_delta_y + radius_diff/6, - bottom_thickness]) { + cube_fillet([board_to_xz_distance/2 + zaxis_delta_x + smooth_rod_insert_radius*0.75, radius_diff/3 , bottom_thickness*2], vertical = [2, 0, 4, bushing_z[0] * smooth_rod_insert_radius/bushing_z[0]], bottom = [0, 0, 2, thickness/4]); + } } } } else { @@ -162,14 +164,16 @@ module zrodholder(thickness=(frame_type == frame_single ? 14 : 15), bottom_thick cube_fillet([board_thickness/2 + board_to_xz_distance + bushing_z[0], 5, thickness], radius=2, top = [0, 0, 0, thickness], $fn=99); } //smooth rod insert - translate([board_to_xz_distance - z_delta + zaxis_delta_x, 9 + zaxis_delta_y, 0]) - cylinder(h=bottom_thickness * (am_top ? 1.75 : 1.75), r=smooth_rod_insert_radius); + rod_insert_h = bottom_thickness * (am_top ? 1.75 : 1.75); + translate([board_to_xz_distance - z_delta + zaxis_delta_x, 9 + zaxis_delta_y, -rod_insert_h + bottom_thickness]) + cylinder(h=rod_insert_h, r=smooth_rod_insert_radius); } // === difference === //smooth rod hole - #translate([board_to_xz_distance - z_delta + zaxis_delta_x, 9 + zaxis_delta_y, -1]) cylinder(h=am_top ? thickness+20 : bottom_thickness, r=bushing_z[0] + single_wall_width / 4); + rod_insert_hole_h = am_top ? thickness+20 : bottom_thickness; + translate([board_to_xz_distance - z_delta + zaxis_delta_x, 9 + zaxis_delta_y, bottom_thickness - rod_insert_hole_h]) cylinder(h=rod_insert_hole_h + 1, r=bushing_z[0] + single_wall_width / 4); //inside rouned corner if (frame_type != frame_alu) { translate([0, 5, -1]) cylinder(r=0.8, h=100, $fn=8); @@ -177,14 +181,16 @@ module zrodholder(thickness=(frame_type == frame_single ? 14 : 15), bottom_thick // leadscrew hole if (am_top) { - lead_bearing_y = board_to_xz_distance + zaxis_delta_y + zmotor_delta_y; + // fixme: position_y magic number (x-end leadscrew placement has + // same issue -- should share some base value + offset for part + // being generated) + // FIXME: share these values with the solid part + lead_bearing_y = 26 + zaxis_delta_y + zmotor_delta_y; lead_bearing_x = board_to_xz_distance + zaxis_delta_x + zmotor_delta_x; - translate ([lead_bearing_x, lead_bearing_y, 0]) { - difference () { - union () { - translate ([0, 0, 1]) cylinder (d = 10.8, h = bearing_608[2]*2); - translate ([0, 0, -1]) cylinder (d = 23, h = bearing_608[2]+1); - } + translate ([lead_bearing_x, lead_bearing_y, bottom_thickness - bearing_608[2]]) { + union () { + translate ([0, 0, -bearing_608[2]*2 + 1]) cylinder (d = 10.8, h = bearing_608[2]*2); + translate ([0, 0, 0]) cylinder (d = bearing_608[0], h = bearing_608[2]+1); } } } @@ -204,26 +210,26 @@ module zrodholder(thickness=(frame_type == frame_single ? 14 : 15), bottom_thick } } else if (frame_type == frame_alu) { // three screws on front - translate([18, ylen - board_thickness/2, bottom_thickness/2 + board_thickness/2 + zdelta]) rotate([0, -90, 0]) plate_screw(); - translate([18, 5 + board_thickness/2, bottom_thickness/2 + board_thickness/2 + zdelta]) rotate([0, -90, 0]) plate_screw(); - translate([18, 5 + board_thickness/2, thickness - board_thickness/2]) rotate([0, -90, 0]) + translate([18, ylen - board_thickness/2, bottom_thickness/2 - board_thickness/2 + zdelta]) rotate([0, -90, 0]) plate_screw(); + translate([18, 5 + board_thickness/2, bottom_thickness/2 - board_thickness/2 + zdelta]) rotate([0, -90, 0]) plate_screw(); + translate([18, 5 + board_thickness/2, -thickness + bottom_thickness + board_thickness/2]) rotate([0, -90, 0]) plate_screw(); // motor mount screw for opposite extrusion - translate([18, ylen - board_thickness/2, thickness - board_thickness/2]) rotate([0, -90, 0]) + translate([18, ylen - board_thickness/2, -thickness + bottom_thickness + board_thickness/2]) rotate([0, -90, 0]) plate_screw(); // back plate - translate([-board_thickness-18, ylen - board_thickness/2, thickness - board_thickness/2]) rotate([0, 90, 0]) + translate([-board_thickness-18, ylen - board_thickness/2, -thickness + bottom_thickness + board_thickness/2]) rotate([0, 90, 0]) plate_screw(); - translate([-board_thickness-18, 5 + board_thickness/2, thickness - board_thickness/2]) rotate([0, 90, 0]) + translate([-board_thickness-18, 5 + board_thickness/2, -thickness + bottom_thickness + board_thickness/2]) rotate([0, 90, 0]) plate_screw(); - translate([-board_thickness-18, ylen - board_thickness/2, bottom_thickness/2 + board_thickness/2 + zdelta]) rotate([0, 90, 0]) plate_screw(); - #translate([-board_thickness-18, 5 + board_thickness/2, bottom_thickness/2 + board_thickness/2 + zdelta]) rotate([0, 90, 0]) plate_screw(); + translate([-board_thickness-18, ylen - board_thickness/2, bottom_thickness/2 - board_thickness/2 + zdelta]) rotate([0, 90, 0]) plate_screw(); + translate([-board_thickness-18, 5 + board_thickness/2, bottom_thickness/2 - board_thickness/2 + zdelta]) rotate([0, 90, 0]) plate_screw(); //side screws - #translate([-board_thickness/2, -13, thickness-board_thickness/2]) rotate([-90, 0, 0]) plate_screw(); - translate([-board_thickness/2, -13, bottom_thickness/2 + board_thickness/2 + zdelta]) rotate([-90, 0, 0]) plate_screw(); + translate([-board_thickness/2, -13, bottom_thickness + board_thickness/2 - thickness]) rotate([-90, 0, 0]) plate_screw(); + translate([-board_thickness/2, -13, bottom_thickness/2 - board_thickness/2 + zdelta]) rotate([-90, 0, 0]) plate_screw(); } else if (frame_type == frame_box) { translate([16, 30, bottom_thickness+4]) rotate([0, -90, 0]) { plate_screw(); @@ -237,13 +243,15 @@ module zrodholder(thickness=(frame_type == frame_single ? 14 : 15), bottom_thick } if (frame_type == frame_alu) { + //zmotorholder(thickness=55, bottom_thickness=6); // 2020 aluminum frame parts are larger - translate([0, -60, 0]) zmotorholder(thickness=55, bottom_thickness=6); - translate([0, 60, 0]) mirror([0, 1, 0]) zmotorholder(thickness=55, bottom_thickness=6); - - translate([110 + board_thickness, board_thickness+10, 0]) rotate([0,0,90]) zrodholder(thickness=board_thickness * 2 + 5, ylen = board_thickness * 2 + 10, bottom_x=48, bottom_thickness=6); - translate([110 + board_thickness, -(board_thickness+10), 0]) rotate([0, 0, -90]) mirror([0, 1, 0]) zrodholder(thickness=board_thickness * 2 + 5, ylen = board_thickness * 2 + 10, bottom_x=48, bottom_thickness=6); + rotate ([0, 180, 0]) { + translate([0, -60, 0]) zmotorholder(thickness=55, bottom_thickness=6); + translate([0, 60, 0]) mirror([0, 1, 0]) zmotorholder(thickness=55, bottom_thickness=6); + translate([110 + board_thickness, board_thickness+10, 0]) rotate([0,0,90]) zrodholder(thickness=board_thickness * 2 + 5, ylen = board_thickness * 2 + 10, bottom_x=board_to_xz_distance+17 + zaxis_delta_x, bottom_thickness=6); + translate([110 + board_thickness, -(board_thickness+10), 0]) rotate([0, 0, -90]) mirror([0, 1, 0]) zrodholder(thickness=board_thickness * 2 + 5, ylen = board_thickness * 2 + 10, bottom_x=board_to_xz_distance+17 + zaxis_delta_x, bottom_thickness=6); + } } else { translate([10, -50, 0]) zmotorholder();