doc: make complete-printer mockup work better
authorClinton Ebadi <clinton@unknownlamer.org>
Wed, 22 May 2019 00:20:59 +0000 (20:20 -0400)
committerClinton Ebadi <clinton@unknownlamer.org>
Wed, 22 May 2019 00:20:59 +0000 (20:20 -0400)
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.

box_frame/doc/complete-printer.scad

index 3466055..4d7a656 100644 (file)
@@ -10,8 +10,15 @@ use <../y-drivetrain.scad>
 use <../y-axis-corner.scad>
 use <../z-axis.scad>
 use <../x-end.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>
 
 use <../x-carriage.scad>
 
+// quick rendering
+$fa = 12;
+$fs = 2;
+
 module nutwasher(){
        color("silver")
        difference(){
 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,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
        }
 }
 
 // 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();
 {
        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
 }
 
 // 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();
        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();
 
        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);
        // 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([-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();
 }
 mirror([0,1,0])
 yfront();
 }
@@ -85,10 +92,10 @@ module yside()
        {
        // left top rod
        color("MediumBlue")
        {
        // 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")
        //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();
        // 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);
 
 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
 
 // XZ board
-translate([0,board_thickness/2,150])
+translate([0,board_thickness/2,board_h/2])
 %difference()
 {
 %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")
 
 // 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_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
 // 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();
 
 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
 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")
 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
 
 // 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])
 rotate([0,90,0])
-x_carriage();
\ No newline at end of file
+x_carriage();