From: Clinton Ebadi Date: Wed, 22 May 2019 00:20:59 +0000 (-0400) Subject: doc: make complete-printer mockup work better X-Git-Url: http://git.hcoop.net/clinton/prusa3.git/commitdiff_plain/b000403de364af05475f74666968b91970018225 doc: make complete-printer mockup work better Still not perfect (e.g. x-axis length is hard coded), probably doesn't work except for frame_alu, but it now scales with changes to the length and diameter of the smooth rods, respects the zaxis deltas, and has a mockup for a leadscrew. --- diff --git a/box_frame/doc/complete-printer.scad b/box_frame/doc/complete-printer.scad index 3466055..4d7a656 100644 --- a/box_frame/doc/complete-printer.scad +++ b/box_frame/doc/complete-printer.scad @@ -10,8 +10,15 @@ use <../y-drivetrain.scad> use <../y-axis-corner.scad> use <../z-axis.scad> use <../x-end.scad> +use <../x-end-motor.scad> +use <../x-end-idler.scad> +//use <../x-end-orig.scad> use <../x-carriage.scad> +// quick rendering +$fa = 12; +$fs = 2; + module nutwasher(){ color("silver") difference(){ @@ -19,12 +26,12 @@ module nutwasher(){ translate([0,0,2])cylinder(r=15/2,h=7,$fn=6); translate([0,0,0.5])cylinder(r=8.5,h=1); } - translate([0,0,-1])cylinder(r=8/2,h=12); + translate([0,0,-1])cylinder(r=8/2,h=12); } } // y motor mount -translate([56-yrodseparation/2,-y_smooth_rod_length/2+9,0]) +translate([56-yrodseparation/2,-y_smooth_rod_length/2+9,0]) { rotate([0,90,0]) rotate([0,0,90]) motorholder(); translate([10,0,30])rotate([0,90,0])nutwasher(); @@ -34,9 +41,9 @@ translate([56-yrodseparation/2,-y_smooth_rod_length/2+9,0]) } // y idler mount -translate([70-yrodseparation/2,y_smooth_rod_length/2-9,30]) +translate([70-yrodseparation/2,y_smooth_rod_length/2-9,30]) { - translate([0,0-33,-8]) + translate([0,0-33,-8]) rotate([0,-90,0]) idlermount(); translate([0,0,0])rotate([0,90,0])nutwasher(); translate([-20,0,0])rotate([0,90,180])nutwasher(); @@ -59,7 +66,7 @@ module yfront() translate([-11,9,10])rotate([0,90,180])nutwasher(); translate([11,9,10])rotate([0,90,0])nutwasher(); - + // front top threaded rod color("Aqua") translate([-20,9,30]) rotate([0,90,0]) cylinder(h = 140, r=4); @@ -74,7 +81,7 @@ module yfront() translate([-yrodseparation/2,-y_smooth_rod_length/2]) { yfront(); -translate([0,y_smooth_rod_length,0]) +translate([0,y_smooth_rod_length,0]) mirror([0,1,0]) yfront(); } @@ -85,10 +92,10 @@ module yside() { // left top rod color("MediumBlue") - translate([0,0,45]) rotate([0,90,90]) cylinder(h = y_smooth_rod_length, r=4,center=true); + translate([0,0,45]) rotate([0,90,90]) cylinder(h = y_smooth_rod_length, r=bushing_xy[0],center=true); //left bottom rod color("Aqua") - translate([0,0,20]) rotate([0,90,90]) cylinder(h = 430, r=4,center=true); + translate([0,0,20]) rotate([0,90,90]) cylinder(h = y_smooth_rod_length, r=4,center=true); // middle nuts translate([0,0,20])rotate([0,-90,90])nutwasher(); translate([0,board_thickness,20])rotate([0,90,90])nutwasher(); @@ -109,66 +116,114 @@ translate([yrodseparation,0,0])yside(); color("Lime",0.25) translate([0,0,58]) cube([bed_x_size,bed_y_size,6], center=true); -board_sides=50; -board_w=bed_x_size+10+2*board_sides; +board_sides=(frame_type == frame_alu) ? board_thickness : 50 ; +// todo: auto set length of smooth rods and board using desired print volume +// fixme: just copied board_w from wilson bom for my specific printer... +board_w=(frame_type == frame_alu) ? 430 + board_thickness * 2 : bed_x_size+10+2*board_sides; +board_h=(frame_type == frame_alu) ? z_smooth_rod_length + 50 : 300; +board_cut_h=(frame_type == frame_alu) ? board_h - board_thickness * 2 : 200; +board_cut_w=(frame_type == frame_alu) ? board_w - board_thickness * 2 : bed_x_size + 10; + // XZ board -translate([0,board_thickness/2,150]) +translate([0,board_thickness/2,board_h/2]) %difference() { - cube([board_w,board_thickness,300],true); - translate([0,0,-15]) - cube([bed_x_size+10,board_thickness+2,200],true); + cube([board_w,board_thickness,board_h], center=true); + translate([0,0,(frame_type == frame_alu) ? 0 : -15]) + cube([board_cut_w,board_thickness+2,board_cut_h], center=true); } -// Z motor mounts -translate([-board_w/2-5,0,42]) -rotate(-90) -zmotorholder(); - -translate([board_w/2+5,0,42]) -rotate(-90) -mirror([0,1,0]) -zmotorholder(); - -// Z rod mounts -translate([-board_w/2-5,0,260]) -rotate(-90) -zrodholder(); - -translate([board_w/2+5,0,260]) -rotate(-90) -mirror([0,1,0]) -zrodholder(); +if (frame_type == frame_alu) { + // Z motor mounts + translate([-board_w/2-5,0,55 - 6]) + rotate(-90) + zmotorholder (thickness=55, bottom_thickness=6); + + translate([board_w/2+5,0,55 - 6]) + rotate(-90) + mirror([0,1,0]) + zmotorholder(thickness=55, bottom_thickness=6); + + // Z rod mounts + // 6 = bottom_thickness + translate([-board_w/2-5,0,board_h - 6/2]) + rotate(-90) + zrodholder(thickness=board_thickness * 2 + 5, ylen = board_thickness * 2 + 10, bottom_x=43 + zaxis_delta_x, bottom_thickness=6); + + translate([board_w/2+5,0,board_h - 6/2]) + rotate(-90) + mirror([0,1,0]) + zrodholder(thickness=board_thickness * 2 + 5, ylen = board_thickness * 2 + 10, bottom_x=43 + zaxis_delta_x, bottom_thickness=6); +} else { + // Z motor mounts + translate([-board_w/2-5,0,42]) + rotate(-90) + zmotorholder () + + translate([board_w/2+5,0,42]) + rotate(-90) + mirror([0,1,0]) + zmotorholder(); + + // Z rod mounts + translate([-board_w/2-5,0,260]) + rotate(-90) + zrodholder(); + + translate([board_w/2+5,0,260]) + rotate(-90) + mirror([0,1,0]) + zrodholder(); +} // Z rods module z_rods() { color("MediumBlue") - translate([board_w/2-4,-26,42])cylinder(h=z_smooth_rod_length,r=4); + // fixme: 55 - 6 is mount thickness - bottom_thickness + // fixme: board_w/2-4 ... should 4 be bushing_z[0] instead ? + translate([board_w/2-4-zaxis_delta_y, -(board_to_xz_distance + zaxis_delta_x),55 - 6])cylinder(h=z_smooth_rod_length,r=bushing_z[0]); } z_rods(); mirror([1,0,0])z_rods(); +// Z leadscrew +module z_leadscrew() +{ + position_y = board_to_xz_distance + zaxis_delta_y + zmotor_delta_y; + position_x = board_to_xz_distance + zaxis_delta_x + zmotor_delta_x; + color("Orange") + // fixme: 55 - 6 is mount thickness - bottom_thickness + // fixme: position_y+5, 5 = side_thickness + // fixme: board_w/2-4 ... should 4 be bushing_z[0] instead ? + translate([board_w/2-position_y+5, -position_x,55 - 6])cylinder(h=z_smooth_rod_length,r=4); +} + +z_leadscrew(); +mirror([1,0,0])z_leadscrew(); // X ends -translate([-board_w/2+4,-26,200]) +translate([-board_w/2+4+zaxis_delta_y,-(board_to_xz_distance+zaxis_delta_x),200]) rotate([0,0,90]) rotate([0,180,0]) x_end_motor(); -translate([board_w/2-4,-26,200]) +translate([board_w/2-4-zaxis_delta_y,-(board_to_xz_distance+zaxis_delta_x),200]) rotate(90) rotate([0,180,0]) x_end_idler(); // X rods +// fixme: looks off a bit, also relies on value of pushfit_d for(i=[0:1]) color("MediumBlue") -translate([0,-12,149+i*45])rotate([0,90,0])cylinder(h=300,r=4,center=true); +translate([0,-board_to_xz_distance + 15 - zaxis_delta_x,200 - x_box_height+bushing_xy[0]+i*xaxis_rod_distance+3+1+0.1])rotate([0,90,0])cylinder(h=x_smooth_rod_length,r=bushing_xy[0],center=true); + + // X carriage -translate([0,-12,149]) +translate([0,-board_to_xz_distance + 15 - zaxis_delta_x,200 - x_box_height+bushing_xy[0]+3+1+0.1]) rotate([0,90,0]) -x_carriage(); \ No newline at end of file +x_carriage();