3466055e39b8febad34eae02e67f21f336d29092
[clinton/prusa3.git] / box_frame / doc / complete-printer.scad
1 // PRUSA iteration3
2 // Complete printer visualisation
3 // GNU GPL v3
4 // Greg Frost
5 // http://www.reprap.org/wiki/Prusa_Mendel
6 // http://github.com/josefprusa/Prusa3
7
8 include <../configuration.scad>
9 use <../y-drivetrain.scad>
10 use <../y-axis-corner.scad>
11 use <../z-axis.scad>
12 use <../x-end.scad>
13 use <../x-carriage.scad>
14
15 module nutwasher(){
16 color("silver")
17 difference(){
18 union(){
19 translate([0,0,2])cylinder(r=15/2,h=7,$fn=6);
20 translate([0,0,0.5])cylinder(r=8.5,h=1);
21 }
22 translate([0,0,-1])cylinder(r=8/2,h=12);
23 }
24 }
25
26 // y motor mount
27 translate([56-yrodseparation/2,-y_smooth_rod_length/2+9,0])
28 {
29 rotate([0,90,0]) rotate([0,0,90]) motorholder();
30 translate([10,0,30])rotate([0,90,0])nutwasher();
31 translate([0,0,30])rotate([0,90,180])nutwasher();
32 translate([10,0,10])rotate([0,90,0])nutwasher();
33 translate([0,0,10])rotate([0,90,180])nutwasher();
34 }
35
36 // y idler mount
37 translate([70-yrodseparation/2,y_smooth_rod_length/2-9,30])
38 {
39 translate([0,0-33,-8])
40 rotate([0,-90,0]) idlermount();
41 translate([0,0,0])rotate([0,90,0])nutwasher();
42 translate([-20,0,0])rotate([0,90,180])nutwasher();
43 }
44
45 yrodseparation=100;
46
47 module yfront()
48 {
49 // corners
50 leftfront();
51 translate([yrodseparation,0,0]) mirror([1,0,0]) leftfront();
52
53 // front bottom threaded rod
54 color("Aqua")
55 translate([-20,9,10]) rotate([0,90,0]) cylinder(h = 140, r=4);
56
57 translate([yrodseparation+11,9,10])rotate([0,90,0])nutwasher();
58 translate([yrodseparation-11,9,10])rotate([0,90,180])nutwasher();
59
60 translate([-11,9,10])rotate([0,90,180])nutwasher();
61 translate([11,9,10])rotate([0,90,0])nutwasher();
62
63 // front top threaded rod
64 color("Aqua")
65 translate([-20,9,30]) rotate([0,90,0]) cylinder(h = 140, r=4);
66
67 % translate([-11,9,30])rotate([0,90,180])nutwasher();
68 % translate([11,9,30])rotate([0,90,0])nutwasher();
69
70 % translate([yrodseparation-11,9,30])rotate([0,90,180])nutwasher();
71 % translate([yrodseparation+11,9,30])rotate([0,90,0])nutwasher();
72 }
73
74 translate([-yrodseparation/2,-y_smooth_rod_length/2])
75 {
76 yfront();
77 translate([0,y_smooth_rod_length,0])
78 mirror([0,1,0])
79 yfront();
80 }
81
82 module yside()
83 {
84 translate([-yrodseparation/2,0])
85 {
86 // left top rod
87 color("MediumBlue")
88 translate([0,0,45]) rotate([0,90,90]) cylinder(h = y_smooth_rod_length, r=4,center=true);
89 //left bottom rod
90 color("Aqua")
91 translate([0,0,20]) rotate([0,90,90]) cylinder(h = 430, r=4,center=true);
92 // middle nuts
93 translate([0,0,20])rotate([0,-90,90])nutwasher();
94 translate([0,board_thickness,20])rotate([0,90,90])nutwasher();
95
96 // back nuts
97 translate([0,y_smooth_rod_length/2+2,20])rotate([0,90,90])nutwasher();
98 translate([0,y_smooth_rod_length/2+2-22,20])rotate([0,90,-90])nutwasher();
99 // front nuts
100 translate([0,-y_smooth_rod_length/2-2,20])rotate([0,90,-90])nutwasher();
101 translate([0,-y_smooth_rod_length/2-2+22,20])rotate([0,90,90])nutwasher();
102 }
103 }
104
105 yside();
106 translate([yrodseparation,0,0])yside();
107
108 // heat bed
109 color("Lime",0.25)
110 translate([0,0,58]) cube([bed_x_size,bed_y_size,6], center=true);
111
112 board_sides=50;
113 board_w=bed_x_size+10+2*board_sides;
114
115 // XZ board
116 translate([0,board_thickness/2,150])
117 %difference()
118 {
119 cube([board_w,board_thickness,300],true);
120 translate([0,0,-15])
121 cube([bed_x_size+10,board_thickness+2,200],true);
122 }
123
124
125 // Z motor mounts
126 translate([-board_w/2-5,0,42])
127 rotate(-90)
128 zmotorholder();
129
130 translate([board_w/2+5,0,42])
131 rotate(-90)
132 mirror([0,1,0])
133 zmotorholder();
134
135 // Z rod mounts
136 translate([-board_w/2-5,0,260])
137 rotate(-90)
138 zrodholder();
139
140 translate([board_w/2+5,0,260])
141 rotate(-90)
142 mirror([0,1,0])
143 zrodholder();
144
145 // Z rods
146 module z_rods()
147 {
148 color("MediumBlue")
149 translate([board_w/2-4,-26,42])cylinder(h=z_smooth_rod_length,r=4);
150 }
151
152 z_rods();
153 mirror([1,0,0])z_rods();
154
155 // X ends
156 translate([-board_w/2+4,-26,200])
157 rotate([0,0,90])
158 rotate([0,180,0])
159 x_end_motor();
160
161 translate([board_w/2-4,-26,200])
162 rotate(90)
163 rotate([0,180,0])
164 x_end_idler();
165
166 // X rods
167 for(i=[0:1])
168 color("MediumBlue")
169 translate([0,-12,149+i*45])rotate([0,90,0])cylinder(h=300,r=4,center=true);
170
171 // X carriage
172 translate([0,-12,149])
173 rotate([0,90,0])
174 x_carriage();