2 // Complete printer visualisation
5 // http://www.reprap.org/wiki/Prusa_Mendel
6 // http://github.com/josefprusa/Prusa3
8 include <../configuration.scad>
9 use <../y-drivetrain.scad>
10 use <../y-axis-corner.scad>
13 use <../x-end-motor.scad>
14 use <../x-end-idler.scad>
15 //use <../x-end-orig.scad>
16 use <../x-carriage.scad>
26 translate([0,0,2])cylinder(r=15/2,h=7,$fn=6);
27 translate([0,0,0.5])cylinder(r=8.5,h=1);
29 translate([0,0,-1])cylinder(r=8/2,h=12);
34 translate([56-yrodseparation/2,-y_smooth_rod_length/2+9,0])
36 rotate([0,90,0]) rotate([0,0,90]) motorholder();
37 translate([10,0,30])rotate([0,90,0])nutwasher();
38 translate([0,0,30])rotate([0,90,180])nutwasher();
39 translate([10,0,10])rotate([0,90,0])nutwasher();
40 translate([0,0,10])rotate([0,90,180])nutwasher();
44 translate([70-yrodseparation/2,y_smooth_rod_length/2-9,30])
46 translate([0,0-33,-8])
47 rotate([0,-90,0]) idlermount();
48 translate([0,0,0])rotate([0,90,0])nutwasher();
49 translate([-20,0,0])rotate([0,90,180])nutwasher();
58 translate([yrodseparation,0,0]) mirror([1,0,0]) leftfront();
60 // front bottom threaded rod
62 translate([-20,9,10]) rotate([0,90,0]) cylinder(h = 140, r=4);
64 translate([yrodseparation+11,9,10])rotate([0,90,0])nutwasher();
65 translate([yrodseparation-11,9,10])rotate([0,90,180])nutwasher();
67 translate([-11,9,10])rotate([0,90,180])nutwasher();
68 translate([11,9,10])rotate([0,90,0])nutwasher();
70 // front top threaded rod
72 translate([-20,9,30]) rotate([0,90,0]) cylinder(h = 140, r=4);
74 % translate([-11,9,30])rotate([0,90,180])nutwasher();
75 % translate([11,9,30])rotate([0,90,0])nutwasher();
77 % translate([yrodseparation-11,9,30])rotate([0,90,180])nutwasher();
78 % translate([yrodseparation+11,9,30])rotate([0,90,0])nutwasher();
81 translate([-yrodseparation/2,-y_smooth_rod_length/2])
84 translate([0,y_smooth_rod_length,0])
91 translate([-yrodseparation/2,0])
95 translate([0,0,45]) rotate([0,90,90]) cylinder(h = y_smooth_rod_length, r=bushing_xy[0],center=true);
98 translate([0,0,20]) rotate([0,90,90]) cylinder(h = y_smooth_rod_length, r=4,center=true);
100 translate([0,0,20])rotate([0,-90,90])nutwasher();
101 translate([0,board_thickness,20])rotate([0,90,90])nutwasher();
104 translate([0,y_smooth_rod_length/2+2,20])rotate([0,90,90])nutwasher();
105 translate([0,y_smooth_rod_length/2+2-22,20])rotate([0,90,-90])nutwasher();
107 translate([0,-y_smooth_rod_length/2-2,20])rotate([0,90,-90])nutwasher();
108 translate([0,-y_smooth_rod_length/2-2+22,20])rotate([0,90,90])nutwasher();
113 translate([yrodseparation,0,0])yside();
117 translate([0,0,58]) cube([bed_x_size,bed_y_size,6], center=true);
119 board_sides=(frame_type == frame_alu) ? board_thickness : 50 ;
120 // todo: auto set length of smooth rods and board using desired print volume
121 // fixme: just copied board_w from wilson bom for my specific printer...
122 board_w=(frame_type == frame_alu) ? 430 + board_thickness * 2 : bed_x_size+10+2*board_sides;
123 board_h=(frame_type == frame_alu) ? z_smooth_rod_length + 50 : 300;
124 board_cut_h=(frame_type == frame_alu) ? board_h - board_thickness * 2 : 200;
125 board_cut_w=(frame_type == frame_alu) ? board_w - board_thickness * 2 : bed_x_size + 10;
129 translate([0,board_thickness/2,board_h/2])
132 cube([board_w,board_thickness,board_h], center=true);
133 translate([0,0,(frame_type == frame_alu) ? 0 : -15])
134 cube([board_cut_w,board_thickness+2,board_cut_h], center=true);
138 if (frame_type == frame_alu) {
140 translate([-board_w/2-5,0,55 - 6])
142 zmotorholder (thickness=55, bottom_thickness=6);
144 translate([board_w/2+5,0,55 - 6])
147 zmotorholder(thickness=55, bottom_thickness=6);
150 // 6 = bottom_thickness
151 translate([-board_w/2-5,0,board_h - 6/2])
153 zrodholder(thickness=board_thickness * 2 + 5, ylen = board_thickness * 2 + 10, bottom_x=43 + zaxis_delta_x, bottom_thickness=6);
155 translate([board_w/2+5,0,board_h - 6/2])
158 zrodholder(thickness=board_thickness * 2 + 5, ylen = board_thickness * 2 + 10, bottom_x=43 + zaxis_delta_x, bottom_thickness=6);
161 translate([-board_w/2-5,0,42])
165 translate([board_w/2+5,0,42])
171 translate([-board_w/2-5,0,260])
175 translate([board_w/2+5,0,260])
185 // fixme: 55 - 6 is mount thickness - bottom_thickness
186 // fixme: board_w/2-4 ... should 4 be bushing_z[0] instead ?
187 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]);
191 mirror([1,0,0])z_rods();
196 position_y = board_to_xz_distance + zaxis_delta_y + zmotor_delta_y;
197 position_x = board_to_xz_distance + zaxis_delta_x + zmotor_delta_x;
199 // fixme: 55 - 6 is mount thickness - bottom_thickness
200 // fixme: position_y+5, 5 = side_thickness
201 // fixme: board_w/2-4 ... should 4 be bushing_z[0] instead ?
202 translate([board_w/2-position_y+5, -position_x,55 - 6])cylinder(h=z_smooth_rod_length,r=4);
206 mirror([1,0,0])z_leadscrew();
208 translate([-board_w/2+4+zaxis_delta_y,-(board_to_xz_distance+zaxis_delta_x),200])
213 translate([board_w/2-4-zaxis_delta_y,-(board_to_xz_distance+zaxis_delta_x),200])
219 // fixme: looks off a bit, also relies on value of pushfit_d
222 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);
227 translate([0,-board_to_xz_distance + 15 - zaxis_delta_x,200 - x_box_height+bushing_xy[0]+3+1+0.1])