Move everything to box_frame/
[clinton/prusa3.git] / box_frame / doc / complete-printer.scad
diff --git a/box_frame/doc/complete-printer.scad b/box_frame/doc/complete-printer.scad
new file mode 100644 (file)
index 0000000..25eada6
--- /dev/null
@@ -0,0 +1,174 @@
+// PRUSA iteration3
+// Complete printer visualisation
+// GNU GPL v3
+// Greg Frost
+// http://www.reprap.org/wiki/Prusa_Mendel
+// http://github.com/prusajr/PrusaMendel
+
+include <../configuration.scad>
+use <../y-drivetrain.scad>
+use <../y-axis-corner.scad>
+use <../z-axis.scad>
+use <../x-end.scad>
+use <../x-carriage.scad>
+
+module nutwasher(){
+       color("silver")
+       difference(){
+               union(){
+                       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);                
+       }
+}
+
+// y motor mount
+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();
+       translate([0,0,30])rotate([0,90,180])nutwasher();
+       translate([10,0,10])rotate([0,90,0])nutwasher();
+       translate([0,0,10])rotate([0,90,180])nutwasher();
+}
+
+// y idler mount
+translate([70-yrodseparation/2,y_smooth_rod_length/2-9,30]) 
+{
+       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();
+}
+
+yrodseparation=100;
+
+module yfront()
+{
+       // corners
+       leftfront();
+       translate([yrodseparation,0,0]) mirror([1,0,0]) leftfront();
+
+       // front bottom threaded rod
+       color("Aqua")
+       translate([-20,9,10]) rotate([0,90,0]) cylinder(h = 140, r=4);
+
+       translate([yrodseparation+11,9,10])rotate([0,90,0])nutwasher();
+       translate([yrodseparation-11,9,10])rotate([0,90,180])nutwasher();
+
+       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);
+
+%      translate([-11,9,30])rotate([0,90,180])nutwasher();
+%      translate([11,9,30])rotate([0,90,0])nutwasher();
+
+%      translate([yrodseparation-11,9,30])rotate([0,90,180])nutwasher();
+%      translate([yrodseparation+11,9,30])rotate([0,90,0])nutwasher();
+}
+
+translate([-yrodseparation/2,-y_smooth_rod_length/2])
+{
+yfront();
+translate([0,y_smooth_rod_length,0]) 
+mirror([0,1,0])
+yfront();
+}
+
+module yside()
+{
+       translate([-yrodseparation/2,0])
+       {
+       // left top rod
+       color("MediumBlue")
+       translate([0,0,45]) rotate([0,90,90]) cylinder(h = y_smooth_rod_length, r=4,center=true);
+       //left bottom rod
+       color("Aqua")
+       translate([0,0,20]) rotate([0,90,90]) cylinder(h = 430, 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();
+
+       // back nuts
+       translate([0,y_smooth_rod_length/2+2,20])rotate([0,90,90])nutwasher();
+       translate([0,y_smooth_rod_length/2+2-22,20])rotate([0,90,-90])nutwasher();
+       // front nuts
+       translate([0,-y_smooth_rod_length/2-2,20])rotate([0,90,-90])nutwasher();
+       translate([0,-y_smooth_rod_length/2-2+22,20])rotate([0,90,90])nutwasher();
+       }
+}
+
+yside();
+translate([yrodseparation,0,0])yside();
+
+// heat bed
+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;
+
+// XZ board
+translate([0,board_thickness/2,150])
+%difference()
+{
+       cube([board_w,board_thickness,300],true);
+       translate([0,0,-15])
+       cube([bed_x_size+10,board_thickness+2,200],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();
+
+// Z rods
+module z_rods()
+{
+       color("MediumBlue")
+       translate([board_w/2-4,-26,42])cylinder(h=z_smooth_rod_length,r=4);
+}
+
+z_rods();
+mirror([1,0,0])z_rods();
+
+// X ends
+translate([-board_w/2+4,-26,200])
+rotate([0,0,90])
+rotate([0,180,0])
+x_end_motor();
+
+translate([board_w/2-4,-26,200])
+rotate(90)
+rotate([0,180,0])
+x_end_idler();
+
+// X rods
+for(i=[0:1])
+color("MediumBlue")
+translate([0,-12,149+i*45])rotate([0,90,0])cylinder(h=300,r=4,center=true);
+
+// X carriage
+translate([0,-12,149])
+rotate([0,90,0])
+x_carriage();
\ No newline at end of file