diff --git a/Hardware/Development/Cyclone_Template/template.scad b/Hardware/Development/Cyclone_Template/template.scad index c641f3d..1a70772 100644 --- a/Hardware/Development/Cyclone_Template/template.scad +++ b/Hardware/Development/Cyclone_Template/template.scad @@ -11,6 +11,8 @@ use <../Y_axis/linear_bearing_holder.scad> use <../Y_axis/Y_nut_holder.scad> use <../XZ_axis/X_carriage.scad> use <../XZ_axis/Z_carriage.scad> +use <../libs/rod.scad> +use <../libs/PCB_Machining_Vise/PCB_vise_1_Part1.scad> X_axis_sep = 210; Y_axis_sep = 210; @@ -38,6 +40,8 @@ X_Final_Smooth_Rod_Length = X_axis_sep+46; Y_Final_Threaded_Rod_Length = Y_threaded_rod_length+38; Y_Final_Smooth_Rod_Length = Y_axis_sep+8; Y_threaded_rod_offset = 8; +Z_Final_Threaded_Rod_Length = 120; +Z_Final_Smooth_Rod_Length = 140; X_Wood_Base = X_axis_sep+100; Y_Wood_Base = Y_axis_sep+30; @@ -50,9 +54,9 @@ Z_PCB_BOARD = 1.5; //Travel (164 x 101 x 25) X_Travel = 0; //0~164 Y_Travel = 0; //0~101 -Z_Travel = 0; //0~25 +Z_Travel = 30; //0~30 -//To display steppers, bearings, washers, nuts, screws, micro switchs, etc. +//To display steppers, bearings, washers, nuts, bolts, micro-switches, etc. Display_Extra_Parts = true; //To enable exploded drawing view @@ -60,6 +64,9 @@ Exploded_Drawing = false; X_rod_sep_real = X_smooth_rods_sep_projected+smooth_rod_margin; +if(Display_Extra_Parts) //Non-Plastic Parts Header + echo("Non-Plastic Parts, Quantity, Part"); + 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, exploded=exploded); @@ -114,8 +121,11 @@ module linear_bearing_holder() { } module Y_nut_holder() { - color([0.5,0.5,0]) - nut_holder_positioned(); + if(Display_Extra_Parts) + nut_holder_positioned(with_extra_parts=Display_Extra_Parts, exploded=Exploded_Drawing); + else + color([0.5,0.5,0]) + nut_holder_positioned(); } module cnc_workbed() { @@ -128,10 +138,17 @@ module cnc_workbed() { cube([workbed_X,workbed_Y,workbed_thickness],center=true); cube([workbed_X-1,workbed_Y-1,workbed_thickness+1],center=true); } + } + if(Display_Extra_Parts) { + translate([-28-X_PCB_BOARD/2,8+Y_PCB_BOARD/2,-(workbed_thickness)/2]) + rotate([180,0,0]) PCB_vise_1(with_extra_parts=true, exploded=Exploded_Drawing); + translate([28+X_PCB_BOARD/2,-8-Y_PCB_BOARD/2,-(workbed_thickness)/2]) + rotate([180,0,180]) PCB_vise_1(with_extra_parts=true, exploded=Exploded_Drawing); // --- PCB Board --- - translate([0,0,-(workbed_thickness+Z_PCB_BOARD)/2]) - cube([X_PCB_BOARD,Y_PCB_BOARD,Z_PCB_BOARD],center=true); + echo("Non-Plastic Parts, 1, Double sided PCB ", X_PCB_BOARD, " x ", Y_PCB_BOARD, " x ", Z_PCB_BOARD); + translate([0,0,-(workbed_thickness)/2-15]) + color([0.72,0.45,0.20]) cube([X_PCB_BOARD,Y_PCB_BOARD,Z_PCB_BOARD],center=true); } } @@ -155,13 +172,13 @@ module cnc_workbed() { module X_carriage() { translate([0,X_rod_sep_real/2,0]) rotate([0,0,90]) - X_carriage_assembled(show_printbed = 0, show_Xrods = 0, show_Zrods = 1); + X_carriage_assembled(show_printbed = 0, show_Xrods = 0, z_smooth_rods_len = Z_Final_Smooth_Rod_Length, with_extra_parts=Display_Extra_Parts, exploded=Exploded_Drawing); } module Z_carriage_piece() { translate([0,0,33+Z_Travel]) rotate([0,0,90]) - Z_carriage_assembled(with_extra_parts=Display_Extra_Parts, exploded=Exploded_Drawing); + Z_carriage_assembled(z_thread_rod_length=Z_Final_Threaded_Rod_Length, with_extra_parts=Display_Extra_Parts, exploded=Exploded_Drawing); } module cnc(show_printbed = 1) { @@ -226,13 +243,6 @@ module cnc_workbed_template() { } } -module rod(len=100) { - color([0.8,0.8,0.8]) - rotate([90,0,0]) - cylinder(r=8/2,h=len,center=true,$fn=30); -} - - module cnc_assembled(Y_offset=0,X_offset=0,Z_offset=0) { translate([-X_axis_sep/2,-Y_axis_sep/2]) cnc(); @@ -244,7 +254,7 @@ module cnc_assembled(Y_offset=0,X_offset=0,Z_offset=0) { // --- Y threaded rod --- translate([0,6+Y_threaded_rod_offset/2,Y_threaded_rod_height-Y_rod_height]) - color([0.5,0.5,0.5]) rod(Y_Final_Threaded_Rod_Length); + rod(Y_Final_Threaded_Rod_Length, threaded=true); // --- Y smooth rods --- translate([X_axis_sep/2,0,0]) @@ -262,7 +272,7 @@ module cnc_assembled(Y_offset=0,X_offset=0,Z_offset=0) { Z_carriage_piece(); } rotate([0,0,90]) - color([0.5,0.5,0.5]) translate([0,6,0]) rod(X_Final_Threaded_Rod_Length); + translate([0,6,0]) rod(X_Final_Threaded_Rod_Length, threaded=true); translate([0,0,X_rod_sep_real]) rotate([0,0,90]) rod(X_Final_Smooth_Rod_Length); @@ -283,9 +293,11 @@ rotate([0,0,90])cnc_assembled(Y_offset=30,X_offset=-50,Z_offset=10); //rotate([0,0,90]) cnc_base_template(); // So the generated dxf matches inkscape's default orientation // cnc_workbed_template(); -echo("Wood base = ", X_Wood_Base, " x ", Y_Wood_Base, " x ", Z_Wood_Base); -echo("Work bed = ", workbed_X, " x ", workbed_Y, " x ", workbed_thickness); -echo("X smooth rod length = ", X_Final_Smooth_Rod_Length); -echo("X threaded rod length = ", X_Final_Threaded_Rod_Length); -echo("Y smooth rod length = ", Y_Final_Smooth_Rod_Length); -echo("Y threaded rod length = ", Y_Final_Threaded_Rod_Length); +echo("Non-Plastic Parts, 1, Machine Base ", X_Wood_Base, " x ", Y_Wood_Base, " x ", Z_Wood_Base); +echo("Non-Plastic Parts, 1, Work Bed ", workbed_X, " x ",workbed_Y, " x ", workbed_thickness); +echo("Non-Plastic Parts, 2, Smooth Rod for X axis, M8 x ", X_Final_Smooth_Rod_Length); +echo("Non-Plastic Parts, 1, Threaded Rod for X axis, M8 x ", X_Final_Threaded_Rod_Length); +echo("Non-Plastic Parts, 2, Smooth Rod for Y axis, M8 x ", Y_Final_Smooth_Rod_Length); +echo("Non-Plastic Parts, 1, Threaded Rod for Y axis, M8 x ", Y_Final_Threaded_Rod_Length); +echo("Non-Plastic Parts, 2, Smooth Rod for Z axis, M8 x ", Z_Final_Smooth_Rod_Length); +echo("Non-Plastic Parts, 1, Threaded Rod for Z axis, M8 x ", Z_Final_Threaded_Rod_Length); diff --git a/Hardware/Development/Gears/motor_gear.scad b/Hardware/Development/Gears/motor_gear.scad index 78c60b7..25da747 100644 --- a/Hardware/Development/Gears/motor_gear.scad +++ b/Hardware/Development/Gears/motor_gear.scad @@ -125,7 +125,7 @@ union() difference() { cyclone_motor_gear_extras(exploded_distance=(exploded?20:0)); module cyclone_motor_gear_extras(exploded_distance=0) { - echo("Non-Plastic Parts: 1 x Grub screw M3 x 8 mm to attach gear to motor shaft"); + echo("Non-Plastic Parts, 1, Grub Screw M3 x 8 mm 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); diff --git a/Hardware/Development/Gears/rod_gear.scad b/Hardware/Development/Gears/rod_gear.scad index c216241..d3231a5 100644 --- a/Hardware/Development/Gears/rod_gear.scad +++ b/Hardware/Development/Gears/rod_gear.scad @@ -104,7 +104,7 @@ difference() { cyclone_rod_gear_extras(exploded_distance=(exploded?12:0)); module cyclone_rod_gear_extras(exploded_distance=0) { - echo("Non-Plastic Parts: 2 x M8 nuts to attach rod_gear on threaded rod"); + echo("Non-Plastic Parts, 2, Nut M8 to attach rod_gear on threaded rod"); translate([0,0,-10/2-0.8*8-1.0*exploded_distance]) color(Steel) flat_nut(8); translate([0,0,nut_separation/2+0.8*8+1.0*exploded_distance]) rotate([180,0,0]) color(Steel) flat_nut(8); } diff --git a/Hardware/Development/XZ_axis/X_carriage.scad b/Hardware/Development/XZ_axis/X_carriage.scad index 7a911bc..7f5ecc5 100644 --- a/Hardware/Development/XZ_axis/X_carriage.scad +++ b/Hardware/Development/XZ_axis/X_carriage.scad @@ -2,10 +2,13 @@ // Created by Carlosgs (http://carlosgs.es) // License: Attribution - Share Alike - Creative Commons (http://creativecommons.org/licenses/by-sa/3.0/) +include +include use <../libs/obiscad/bcube.scad> use <../libs/obiscad/bevel.scad> use <../libs/build_plate.scad> use <../libs/teardrop.scad> +use <../libs/rod.scad> include <./lm8uu_holder.scad> @@ -40,15 +43,9 @@ lbearing_length = 24; Z_smooth_rods_sep = 55; Z_smooth_rods_len = 140; -Z_threaded_rod_len = 120; lbearing_holder_length = Z_smooth_rods_sep+M8_rod_diam+5; -module rod(len=100) { - color([0.8,0.8,0.8]) - rotate([90,0,0]) - cylinder(r=8/2,h=len,center=true,$fn=30); -} module rodHole(len=100,radius=M8_rod_hole_diam/2, truncateMM=1) { color([0.8,0.8,0.8]) @@ -80,7 +77,7 @@ module X_nut_holder() { } } -module X_nut_holder_cover() { +module X_nut_holder_cover(with_extra_parts=false, exploded=false) { X_nut_screw_diam = X_nut_screw_diam*1.2; scale([1,1,-1]) rotate([-90,0,0]) difference() { @@ -107,6 +104,17 @@ module X_nut_holder_cover() { rotate([90,0,0]) cylinder(r=X_nut_screw_diam/2,h=40,center=true,$fn=20); } + + if(with_extra_parts) + X_nut_holder_cover_extras(exploded_distance=(exploded?16:0)); + + module X_nut_holder_cover_extras(exploded_distance=0) { + screw_size = 2.2; + screw_length = 16; + echo("Non-Plastic Parts, 1, Self Tapping Screw 2.2 x 16 mm for X_nut_holder_cover"); + scale([1,1,-1]) rotate([-90,0,0]) translate([-4,-3/2-0.2-exploded_distance,10]) rotate([-90,0,0]) color(Steel) + csk_bolt(screw_size, screw_length); + } } module X_carriage(show_printbed = 0, show_support = 0) { @@ -173,16 +181,38 @@ module X_carriage(show_printbed = 0, show_support = 0) { } } // End of difference + + if(with_extra_parts) + X_carriage_extras(exploded=false); + + module X_carriage_extras(exploded_distance=(exploded?8:0)) { + color(Steel) { + echo("Non-Plastic Parts, 2, Nut M8 for X_carriage"); + translate([-X_rod_sep_real/2,-lbearing_holder_length/2+X_axis_nut_support_thickness/2,0]) + rotate([-90,0,0]) translate([0,0,0.8*8+1.5+exploded_distance]) + rotate([0,180,15]) + flat_nut(8); + + translate([0,0,40-M8_nut_height_Z+exploded_distance]) + translate([0,0,0.8*8]) rotate([0,180,0]) + flat_nut(8); + } + + translate([-X_rod_sep_real/2,-lbearing_holder_length/2+X_axis_nut_support_thickness/2,0]) + rotate([-90,0,0]) translate([0,0,0.8*8+2.0+2*exploded_distance]) + rotate([0,180,-90-45]) + X_nut_holder_cover(with_extra_parts=true, exploded=(exploded_distance!=0)); + } } -module X_carriage_assembled(show_printbed = 0, show_Xrods = 0, show_Zrods = 0) { - X_carriage(show_printbed); +module X_carriage_assembled(show_printbed = 0, show_Xrods = 0, z_smooth_rods_len = 0, with_extra_parts=false, exploded=false) { + X_carriage(show_printbed, with_extra_parts=with_extra_parts, exploded=exploded); if(show_Xrods){ // ---- Rods (for reference) ---- translate([-X_rod_sep_real/2,0,0]) { - color([0.5,0.5,0.5]) rod(len=100); + rod(len=100, threaded=true); } translate([-X_rod_sep_real/2,0,X_rod_sep_real]) { rod(len=100); @@ -191,15 +221,13 @@ module X_carriage_assembled(show_printbed = 0, show_Xrods = 0, show_Zrods = 0) { rod(len=100); } } - if(show_Zrods) + if(z_smooth_rods_len) translate([0,0,0]) rotate([90,0,0]) { - translate([0,Z_threaded_rod_len/2-10,0]) - color([0.5,0.5,0.5]) rod(len=Z_threaded_rod_len); - translate([0,Z_smooth_rods_len/2-5,Z_smooth_rods_sep/2]) - rod(len=Z_smooth_rods_len); - translate([0,Z_smooth_rods_len/2-5,-Z_smooth_rods_sep/2]) - rod(len=Z_smooth_rods_len); + translate([0,z_smooth_rods_len/2-5,Z_smooth_rods_sep/2]) + rod(len=z_smooth_rods_len); + translate([0,z_smooth_rods_len/2-5,-Z_smooth_rods_sep/2]) + rod(len=z_smooth_rods_len); } } @@ -211,7 +239,7 @@ module X_carriage_print_plate() { X_carriage(show_printbed = 0, show_support = 1); } -//X_carriage_assembled(show_printbed = 1,show_Xrods = 1,show_Zrods = 1); +//X_carriage_assembled(show_printbed = 1,show_Xrods = 1,z_smooth_rods_len = Z_smooth_rods_len); X_carriage_print_plate(); //translate([0,20,0]) X_nut_holder_cover(); diff --git a/Hardware/Development/XZ_axis/Z_carriage.scad b/Hardware/Development/XZ_axis/Z_carriage.scad index d33d43c..865107a 100644 --- a/Hardware/Development/XZ_axis/Z_carriage.scad +++ b/Hardware/Development/XZ_axis/Z_carriage.scad @@ -16,6 +16,7 @@ use <../libs/obiscad/bcube.scad> use <../libs/build_plate.scad> use <../libs/Write/Write.scad> use <../libs/linear_bearing.scad> +use <../libs/rod.scad> use use @@ -84,7 +85,7 @@ Cyclone_Nema17 = [ [NemaAxleFlatLengthBack, 14*mm] ]; -module dummySpindle() { +module dummySpindle(length=0) { translate([0,0,-length]) { translate([0,0,spindle_motor_length-5]) color([0.95,0.95,0.95]) cylinder(r=26,h=30,$fn=60); translate([0,0,spindle_motor_length-10]) color([0.95,0.95,0.95]) cylinder(r=10/2,h=5,$fn=60); @@ -272,12 +273,12 @@ module Z_carriage(showSpindle=false,top_part=true, with_extra_parts=false, explo module Z_carriage_extras(top_part=true, exploded_distance=0) { if(top_part) { - echo("Non-Plastic Parts: 1 x Nema 17 for Z axis"); + echo("Non-Plastic Parts, 1, Nema 17 for Z axis"); translate([-motor_width/2,0,1-exploded_distance]) rotate([0,180,0]) motor(Cyclone_Nema17, NemaLengthLong); - echo("Non-Plastic Parts: 4 x Bolt M3 x 6 mm for Z motor"); + echo("Non-Plastic Parts, 4, Bolt M3 x 6 mm for Z motor"); for(i=[-1,1]) for(j=[-1,1]) translate([-motor_width/2,0,0]) translate([i*motor_screw_distance/2,j*motor_screw_distance/2,2.5+exploded_distance*0.7]) { @@ -288,7 +289,7 @@ module Z_carriage_extras(top_part=true, exploded_distance=0) { rotate([0,0,-90]) cyclone_motor_z_gear(with_extra_parts=true, exploded=(exploded_distance!=0)); - echo("Non-Plastic Parts: 1 x 608 bearing for Z motor"); + echo("Non-Plastic Parts, 1, Bearing 608 for Z motor"); translate([0,0,wall_thickness/2]) bearing(model=608); @@ -296,7 +297,7 @@ module Z_carriage_extras(top_part=true, exploded_distance=0) { rotate([180,0,11]) cyclone_rod_z_gear(with_extra_parts=true, exploded=(exploded_distance!=0)); - echo("Non-Plastic Parts: 2 x Bolt M5 x 55 mm to attach Z_carriage top and bottom"); + echo("Non-Plastic Parts, 2, Bolt M5 x 55 mm to attach Z_carriage top and bottom"); rotate([0,0,-90]) translate([-wall_height/2,-Z_threaded_pos,0]) translate([wall_height/2,wall_width-4,0]) color(Steel) { translate([20,8,-0.05-2.5*exploded_distance]) @@ -307,9 +308,9 @@ module Z_carriage_extras(top_part=true, exploded_distance=0) { } else { - echo("Non-Plastic Parts: 1 x Spindle"); + echo("Non-Plastic Parts, 1, Spindle"); - echo("Non-Plastic Parts: 2 x M5 nut to attach Z_carriage top and bottom"); + echo("Non-Plastic Parts, 2, Nut M5 to attach Z_carriage top and bottom"); rotate([0,0,-90]) translate([-wall_height/2,-Z_threaded_pos,0]) translate([wall_height/2,wall_width-4,0]) color(Steel) { translate([20,8,-0.8*5-0.5*exploded_distance]) @@ -320,9 +321,9 @@ module Z_carriage_extras(top_part=true, exploded_distance=0) { } if(top_part) - echo("Non-Plastic Parts: 2 x LM8UU for Z_carriage top part"); + echo("Non-Plastic Parts, 2, Linear Bearing LM8UU for Z_carriage top part"); else - echo("Non-Plastic Parts: 2 x LM8UU for Z_carriage bottom part"); + echo("Non-Plastic Parts, 2, Linear Bearing LM8UU for Z_carriage bottom part"); rotate([0,0,-90]) translate([-wall_height/2,-Z_threaded_pos,0]) { translate([wall_height/2-Z_smooth_rods_sep/2,Z_threaded_pos,0]) @@ -334,12 +335,12 @@ module Z_carriage_extras(top_part=true, exploded_distance=0) { } if(top_part) { - echo("Non-Plastic Parts: 1 x M3 x 20 mm for Z_carriage part"); - echo("Non-Plastic Parts: 1 x M3 nut for Z_carriage top part"); + echo("Non-Plastic Parts, 1, Bolt M3 x 20 mm for Z_carriage part"); + echo("Non-Plastic Parts, 1, Nut M3 for Z_carriage top part"); } else { - echo("Non-Plastic Parts: 1 x M3 x 20 mm for Z_carriage bottom part"); - echo("Non-Plastic Parts: 1 x M3 nut for Z_carriage bottom part"); + echo("Non-Plastic Parts, 1, Bolt M3 x 20 mm for Z_carriage bottom part"); + echo("Non-Plastic Parts, 1, Nut M3 for Z_carriage bottom part"); } rotate([0,top_part ? 0:180,-90]) translate([-wall_height/2,0,0]) translate([wall_height/2,wall_width+(top_part?-1:-1.5),0]) { @@ -350,10 +351,14 @@ module Z_carriage_extras(top_part=true, exploded_distance=0) { } } -module Z_carriage_assembled(with_extra_parts=false, exploded=false) { +module Z_carriage_assembled(z_thread_rod_length=120, with_extra_parts=false, exploded=false) { Z_carriage(showSpindle=true,top_part=false,with_extra_parts=with_extra_parts, exploded=exploded); translate([0,0,spindle_holder_distance]) rotate([180,0,0]) Z_carriage(showSpindle=false,top_part=true, with_extra_parts=with_extra_parts, exploded=exploded); + + if(z_thread_rod_length) + translate([0,0,-z_thread_rod_length/2+spindle_holder_distance]) rotate([90,0,0]) + rod(len=z_thread_rod_length, threaded=true); } diff --git a/Hardware/Development/XZ_axis/motor_gear.scad b/Hardware/Development/XZ_axis/motor_gear.scad index 88cc6ee..50e177b 100644 --- a/Hardware/Development/XZ_axis/motor_gear.scad +++ b/Hardware/Development/XZ_axis/motor_gear.scad @@ -119,7 +119,7 @@ rotate([180,0,0]) union() difference() { cyclone_motor_z_gear_extras(exploded_distance = (exploded?24:0)); module cyclone_motor_z_gear_extras(exploded_distance=0) { - echo("Non-Plastic Parts: 1 x Grub screw M3 x 8 mm to attach Z motor gear to motor shaft"); + echo("Non-Plastic Parts, 1, Grub Screw M3 x 8 mm to attach Z motor gear to motor shaft"); translate([0,-2.5-exploded_distance,-(12-3.5)]) rotate([90, 0, 0]) color(Steel) cylinder(r=1.5, h=8, $fn=30); } } diff --git a/Hardware/Development/XZ_axis/rod_gear.scad b/Hardware/Development/XZ_axis/rod_gear.scad index cbf6c60..6063f69 100644 --- a/Hardware/Development/XZ_axis/rod_gear.scad +++ b/Hardware/Development/XZ_axis/rod_gear.scad @@ -103,7 +103,7 @@ difference() { cyclone_rod_z_gear_extras(exploded_distance = (exploded ?8:0)); module cyclone_rod_z_gear_extras(exploded_distance=false) { - echo("Non-Plastic Parts: 2 x M8 nut for rod_gear"); + echo("Non-Plastic Parts, 2, Nut M8 for rod_gear"); translate([0,0,0.8*8+nut_separation/2+exploded_distance]) rotate([180,0,0]) color(Steel) flat_nut(8); translate([0,0,-0.8*8-10/2-exploded_distance]) rotate([0,0,0]) color(Steel) flat_nut(8); } diff --git a/Hardware/Development/Y_axis/Y_nut_holder.scad b/Hardware/Development/Y_axis/Y_nut_holder.scad index 163ebc5..05519cf 100644 --- a/Hardware/Development/Y_axis/Y_nut_holder.scad +++ b/Hardware/Development/Y_axis/Y_nut_holder.scad @@ -2,6 +2,8 @@ // Created by Carlosgs (http://carlosgs.es) // License: Attribution - Share Alike - Creative Commons (http://creativecommons.org/licenses/by-sa/3.0/) +include +include use <../libs/obiscad/bcube.scad> use <../libs/build_plate.scad> use <../libs/Write/Write.scad> @@ -72,7 +74,7 @@ module nut_holder_no_hole() { } -module nut_holder() { +module nut_holder(with_extra_parts=false, exploded=false) { union() { difference() { nut_holder_no_hole(); @@ -101,12 +103,34 @@ module nut_holder() { translate([-8,-5,0]) text(M8_nut_height-M8_nut_height_margin); } // End of union + + if(with_extra_parts) + nut_holder_extras(exploded_distance=(exploded?18:0)); + + module nut_holder_extras(exploded_distance=0) { + echo("Non-Plastic Parts, 1, Nut M8 for Y_nut_holder"); + translate([base_width-3.7,Y_threaded_rod_dist_from_workbed,0]) + translate([-0.5+exploded_distance,0,wall_thickness/2-0.8*8/2]) + color(Steel) flat_nut(8); + + echo("Non-Plastic Parts, 2, Self Tapping Screw 3.9 x 13 mm to attach Y_nut_holder to work bed"); + screw_size = 3.9; + screw_length = 13; + color(Steel) translate([0,wall_height]) rotate([0,0,-90]) + translate([wall_height,wall_width-5.5,20]) + rotate([0,90,0]) { + translate([-5,0,-bottom_thickness-0.2-exploded_distance]) + csk_bolt(screw_size, screw_length); + translate([5,0,-bottom_thickness-0.2-exploded_distance]) + csk_bolt(screw_size, screw_length); + } + } } -module nut_holder_positioned() { +module nut_holder_positioned(with_extra_parts=false, exploded=false) { rotate([90,0,0]) translate([-(base_width-3.7),0,-wall_thickness/2]) - nut_holder(); + nut_holder(with_extra_parts=with_extra_parts, exploded=exploded); } //for display only, doesn't contribute to final object diff --git a/Hardware/Development/Y_axis/Y_rod_idler.scad b/Hardware/Development/Y_axis/Y_rod_idler.scad index d19417e..24cf1ae 100644 --- a/Hardware/Development/Y_axis/Y_rod_idler.scad +++ b/Hardware/Development/Y_axis/Y_rod_idler.scad @@ -101,7 +101,7 @@ translate([frame_width-frame_thickness,frame_height,frame_thickness-2]) module Y_rod_idler_extras(exploded_distance=0) { screw_size = 2.9; screw_length = 16; - echo("Non-Plastic Parts: 2 x Self tapping screw 2.9 x 16 mm for Y_rod_idler"); + echo("Non-Plastic Parts, 2, Self Tapping Screw 2.9 x 16 mm for Y_rod_idler"); 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]) diff --git a/Hardware/Development/Y_axis/linear_bearing_holder.scad b/Hardware/Development/Y_axis/linear_bearing_holder.scad index 0112478..66532ac 100644 --- a/Hardware/Development/Y_axis/linear_bearing_holder.scad +++ b/Hardware/Development/Y_axis/linear_bearing_holder.scad @@ -88,14 +88,14 @@ module lm8uu_bearing_holder(with_extra_parts=false, exploded=false) { lm8uu_bearing_holder_extras(exploded_distance=(exploded?1.3*linearBearing_L("LM8UU"):0)); module lm8uu_bearing_holder_extras(exploded_distance=0) { - echo("Non-Plastic Parts: 1 x LM8UU linear ball bearing for lm8uu_bearing_holder"); + echo("Non-Plastic Parts, 1, Linear Bearing LM8UU for lm8uu_bearing_holder"); rotate([90,0,90]) translate([0,0,LM8UU_dia/2+2]) rotate([90,0,0]) translate([0,0,exploded_distance]) linearBearing(pos=[0,0,-linearBearing_L("LM8UU")/2], model="LM8UU"); screw_size = 3.5; screw_length = 13; - echo("Non-Plastic Parts: 1 x Self tapping screw 3.5 x 13 mm to attach lm8uu_bearing_holder on work bed"); + echo("Non-Plastic Parts, 1, Self Tapping Screw 3.5 x 13 mm to attach lm8uu_bearing_holder on work bed"); translate([plate_height-3+0.2+0.5*exploded_distance,screw_space_x/2,0]) rotate([0,-90,0]) color(Steel) csk_bolt(screw_size, screw_length); } diff --git a/Hardware/Development/Y_axis/motor_stand.scad b/Hardware/Development/Y_axis/motor_stand.scad index 6d0e931..49ed476 100644 --- a/Hardware/Development/Y_axis/motor_stand.scad +++ b/Hardware/Development/Y_axis/motor_stand.scad @@ -111,7 +111,7 @@ module motor_stand_no_base_extras(with_motor=false, exploded_distance=0) { rotate([0,180,0]) translate([0,0,-1+exploded_distance]) motor(Cyclone_Nema17, NemaLengthLong); - echo("Non-Plastic Parts: 1 x Nema 17 motor"); + echo("Non-Plastic Parts, 1, Nema 17 for Y axis"); // --- Motor Gear --- translate([0,0,12+5.5+exploded_distance]) @@ -121,7 +121,7 @@ module motor_stand_no_base_extras(with_motor=false, 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]) { - echo("Non-Plastic Parts: 1 x 608 bearing for motor stand"); + echo("Non-Plastic Parts, 1, Bearing 608 for motor stand"); translate([0,0,0.5*exploded_distance]) bearing(model=608); @@ -132,7 +132,7 @@ module motor_stand_no_base_extras(with_motor=false, exploded_distance=0) { } } - echo("Non-Plastic Parts: 4 x M3 x 6mm bolts to attach motor on motor_stand"); + echo("Non-Plastic Parts, 4, Bolt M3 x 6 mm to attach motor on motor_stand"); 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+exploded_distance*0.7]) { @@ -143,13 +143,13 @@ module motor_stand_no_base_extras(with_motor=false, exploded_distance=0) { 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) { - echo("Non-Plastic Parts: 1 x 608 bearing for idle stand"); + echo("Non-Plastic Parts, 1, Bearing 608 for idle stand"); translate([0,0,0.3*exploded_distance]) bearing(model=608); - echo("Non-Plastic Parts: 1 x M8 washer for idle stand"); + echo("Non-Plastic Parts, 1, Washer M8 for idle stand"); translate([0,0,7+0.6*exploded_distance]) washer(8); - echo("Non-Plastic Parts: 1 x M8 nut to attach threaded rod on idle stand"); + echo("Non-Plastic Parts, 1, Nut M8 to attach threaded rod on idle stand"); translate([0,0,6.4+7+0.8+0.9*exploded_distance]) rotate([0,180,0]) flat_nut(8); } } @@ -245,7 +245,7 @@ module idle_stand(with_extra_parts=false, exploded=false) { module idle_stand_extras(exploded_distance=0) { screw_size = 2.9; screw_length = 16; - echo("Non-Plastic Parts: 2 x Self tapping screw 2.9 x 16 mm for motor_stand"); + echo("Non-Plastic Parts, 2, Self Tapping Screw 2.9 x 16 mm for motor_stand"); 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]) diff --git a/Hardware/Development/libs/End_Stop_Holder.scad b/Hardware/Development/libs/End_Stop_Holder.scad index 08dd045..356dcce 100644 --- a/Hardware/Development/libs/End_Stop_Holder.scad +++ b/Hardware/Development/libs/End_Stop_Holder.scad @@ -34,23 +34,23 @@ difference() { } module end_stop_holder_extras(exploded_distance=0) { - echo("Non-Plastic Parts: 6 x M3 washer to attach micro switch on end_stop_holder"); + echo("Non-Plastic Parts, 6, Washer M3 to attach micro switch on end_stop_holder"); for(i = [0:2] ) { translate([4+i*0.3+(i+1)*0.2*exploded_distance, 28, 5]) rotate([0, 90, 0]) color(Steel) washer(3); translate([4+i*0.3+(i+1)*0.2*exploded_distance, 38, 5]) rotate([0, 90, 0]) color(Steel) washer(3); } - echo("Non-Plastic Parts: 1 x Micro switch on end_stop_holder"); + echo("Non-Plastic Parts, 1, Micro Switch on end_stop_holder"); translate([4+3*0.3+exploded_distance, 28-5.15+(10-9.5)/2, 5-2]) rotate([90,0,90]) micro_switch(with_extra_parts=true, exploded=(exploded_distance!=0)); - echo("Non-Plastic Parts: 1 x M3 x 18 mm bolt to attach end_stop_holder on smooth rod"); + echo("Non-Plastic Parts, 1, Bolt M3 x 18 mm to attach end_stop_holder on smooth rod"); translate([-3*exploded_distance,6,5]) rotate([0,90,0]) color(Steel) boltHole(size=3, length=18); - echo("Non-Plastic Parts: 1 x M3 nut to attach end_stop_holder on smooth rod"); + echo("Non-Plastic Parts, 1, Nut M3 to attach end_stop_holder on smooth rod"); translate([17+0.9*3/2+exploded_distance,6,5]) rotate([0,-90,0]) rotate([0,0,30]) color(Steel) flat_nut(3); diff --git a/Hardware/Development/libs/PCB_Machining_Vise/PCB_vise_1_Part1.STL b/Hardware/Development/libs/PCB_Machining_Vise/PCB_vise_1_Part1.STL new file mode 100644 index 0000000..caffb55 Binary files /dev/null and b/Hardware/Development/libs/PCB_Machining_Vise/PCB_vise_1_Part1.STL differ diff --git a/Hardware/Development/libs/PCB_Machining_Vise/PCB_vise_1_Part1.scad b/Hardware/Development/libs/PCB_Machining_Vise/PCB_vise_1_Part1.scad new file mode 100644 index 0000000..68b0c9d --- /dev/null +++ b/Hardware/Development/libs/PCB_Machining_Vise/PCB_vise_1_Part1.scad @@ -0,0 +1,52 @@ +//Designed by Forgetful_Guy +//From http://www.thingiverse.com/thing:63578 +//License: http://creativecommons.org/publicdomain/zero/1.0/ + +include +include +use <../large_washer.scad> +use <./PCB_vise_1_Part2.scad> + + +module PCB_vise_1_Part1(with_extra_parts=false, exploded=false) { + import("./PCB_vise_1_Part1.STL"); + + + if(with_extra_parts) + PCB_vise_1_Part1_extras(exploded_distance=(exploded?5:0)); + + module PCB_vise_1_Part1_extras(exploded_distance=0) { + echo("Non-Plastic Parts, 2, Large Washer M5 for PCB_vise_1_Part1"); + echo("Non-Plastic Parts, 2, Self Tapping Screw 4.8 x 19 mm for PCB_vise_1_Part1"); + echo("Non-Plastic Parts, 5, Nut M3 for PCB_vise_1_Part1"); + color(Steel) { + translate([10,20,8.0+exploded_distance]) { + large_washer(5); + translate([0,0,largeWasher_H(5)+2+5*exploded_distance]) rotate([180,0,0]) csk_bolt(4.8, 19); + } + translate([10,20+40,8.0+exploded_distance]) { + large_washer(5); + translate([0,0,largeWasher_H(5)+2+5*exploded_distance]) rotate([180,0,0]) csk_bolt(4.8, 19); + } + translate([24-2*exploded_distance,14,8+0.6]) + flat_nut(3); + translate([24-2*exploded_distance,14+28,8+0.6]) + flat_nut(3); + translate([24-2*exploded_distance,14+28*2,8+0.6]) + flat_nut(3); + translate([33,4-2*exploded_distance,8+0.6]) + flat_nut(3); + translate([33+22,4-2*exploded_distance,8+0.6]) + flat_nut(3); + } + } +} + + +module PCB_vise_1(with_extra_parts=false, exploded=false) { + PCB_vise_1_Part1(with_extra_parts=with_extra_parts, exploded=exploded); + translate([20,0,15+0.8]) + PCB_vise_1_Part2(with_extra_parts=with_extra_parts, exploded=exploded); +} + +PCB_vise_1(with_extra_parts=false, exploded=false); \ No newline at end of file diff --git a/Hardware/Development/libs/PCB_Machining_Vise/PCB_vise_1_Part2.STL b/Hardware/Development/libs/PCB_Machining_Vise/PCB_vise_1_Part2.STL new file mode 100644 index 0000000..e0040fc Binary files /dev/null and b/Hardware/Development/libs/PCB_Machining_Vise/PCB_vise_1_Part2.STL differ diff --git a/Hardware/Development/libs/PCB_Machining_Vise/PCB_vise_1_Part2.scad b/Hardware/Development/libs/PCB_Machining_Vise/PCB_vise_1_Part2.scad new file mode 100644 index 0000000..1a93083 --- /dev/null +++ b/Hardware/Development/libs/PCB_Machining_Vise/PCB_vise_1_Part2.scad @@ -0,0 +1,34 @@ +//Designed by Forgetful_Guy +//From http://www.thingiverse.com/thing:63578 +//License: http://creativecommons.org/publicdomain/zero/1.0/ + +include +include + +module PCB_vise_1_Part2(with_extra_parts=false, exploded=false) { + import("./PCB_vise_1_Part2.STL"); + + + if(with_extra_parts) + PCB_vise_1_Part2_extras(exploded_distance=(exploded?5:0)); + + module PCB_vise_1_Part2_extras(exploded_distance=0) { + echo("Non-Plastic Parts, 5, Bolt M3 x 16 mm for PCB_vise_1_Part2"); + color(Steel) { + translate([4,14,2.5+4*exploded_distance]) + rotate([180,0,0]) boltHole(size=3, length=16); + translate([4,14+28,2.5+4*exploded_distance]) + rotate([180,0,0]) boltHole(size=3, length=16); + translate([4,14+28*2,2.5+4*exploded_distance]) + rotate([180,0,0]) boltHole(size=3, length=16); + translate([13,4,2.5+4*exploded_distance]) + rotate([180,0,0]) boltHole(size=3, length=16); + translate([13+22,4,2.5+4*exploded_distance]) + rotate([180,0,0]) boltHole(size=3, length=16); + } + } +} + + +PCB_vise_1_Part2(with_extra_parts=false, exploded=false); + diff --git a/Hardware/Development/libs/Write/Write.scad b/Hardware/Development/libs/Write/Write.scad index ccc43f7..ffe9b6b 100644 --- a/Hardware/Development/libs/Write/Write.scad +++ b/Hardware/Development/libs/Write/Write.scad @@ -32,7 +32,7 @@ space =1; //extra space between characters in (character widths) rotate=0; // text rotation (clockwise) font = "Letters.dxf"; //default for aditional fonts - fontPath = "../libs/Write/"; // CGS MOD: Path for the DXF font files + fontPath = "./"; // CGS MOD: Path for the DXF font files // write cube defaults diff --git a/Hardware/Development/libs/large_washer.scad b/Hardware/Development/libs/large_washer.scad new file mode 100644 index 0000000..6ed52e1 --- /dev/null +++ b/Hardware/Development/libs/large_washer.scad @@ -0,0 +1,45 @@ +////By Glen Chung, 2013. +//Dual licenced under Creative Commons Attribution-Share Alike 3.0 and LGPL2 or later + +include +include + +LARGE_WASHER_D1 = 0; //Inner diameter +LARGE_WASHER_D2 = 1; //Outer diameter +LARGE_WASHER_H = 2; //Height + +// Large Washer dimensions +// model == X ? [ D1, D2, H]: +function largeWasherDimensions(model=3) = + model == 3 ? [ 3.2*mm, 9.0*mm, 0.8*mm]: + model == 4 ? [ 4.3*mm, 12.0*mm, 1.0*mm]: + model == 5 ? [ 5.3*mm, 15.0*mm, 1.0*mm]: + model == 6 ? [ 6.4*mm, 18.0*mm, 1.6*mm]: + model == 8 ? [ 8.4*mm, 24.0*mm, 2.0*mm]: + model == 10 ? [ 10.5*mm, 30.0*mm, 2.5*mm]: + model == 12 ? [ 13.0*mm, 37.0*mm, 3.0*mm]: + model == 16 ? [ 17.0*mm, 50.0*mm, 3.0*mm]: + model == 20 ? [ 21.0*mm, 60.0*mm, 4.0*mm]: + model == 24 ? [ 25.0*mm, 72.0*mm, 5.0*mm]: + model == 30 ? [ 33.0*mm, 92.0*mm, 6.0*mm]: + /*model == 36 ?*/ [ 39.0*mm, 110.0*mm, 8.0*mm]; + +function largeWasher_D1(model) = largeWasherDimensions(model)[LARGE_WASHER_D1]; +function largeWasher_D2(model) = largeWasherDimensions(model)[LARGE_WASHER_D2]; +function largeWasher_H(model) = largeWasherDimensions(model)[LARGE_WASHER_H]; + +module large_washer(dia=3) +{ + d1 = largeWasher_D1(dia); + d2 = largeWasher_D2(dia); + h = largeWasher_H(dia); + difference() + { + cylinder(r=d2/2,h=h); + translate([0,0,-h/2]) cylinder(r=d1/2,h=h*2); + } +} + +//examples +//large_washer(); //m3 +//large_washer(5); //m5 \ No newline at end of file diff --git a/Hardware/Development/libs/micro_switch.scad b/Hardware/Development/libs/micro_switch.scad index a4c17ad..1018773 100644 --- a/Hardware/Development/libs/micro_switch.scad +++ b/Hardware/Development/libs/micro_switch.scad @@ -24,7 +24,7 @@ module micro_switch(with_extra_parts=false, exploded=false) { module micro_switch_extras(exploded_distance=0) { screw_size = 2.2; screw_length = 13; - echo("Non-Plastic Parts: 2 x Self tapping screw 2.2 x 13 mm for micro switch"); + echo("Non-Plastic Parts, 2, Self Tapping Screw 2.2 x 13 mm for micro switch"); translate([5.15, 2, 0]) color(Steel) { translate([0, 0, 0.5+6.4+exploded_distance]) rotate([180,0,0]) csk_bolt(screw_size, screw_length); diff --git a/Hardware/Development/libs/rod.scad b/Hardware/Development/libs/rod.scad new file mode 100644 index 0000000..1ada2d9 --- /dev/null +++ b/Hardware/Development/libs/rod.scad @@ -0,0 +1,13 @@ +// Cyclone PCB Factory: a 3D printable CNC machine for PCB manufacture +// Created by Carlosgs (http://carlosgs.es) +// License: Attribution - Share Alike - Creative Commons (http://creativecommons.org/licenses/by-sa/3.0/) + +module rod(len=100, threaded=false, dia=8) { + rotate([90,0,0]) { + if(threaded) + color([0.5,0.5,0.5]) cylinder(r=dia/2,h=len,center=true,$fn=30); + else + color([0.8,0.8,0.8]) cylinder(r=dia/2,h=len,center=true,$fn=30); + } +} + diff --git a/Hardware/Development/main_frame/frame.scad b/Hardware/Development/main_frame/frame.scad index 1116ab7..78ef713 100644 --- a/Hardware/Development/main_frame/frame.scad +++ b/Hardware/Development/main_frame/frame.scad @@ -256,7 +256,7 @@ module frame_extras(with_motor=1, exploded_distance=0) { 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]) { - echo("Non-Plastic Parts: 1 x Nema 17 on motor frame"); + echo("Non-Plastic Parts, 1, Nema 17 for X axis"); translate([0,0,exploded_distance]) motor(Cyclone_Nema17, NemaLengthLong); // --- Motor gear --- @@ -264,7 +264,7 @@ module frame_extras(with_motor=1, exploded_distance=0) { cyclone_motor_gear(with_extra_parts=true, exploded=(exploded_distance!=0)); } - echo("Non-Plastic Parts: 4 x Bolts M3 x 8 mm to attach motor on frame"); + echo("Non-Plastic Parts, 4, Bolt M3 x 8 mm to attach motor on frame"); 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]) { @@ -275,7 +275,7 @@ module frame_extras(with_motor=1, exploded_distance=0) { translate([X_threaded_rod_posX,X_threaded_rod_posY,0]) { rotate([0,0,0]) { - echo("Non-Plastic Parts: 1 x 608 bearing for motor frame"); + echo("Non-Plastic Parts, 1, Bearing 608 for motor frame"); translate([0,0,-1.0-7/2-0.2*exploded_distance]) bearing(model=608); // --- Rod Gear --- @@ -288,7 +288,7 @@ module frame_extras(with_motor=1, exploded_distance=0) { screw_size = 2.9; screw_length = 16; - echo("Non-Plastic Parts: 3 x Self tapping screw 2.9 x 16 mm to attach frame on base"); + echo("Non-Plastic Parts, 3, Self Tapping Screw 2.9 x 16 mm to attach frame on base"); 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(screw_size, screw_length); @@ -315,7 +315,6 @@ module frame_extras(with_motor=1, exploded_distance=0) { // this seems to reduce working area of Y axis if(false) { - echo("Non-Plastic Parts: 1 x Micro switch on Y smooth rod for Y axis"); 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,Y_rod_dist_from_wall]) @@ -325,7 +324,6 @@ module frame_extras(with_motor=1, exploded_distance=0) { // this seems to reduce working area of X axis if(false) { - echo("Non-Plastic Parts: 1 x Micro switch on X smooth rod for X axis"); translate([X_smooth_rods_sep_projected,-smooth_rod_margin,0]) translate([15+0.5*exploded_distance, -8, frame_thickness]) rotate([180,180,-90]) @@ -334,7 +332,7 @@ module frame_extras(with_motor=1, exploded_distance=0) { // this seems to reduce working area of X axis if(false) { - echo("Non-Plastic Parts: 1 x Micro switch on motor frame for X axis"); + echo("Non-Plastic Parts, 1, Micro Switch on motor frame for X axis"); rotate([90, 0, -45]) translate([X_rods_corner_shaft_size/2-19.8,0,-X_rods_corner_shaft_size/2+0.5*exploded_distance]) micro_switch(with_extra_parts=true, exploded=(exploded_distance!=0)); @@ -344,21 +342,20 @@ 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,0]) { - echo("Non-Plastic Parts: 1 x 608 bearing for no motor frame"); + echo("Non-Plastic Parts, 1, Bearing 608 for no motor frame"); translate([0,0,-1.0-7/2-0.2*exploded_distance]) bearing(model=608); - echo("Non-Plastic Parts: 1 x M8 nut to attach threaded rod on no motor frame"); + echo("Non-Plastic Parts, 1, Nut M8 to attach threaded rod on no motor frame"); translate([0,0,-6.5-1.0-7/2-0.6*exploded_distance]) rotate([0,0,0]) color(Steel) flat_nut(8); } } - echo("Non-Plastic Parts: 1 x Micro switch on no motor frame for X axis"); + echo("Non-Plastic Parts, 1, Micro Switch on no motor frame for X axis"); rotate([90, 0, -45]) translate([X_rods_corner_shaft_size/2-19.8,0,-X_rods_corner_shaft_size/2+0.5*exploded_distance]) micro_switch(with_extra_parts=true, exploded=(exploded_distance!=0)); if(true) { - echo("Non-Plastic Parts: 1 x Micro switch on Y smooth rod for Y axis"); 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,Y_rod_dist_from_wall]) @@ -368,7 +365,7 @@ module frame_extras(with_motor=1, exploded_distance=0) { // this seems to reduce working area of Y axis if(false) { - echo("Non-Plastic Parts: 1 x Micro switch on no motor frame for Y axis"); + echo("Non-Plastic Parts, 1, Micro Switch on no motor frame for Y axis"); translate([frame_width-frame_thickness/2+10.8/2-0.5,frame_height-19.8-2,frame_thickness]) translate([0,-Y_rod_height+smooth_rod_margin,0]) translate([0,-smooth_rod_margin-8.5-0.5*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 6b6c5c5..fa2301a 100644 --- a/Hardware/Development/smooth_rod_fix/smooth_rod_fix.scad +++ b/Hardware/Development/smooth_rod_fix/smooth_rod_fix.scad @@ -49,7 +49,7 @@ translate([0,0,part_z/2]) difference() { module smooth_rod_fix_extras(exploded_distance=0) { screw_size = 2.9; screw_length = 16; - echo("Non-Plastic Parts: 2 x Self tapping screw 2.9 x 16 mm for smooth_rod_fix"); + echo("Non-Plastic Parts, 2, Self Tapping Screw 2.9 x 16 mm for smooth_rod_fix"); color(Steel) { translate([0,0,-.2-exploded_distance]) { translate([-smooth_rod_screw_sep,0,0])