diff --git a/Hardware/Development/Cyclone_Template/template.scad b/Hardware/Development/Cyclone_Template/template.scad index 7fd4290..67e1eaa 100644 --- a/Hardware/Development/Cyclone_Template/template.scad +++ b/Hardware/Development/Cyclone_Template/template.scad @@ -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 ---- diff --git a/Hardware/Development/Gears/motor_gear.scad b/Hardware/Development/Gears/motor_gear.scad index f32f272..0f3937d 100644 --- a/Hardware/Development/Gears/motor_gear.scad +++ b/Hardware/Development/Gears/motor_gear.scad @@ -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(); diff --git a/Hardware/Development/Y_axis/Y_rod_idler.scad b/Hardware/Development/Y_axis/Y_rod_idler.scad index 77d7c21..e38e890 100644 --- a/Hardware/Development/Y_axis/Y_rod_idler.scad +++ b/Hardware/Development/Y_axis/Y_rod_idler.scad @@ -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); diff --git a/Hardware/Development/Y_axis/motor_stand.scad b/Hardware/Development/Y_axis/motor_stand.scad index f142602..6dc68fa 100644 --- a/Hardware/Development/Y_axis/motor_stand.scad +++ b/Hardware/Development/Y_axis/motor_stand.scad @@ -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); } } diff --git a/Hardware/Development/main_frame/frame.scad b/Hardware/Development/main_frame/frame.scad index 6622019..ab4e1b5 100644 --- a/Hardware/Development/main_frame/frame.scad +++ b/Hardware/Development/main_frame/frame.scad @@ -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)); } diff --git a/Hardware/Development/smooth_rod_fix/smooth_rod_fix.scad b/Hardware/Development/smooth_rod_fix/smooth_rod_fix.scad index b1dda29..5f58470 100644 --- a/Hardware/Development/smooth_rod_fix/smooth_rod_fix.scad +++ b/Hardware/Development/smooth_rod_fix/smooth_rod_fix.scad @@ -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();