exploded drawing might be useful. disabled by default

pull/9/head
Glen Chung 2013-10-18 00:25:40 +08:00
parent aa583aeb26
commit 539078ef33
6 changed files with 181 additions and 136 deletions

View File

@ -52,40 +52,43 @@ Y_Spindle_Bit_Offset = 0;
// Display steppers, bearings, washers, nuts
Display_Extra_Parts = true;
//To enable exploded drawing view
Exploded_Drawing = false;
X_rod_sep_real = X_smooth_rods_sep_projected+smooth_rod_margin;
module frame_right(with_extra_parts = false) {
module frame_right(with_extra_parts = false, exploded=false) {
if(with_extra_parts)
rotate([0,0,90]) scale([-1,1,1]) translate([-85,-23,135]) rotate([-90,0,0]) frame(with_motor = 0, with_extra_parts=with_extra_parts);
rotate([0,0,90]) scale([-1,1,1]) translate([-85,-23,135]) rotate([-90,0,0]) frame(with_motor = 0, with_extra_parts=with_extra_parts, exploded=exploded);
else
color([1,0.8,0]) rotate([0,0,90]) scale([-1,1,1]) translate([-85,-23,135]) rotate([-90,0,0]) frame(with_motor = 0, with_extra_parts=with_extra_parts);
color([1,0.8,0]) rotate([0,0,90]) scale([-1,1,1]) translate([-85,-23,135]) rotate([-90,0,0]) frame(with_motor = 0, with_extra_parts=with_extra_parts, exploded=exploded);
}
module frame_left(with_extra_parts = false) {
module frame_left(with_extra_parts = false, exploded=false) {
if(with_extra_parts)
rotate([0,0,90]) scale([-1,-1,1]) translate([-85,-23,135]) rotate([-90,0,0]) frame(with_motor = 1, with_extra_parts=with_extra_parts);
rotate([0,0,90]) scale([-1,-1,1]) translate([-85,-23,135]) rotate([-90,0,0]) frame(with_motor = 1, with_extra_parts=with_extra_parts, exploded=exploded);
else
color([1,1,0]) rotate([0,0,90]) scale([-1,-1,1]) translate([-85,-23,135]) rotate([-90,0,0]) frame(with_motor = 1, with_extra_parts=with_extra_parts);
color([1,1,0]) rotate([0,0,90]) scale([-1,-1,1]) translate([-85,-23,135]) rotate([-90,0,0]) frame(with_motor = 1, with_extra_parts=with_extra_parts, exploded=exploded);
}
module Y_rod_idler_left(with_extra_parts = false) {
module Y_rod_idler_left(with_extra_parts = false, exploded=false) {
if(with_extra_parts)
rotate([0,0,90]) scale([1,-1,1]) translate([-26,-17,39]) rotate([-90,0,0]) Y_rod_idler(with_extra_parts=with_extra_parts);
rotate([0,0,90]) scale([1,-1,1]) translate([-26,-17,39]) rotate([-90,0,0]) Y_rod_idler(with_extra_parts=with_extra_parts, exploded=exploded);
else
color([0.8,1,1]) rotate([0,0,90]) scale([1,-1,1]) translate([-26,-17,39]) rotate([-90,0,0]) Y_rod_idler(with_extra_parts=with_extra_parts);
color([0.8,1,1]) rotate([0,0,90]) scale([1,-1,1]) translate([-26,-17,39]) rotate([-90,0,0]) Y_rod_idler(with_extra_parts=with_extra_parts, exploded=exploded);
}
module Y_rod_idler_right(with_extra_parts = false) {
module Y_rod_idler_right(with_extra_parts = false, exploded=false) {
if(with_extra_parts)
rotate([0,0,90]) translate([-26,-17,39]) rotate([-90,0,0]) Y_rod_idler(with_extra_parts=with_extra_parts);
rotate([0,0,90]) translate([-26,-17,39]) rotate([-90,0,0]) Y_rod_idler(with_extra_parts=with_extra_parts, exploded=exploded);
else
color([1,1,1]) rotate([0,0,90]) translate([-26,-17,39]) rotate([-90,0,0]) Y_rod_idler(with_extra_parts=with_extra_parts);
color([1,1,1]) rotate([0,0,90]) translate([-26,-17,39]) rotate([-90,0,0]) Y_rod_idler(with_extra_parts=with_extra_parts, exploded=exploded);
}
module Y_motor_stand() {
rotate([0,90,0]) translate([-45,0,52.4]) rotate([-90,0,0]) {
if(Display_Extra_Parts)
motor_stand(with_extra_parts=Display_Extra_Parts);
motor_stand(with_extra_parts=Display_Extra_Parts, exploded=Exploded_Drawing);
else
color([0,1,1]) motor_stand();
}
@ -94,7 +97,7 @@ module Y_motor_stand() {
module Y_idle_stand() {
rotate([0,90,180]) translate([-45,0,52.4]) rotate([-90,0,0])
if(Display_Extra_Parts)
idle_stand(with_extra_parts=Display_Extra_Parts);
idle_stand(with_extra_parts=Display_Extra_Parts, exploded=Exploded_Drawing);
else
color([0,1,0.8]) idle_stand();
}
@ -164,15 +167,15 @@ module cnc(show_printbed = 1) {
}
// ---- main frames ----
frame_left(with_extra_parts=Display_Extra_Parts);
frame_left(with_extra_parts=Display_Extra_Parts, exploded=Exploded_Drawing);
translate([X_axis_sep,0,0])
frame_right(with_extra_parts=Display_Extra_Parts);
frame_right(with_extra_parts=Display_Extra_Parts, exploded=Exploded_Drawing);
// ---- Y rod idlers ----
translate([0,Y_axis_sep,0]) {
Y_rod_idler_left(with_extra_parts=Display_Extra_Parts);
Y_rod_idler_left(with_extra_parts=Display_Extra_Parts, exploded=Exploded_Drawing);
translate([X_axis_sep,0,0])
Y_rod_idler_right(with_extra_parts=Display_Extra_Parts);
Y_rod_idler_right(with_extra_parts=Display_Extra_Parts, exploded=Exploded_Drawing);
}
// ---- Y threaded rod motor and idler ----

View File

@ -82,7 +82,7 @@ module herringbone_gear( teeth=12, circles=0, shaft=5 ) {
);
}
module cyclone_motor_gear(with_extra_parts=false) {
module cyclone_motor_gear(with_extra_parts=false, exploded=false) {
// Motor gear
union() difference() {
union() {
@ -120,10 +120,18 @@ union() difference() {
translate( [0, 0, -6] ) cylinder( r=motor_shaft_diameter/2, h=20, $fn=30 );
}
// --- M3 x 8mm grub screw to attach Gear to motor shaft ---
if(with_extra_parts)
translate([0,2.5+8,12-3.5]) rotate([90, 0, 0]) color(Steel) cylinder(r=1.5, h=8, $fn=30);
if(with_extra_parts) {
if(exploded)
cyclone_motor_gear_extras(exploded_distance=20);
else
cyclone_motor_gear_extras(exploded_distance=0);
}
}
module cyclone_motor_gear_extras(exploded_distance=0) {
// --- M3 x 8mm grub screw to attach Gear to motor shaft ---
translate([0,2.5+8+exploded_distance,12-3.5]) rotate([90, 0, 0]) color(Steel) cylinder(r=1.5, h=8, $fn=30);
}
cyclone_motor_gear();

View File

@ -10,7 +10,6 @@ use <../libs/build_plate.scad>
use <../smooth_rod_fix/smooth_rod_fix.scad>
module Y_rod_idler(show_printbed = 0, with_extra_parts=false) {
motor_stand_thickness = 5;
@ -36,6 +35,8 @@ frame_width = 30;
frame_height = Y_rod_height-smooth_rod_margin;
wall_thickness = 5;
module Y_rod_idler(show_printbed = 0, with_extra_parts=false, exploded=false) {
if(show_printbed) {
//for display only, doesn't contribute to final object
translate([frame_width/2,frame_height/2,0]) build_plate(3,110,140);
@ -95,24 +96,29 @@ translate([frame_width-frame_thickness,frame_height,frame_thickness-2])
} // End of union() command
if(with_extra_parts) {
// --- Self tapping screw 2.9 x 16mm ---
rotate([90,0,0]) translate([frame_width/3,Y_rod_support_lenght/2.5,-frame_height+bottom_thickness+.2])
rotate([180,0,0]) color(Steel) {
translate([-5,0,0])
csk_bolt(2.9, 16);
translate([5,0,0])
csk_bolt(2.9, 16);
}
// --- Y smooth rod fix ---
translate([frame_width-frame_thickness,frame_height,frame_thickness-2])
translate([0,-Y_rod_height+smooth_rod_margin,0])
translate([0,-smooth_rod_margin-8.5,Y_rod_dist_from_wall]) rotate([270,90,0])
smooth_rod_fix(with_extra_parts=true);
if(exploded)
Y_rod_idler_extras(with_extra_parts=with_extra_parts, exploded_distance=20);
else
Y_rod_idler_extras(with_extra_parts=with_extra_parts, exploded_distance=0);
}
}
module Y_rod_idler_extras(exploded_distance=0) {
// --- Self tapping screw 2.9 x 16mm ---
rotate([90,0,0]) translate([frame_width/3,Y_rod_support_lenght/2.5,-frame_height+bottom_thickness+.2+exploded_distance])
rotate([180,0,0]) color(Steel) {
translate([-5,0,0])
csk_bolt(2.9, 16);
translate([5,0,0])
csk_bolt(2.9, 16);
}
// --- Y smooth rod fix ---
translate([frame_width-frame_thickness,frame_height,frame_thickness-2])
translate([0,-Y_rod_height+smooth_rod_margin,0])
translate([0,-smooth_rod_margin-8.5-exploded_distance,Y_rod_dist_from_wall]) rotate([270,90,0])
smooth_rod_fix(with_extra_parts=true,exploded = (exploded_distance!=0));
}
Y_rod_idler(show_printbed = 1);
//scale([-1,1,1]) Y_rod_idler(show_printbed = 1);

View File

@ -104,39 +104,63 @@ module motorHolesY() {
}
}
module motor_stand_no_base(with_motor=true, with_extra_parts=false) {
module motor_stand_no_base_extras(with_motor=false, exploded_distance=0) {
// --- additional parts for assembly instruction ---
if(with_motor && with_extra_parts) {
if(with_motor) {
translate([motor_width/2,motor_width/2,0]) {
// --- Nema 17 Stepper ---
rotate([0,180,0])
translate([0,0,-1])
translate([0,0,-1+exploded_distance])
motor(Cyclone_Nema17, NemaLengthLong);
// --- Motor Gear ---
translate([0,0,12+5.5]) {
rotate([180, 0, -90]) cyclone_motor_gear(with_extra_parts);
translate([0,0,12+5.5+exploded_distance]) {
rotate([180, 0, -90]) cyclone_motor_gear(with_extra_parts=true, exploded=(exploded_distance!=0));
}
}
translate([motor_width/2,motor_width/2,wall_thickness/2]) {
rotate([0,0,15]) translate([0,axis_distance,2.5-wall_thickness/2]) {
// --- Bearing ---
bearing(model=608);
translate([0,0,0.5*exploded_distance]) bearing(model=608);
// --- M8 Nut ---
translate([0,0,7]) color(Steel) flat_nut(8);
translate([0,0,7+1.0*exploded_distance]) color(Steel) flat_nut(8);
// --- Rod Gear ---
translate([0,0,1.5-wall_thickness/2+5+2.5+7+3]) rotate([0,180,15]) cyclone_rod_gear();
translate([0,0,1.5-wall_thickness/2+5+2.5+7+3+1.5*exploded_distance]) rotate([0,180,15]) cyclone_rod_gear();
// --- M8 Nut ---
translate([0,0,1.5-wall_thickness/2+5+2.5+7+3+1.5++10]) rotate([0,180,0]) color(Steel) flat_nut(8);
translate([0,0,1.5-wall_thickness/2+5+2.5+7+3+1.5+10+2*exploded_distance]) rotate([0,180,0]) color(Steel) flat_nut(8);
}
}
// --- M3 x 6mm bolts for holding the motor ---
for(i=[-1,1]) for(j=[-1,1])
translate([motor_width/2,motor_width/2,wall_thickness/2])
translate([i*motor_screw_distance/2,j*motor_screw_distance/2,2.5-wall_thickness/2]) {
translate([i*motor_screw_distance/2,j*motor_screw_distance/2,2.5-wall_thickness/2+exploded_distance*0.7]) {
rotate([0,180,0]) color(Steel) boltHole(size=3, length=6);
}
}
if(!with_motor) {
translate([motor_width/2,motor_width/2,wall_thickness/2])
rotate([0,0,15]) translate([0,axis_distance,2.5-wall_thickness/2]) color(Steel) {
// --- 608 bearing ---
translate([0,0,0.5*exploded_distance]) bearing(model=608);
// --- M8 washer ---
translate([0,0,7+1.0*exploded_distance]) washer(8);
// --- M8 nut ---
translate([0,0,6.4+7+0.8+1.5*exploded_distance]) rotate([0,180,0]) flat_nut(8);
}
}
}
module motor_stand_no_base(with_motor=true, with_extra_parts=false, exploded=false) {
if(with_extra_parts) {
if(exploded)
motor_stand_no_base_extras(with_motor=with_motor, exploded_distance=30);
else
motor_stand_no_base_extras(with_motor=with_motor, exploded_distance=0);
}
difference() {
translate([wall_height/2,totalWallWidth/2-wall_extraWidth_left,wall_thickness/2])
bcube([wall_height,totalWallWidth,wall_thickness],cr=4,cres=10);
@ -151,28 +175,24 @@ difference() {
rotate([0,0,15]) translate([0,axis_distance,2.5-wall_thickness/2]) {
cylinder(r=(M8_rod_diameter*2)/2,h=10*wall_thickness,center=true,$fn=40);
cylinder(r=bearing_diameter/2,h=10*wall_thickness,center=false,$fn=60);
if(!with_motor && with_extra_parts) {
translate([0,0,7]) bearing(model=608);
}
}
} // End of translate relative to motor shaft
} // End of difference
}
translate([motor_width/2,motor_width/2,wall_thickness/2])
rotate([0,0,15]) translate([0,axis_distance,2.5-wall_thickness/2]) color(Steel) {
if(!with_motor && with_extra_parts) {
// --- 608 bearing ---
bearing(model=608);
// --- M8 washer ---
translate([0,0,7]) washer(8);
// --- M8 nut ---
translate([0,0,6.4+7+0.8]) rotate([0,180,0]) flat_nut(8);
}
module holder_extras(exploded_distance=0) {
// --- Self tapping screw 2.9 x 16mm ---
translate([wall_height,base_width/2+2.5,base_length/1.5]) color(Steel)
rotate([0,90,0]) {
translate([-5,0,-bottom_thickness-.2-exploded_distance])
csk_bolt(2.9, 16);
translate([5,0,-bottom_thickness-.2-exploded_distance])
csk_bolt(2.9, 16);
}
}
module holder(h=35,noScrews=false,base_width_inc=0, with_extra_parts=false) {
module holder(h=35,noScrews=false,base_width_inc=0, with_extra_parts=false, exploded=false) {
difference() {
union() {
translate([wall_height-bottom_thickness,0]) {
@ -194,24 +214,20 @@ module holder(h=35,noScrews=false,base_width_inc=0, with_extra_parts=false) {
}
} // End of difference
// --- Self tapping screw 2.9 x 16mm ---
if(with_extra_parts) {
translate([wall_height,base_width/2+2.5,base_length/1.5]) color(Steel)
rotate([0,90,0]) {
translate([-5,0,-bottom_thickness-.2])
csk_bolt(2.9, 16);
translate([5,0,-bottom_thickness-.2])
csk_bolt(2.9, 16);
}
}
if(with_extra_parts) {
if(exploded)
holder_extras(17);
else
holder_extras(0);
}
}
module motor_stand(with_motor=true, with_extra_parts=false) {
module motor_stand(with_motor=true, with_extra_parts=false, exploded=false) {
union() {
motor_stand_no_base(with_motor=with_motor, with_extra_parts=with_extra_parts);
translate([0,wall_width]) holder(noScrews=true, with_extra_parts=false);
translate([0,52.4-5/2]) holder(h=12,base_width_inc=1, with_extra_parts=with_extra_parts);
translate([0,-wall_extraWidth_left+base_width]) scale([1,-1,1]) holder(with_extra_parts=with_extra_parts);
motor_stand_no_base(with_motor=with_motor, with_extra_parts=with_extra_parts, exploded=exploded);
translate([0,wall_width]) holder(noScrews=true, with_extra_parts=false, exploded=exploded);
translate([0,52.4-5/2]) holder(h=12,base_width_inc=1, with_extra_parts=with_extra_parts, exploded=exploded);
translate([0,-wall_extraWidth_left+base_width]) scale([1,-1,1]) holder(with_extra_parts=with_extra_parts, exploded=exploded);
}
}
@ -219,7 +235,7 @@ module motor_stand(with_motor=true, with_extra_parts=false) {
module idle_stand(with_extra_parts=false) {
union() {
intersection() { // Remove the motor part
motor_stand(with_motor=false, with_extra_parts=with_extra_parts);
motor_stand(with_motor=false, with_extra_parts=with_extra_parts, exploded=exploded);
union() {
translate([wall_height/2,wall_width/2+52.4-(wall_width+wall_extraWidth_right-52.4),wall_thickness/2])
bcube([wall_height,wall_width,100],cr=4,cres=10);
@ -227,8 +243,8 @@ module idle_stand(with_extra_parts=false) {
bcube([wall_height*2,wall_width/6,100],cr=4,cres=10); //keep self tapping screw
}
}
translate([0,wall_width+5-2*(wall_width+wall_extraWidth_right-52.4)]) holder(noScrews=true, with_extra_parts=with_extra_parts);
translate([0,52.4+5/2]) scale([1,-1,1]) holder(h=15,base_width_inc=1, with_extra_parts=with_extra_parts);
translate([0,wall_width+5-2*(wall_width+wall_extraWidth_right-52.4)]) holder(noScrews=true, with_extra_parts=with_extra_parts, exploded=exploded);
translate([0,52.4+5/2]) scale([1,-1,1]) holder(h=15,base_width_inc=1, with_extra_parts=with_extra_parts, exploded=exploded);
}
}

View File

@ -13,7 +13,6 @@ use <../libs/obiscad/bevel.scad>
use <../libs/build_plate.scad>
use <../smooth_rod_fix/smooth_rod_fix.scad>
module frame(with_motor = 1, show_printbed = 0, with_extra_parts = false) {
layer_thickness = 0.4;
@ -86,6 +85,7 @@ Cyclone_Nema17 = [
[NemaAxleFlatLengthBack, 14*mm]
];
module frame(with_motor = 1, show_printbed = 0, with_extra_parts=false, exploded=false) {
if(show_printbed) {
//for display only, doesn't contribute to final object
@ -201,51 +201,6 @@ difference() {
} // End of difference() command
if(with_motor && with_extra_parts) {
translate([X_threaded_rod_posX,X_threaded_rod_posY,0]) {
rotate([0,0,-motor_axis_angle]) translate([motor_axis_distance,0,0]) rotate([0,0,90+motor_axis_angle]) {
translate([0,0,wall_thickness-1]) {
// --- Stepper ---
motor(Cyclone_Nema17, NemaLengthLong);
// --- Motor gear ---
translate([0,0,-12-5.5+1])
cyclone_motor_gear(with_extra_parts);
}
// --- M3 x 8 mm bolts for holding the motor ---
for(i=[-1,1]) for(j=[-1,1])
translate([i*motor_screw_distance/2,j*motor_screw_distance/2,0])
translate([0,0,0]) {
rotate([0,0,0]) color(Steel) boltHole(size=3, length=8);
}
}
}
}
if(with_extra_parts) {
// --- Self tapping screw 2.9 x 16mm ---
rotate([90,0,0]) translate([frame_width/2,frame_thickness/2,-frame_height+frame_thickness/2+.2]) color(Steel) {
translate([-base_screw_distance,0,0]) rotate([180,0,0])
csk_bolt(2.9, 16);
translate([base_screw_distance*0.8,0,0]) rotate([180,0,0])
csk_bolt(2.9, 16);
translate([base_screw_distance*0.2,0,0]) rotate([180,0,0])
csk_bolt(2.9, 16);
}
// --- X smooth rod fix ---
translate([X_smooth_rods_sep_projected,-smooth_rod_margin,0])
rotate([90,0,0]) translate([0,frame_thickness/2,8.5])
rotate([180,0,0]) smooth_rod_fix(with_extra_parts=true);
translate([-smooth_rod_margin,X_smooth_rods_sep_projected,0])
rotate([0,90,0]) translate([-frame_thickness/2,0,-8.5])
rotate([0,0,90]) smooth_rod_fix(with_extra_parts=true);
// --- Y smooth rod fix ---
translate([frame_width-frame_thickness/2,frame_height,frame_thickness-2])
translate([0,-Y_rod_height+smooth_rod_margin,0]) {
translate([0,-smooth_rod_margin-8.5,Y_rod_dist_from_wall]) rotate([90,90,180])
smooth_rod_fix(with_extra_parts=true);
}
}
// --------- Support column for the triangular structure --------- //
translate([frame_width/4,frame_height-frame_hole_height/2-bottom_thickness,frame_thickness/2])
@ -286,9 +241,60 @@ translate([frame_width-frame_thickness/2,frame_height,frame_thickness-2])
}
}
if(with_extra_parts) {
if(exploded)
frame_extras(with_motor=with_motor, exploded_distance=30);
else
frame_extras(with_motor=with_motor, exploded_distance=0);
}
} // End of union() command
}
module frame_extras(with_motor=1, exploded_distance=0) {
if(with_motor) {
translate([X_threaded_rod_posX,X_threaded_rod_posY,0]) {
rotate([0,0,-motor_axis_angle]) translate([motor_axis_distance,0,0]) rotate([0,0,90+motor_axis_angle]) {
translate([0,0,wall_thickness-1]) {
// --- Stepper ---
translate([0,0,exploded_distance]) motor(Cyclone_Nema17, NemaLengthLong);
// --- Motor gear ---
translate([0,0,-12-5.5+1-0.5*exploded_distance])
cyclone_motor_gear(with_extra_parts=true, exploded=(exploded_distance!=0));
}
// --- M3 x 8 mm bolts for holding the motor ---
for(i=[-1,1]) for(j=[-1,1])
translate([i*motor_screw_distance/2,j*motor_screw_distance/2,0])
translate([0,0,-0.4*exploded_distance]) {
rotate([0,0,0]) color(Steel) boltHole(size=3, length=8);
}
}
}
}
// --- Self tapping screw 2.9 x 16mm ---
rotate([90,0,0]) translate([frame_width/2,frame_thickness/2,-frame_height+frame_thickness/2+.2+exploded_distance]) color(Steel) {
translate([-base_screw_distance,0,0]) rotate([180,0,0])
csk_bolt(2.9, 16);
translate([base_screw_distance*0.8,0,0]) rotate([180,0,0])
csk_bolt(2.9, 16);
translate([base_screw_distance*0.2,0,0]) rotate([180,0,0])
csk_bolt(2.9, 16);
}
// --- X smooth rod fix ---
translate([X_smooth_rods_sep_projected,-smooth_rod_margin,0])
rotate([90,0,0]) translate([0,frame_thickness/2,8.5+0.5*exploded_distance])
rotate([180,0,0]) smooth_rod_fix(with_extra_parts=true, exploded=(exploded_distance!=0));
translate([-smooth_rod_margin,X_smooth_rods_sep_projected,0])
rotate([0,90,0]) translate([-frame_thickness/2,0,-8.5-0.5*exploded_distance])
rotate([0,0,90]) smooth_rod_fix(with_extra_parts=true, exploded=(exploded_distance!=0));
// --- Y smooth rod fix ---
translate([frame_width-frame_thickness/2,frame_height,frame_thickness-2])
translate([0,-Y_rod_height+smooth_rod_margin,0])
translate([0,-smooth_rod_margin-8.5-0.5*exploded_distance,Y_rod_dist_from_wall]) rotate([90,90,180])
smooth_rod_fix(with_extra_parts=true, exploded=(exploded_distance!=0));
}

View File

@ -23,7 +23,7 @@ part_z = 8;
//for display only, doesn't contribute to final object
translate([frame_width/2,frame_height/2,0]) build_plate(3,110,140);
module smooth_rod_fix(with_extra_parts=false) {
module smooth_rod_fix(with_extra_parts=false, exploded=false) {
translate([0,0,part_z/2]) difference() {
// --------- Main frame --------- //
bcube([part_x,part_y,part_z],center=true,cr=2,cres=10);
@ -44,17 +44,23 @@ translate([0,0,part_z/2]) difference() {
} // End of difference() command
if(with_extra_parts) {
// --- Self tapping screw 2.9 x 16 mm ---
color(Steel) {
translate([0,0,-.2]) {
translate([-smooth_rod_screw_sep,0,0])
csk_bolt(2.9, 16);
translate([smooth_rod_screw_sep,0,0])
csk_bolt(2.9, 16);
}
if(exploded)
smooth_rod_fix_extras(exploded_distance=20);
else
smooth_rod_fix_extras(exploded_distance=0);
}
}
module smooth_rod_fix_extras(exploded_distance=0) {
// --- Self tapping screw 2.9 x 16 mm ---
color(Steel) {
translate([0,0,-.2-exploded_distance]) {
translate([-smooth_rod_screw_sep,0,0])
csk_bolt(2.9, 16);
translate([smooth_rod_screw_sep,0,0])
csk_bolt(2.9, 16);
}
}
}
smooth_rod_fix();