Merge pull request #9 from glenchung/master

Latest assembly renders
pull/10/head
carlosgs 2013-10-23 13:18:30 -07:00
commit 4409c668dc
22 changed files with 301 additions and 91 deletions

View File

@ -11,6 +11,8 @@ use <../Y_axis/linear_bearing_holder.scad>
use <../Y_axis/Y_nut_holder.scad> use <../Y_axis/Y_nut_holder.scad>
use <../XZ_axis/X_carriage.scad> use <../XZ_axis/X_carriage.scad>
use <../XZ_axis/Z_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; X_axis_sep = 210;
Y_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_Threaded_Rod_Length = Y_threaded_rod_length+38;
Y_Final_Smooth_Rod_Length = Y_axis_sep+8; Y_Final_Smooth_Rod_Length = Y_axis_sep+8;
Y_threaded_rod_offset = 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; X_Wood_Base = X_axis_sep+100;
Y_Wood_Base = Y_axis_sep+30; Y_Wood_Base = Y_axis_sep+30;
@ -50,9 +54,9 @@ Z_PCB_BOARD = 1.5;
//Travel (164 x 101 x 25) //Travel (164 x 101 x 25)
X_Travel = 0; //0~164 X_Travel = 0; //0~164
Y_Travel = 0; //0~101 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; Display_Extra_Parts = true;
//To enable exploded drawing view //To enable exploded drawing view
@ -60,6 +64,9 @@ Exploded_Drawing = false;
X_rod_sep_real = X_smooth_rods_sep_projected+smooth_rod_margin; 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) { module frame_right(with_extra_parts = false, exploded=false) {
if(with_extra_parts) 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); 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() { module Y_nut_holder() {
color([0.5,0.5,0]) if(Display_Extra_Parts)
nut_holder_positioned(); 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() { module cnc_workbed() {
@ -128,10 +138,17 @@ module cnc_workbed() {
cube([workbed_X,workbed_Y,workbed_thickness],center=true); cube([workbed_X,workbed_Y,workbed_thickness],center=true);
cube([workbed_X-1,workbed_Y-1,workbed_thickness+1],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 --- // --- PCB Board ---
translate([0,0,-(workbed_thickness+Z_PCB_BOARD)/2]) echo("Non-Plastic Parts, 1, Double sided PCB ", X_PCB_BOARD, " x ", Y_PCB_BOARD, " x ", Z_PCB_BOARD);
cube([X_PCB_BOARD,Y_PCB_BOARD,Z_PCB_BOARD],center=true); 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() { module X_carriage() {
translate([0,X_rod_sep_real/2,0]) translate([0,X_rod_sep_real/2,0])
rotate([0,0,90]) 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() { module Z_carriage_piece() {
translate([0,0,33+Z_Travel]) translate([0,0,33+Z_Travel])
rotate([0,0,90]) 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) { 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) { module cnc_assembled(Y_offset=0,X_offset=0,Z_offset=0) {
translate([-X_axis_sep/2,-Y_axis_sep/2]) translate([-X_axis_sep/2,-Y_axis_sep/2])
cnc(); cnc();
@ -244,7 +254,7 @@ module cnc_assembled(Y_offset=0,X_offset=0,Z_offset=0) {
// --- Y threaded rod --- // --- Y threaded rod ---
translate([0,6+Y_threaded_rod_offset/2,Y_threaded_rod_height-Y_rod_height]) 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 --- // --- Y smooth rods ---
translate([X_axis_sep/2,0,0]) 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(); Z_carriage_piece();
} }
rotate([0,0,90]) 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]) translate([0,0,X_rod_sep_real])
rotate([0,0,90]) rotate([0,0,90])
rod(X_Final_Smooth_Rod_Length); 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 //rotate([0,0,90]) cnc_base_template(); // So the generated dxf matches inkscape's default orientation
// cnc_workbed_template(); // cnc_workbed_template();
echo("Wood base = ", X_Wood_Base, " x ", Y_Wood_Base, " x ", Z_Wood_Base); echo("Non-Plastic Parts, 1, Machine Base ", X_Wood_Base, " x ", Y_Wood_Base, " x ", Z_Wood_Base);
echo("Work bed = ", workbed_X, " x ", workbed_Y, " x ", workbed_thickness); echo("Non-Plastic Parts, 1, Work Bed ", workbed_X, " x ",workbed_Y, " x ", workbed_thickness);
echo("X smooth rod length = ", X_Final_Smooth_Rod_Length); echo("Non-Plastic Parts, 2, Smooth Rod for X axis, M8 x ", X_Final_Smooth_Rod_Length);
echo("X threaded rod length = ", X_Final_Threaded_Rod_Length); echo("Non-Plastic Parts, 1, Threaded Rod for X axis, M8 x ", X_Final_Threaded_Rod_Length);
echo("Y smooth rod length = ", Y_Final_Smooth_Rod_Length); echo("Non-Plastic Parts, 2, Smooth Rod for Y axis, M8 x ", Y_Final_Smooth_Rod_Length);
echo("Y threaded rod length = ", Y_Final_Threaded_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);

View File

@ -125,7 +125,7 @@ union() difference() {
cyclone_motor_gear_extras(exploded_distance=(exploded?20:0)); cyclone_motor_gear_extras(exploded_distance=(exploded?20:0));
module cyclone_motor_gear_extras(exploded_distance=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]) translate([0,2.5+8+exploded_distance,12-3.5])
rotate([90, 0, 0]) rotate([90, 0, 0])
color(Steel) cylinder(r=1.5, h=8, $fn=30); color(Steel) cylinder(r=1.5, h=8, $fn=30);

View File

@ -104,7 +104,7 @@ difference() {
cyclone_rod_gear_extras(exploded_distance=(exploded?12:0)); cyclone_rod_gear_extras(exploded_distance=(exploded?12:0));
module cyclone_rod_gear_extras(exploded_distance=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,-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); translate([0,0,nut_separation/2+0.8*8+1.0*exploded_distance]) rotate([180,0,0]) color(Steel) flat_nut(8);
} }

View File

@ -2,10 +2,13 @@
// Created by Carlosgs (http://carlosgs.es) // Created by Carlosgs (http://carlosgs.es)
// License: Attribution - Share Alike - Creative Commons (http://creativecommons.org/licenses/by-sa/3.0/) // License: Attribution - Share Alike - Creative Commons (http://creativecommons.org/licenses/by-sa/3.0/)
include <MCAD/metric_fastners.scad>
include <MCAD/materials.scad>
use <../libs/obiscad/bcube.scad> use <../libs/obiscad/bcube.scad>
use <../libs/obiscad/bevel.scad> use <../libs/obiscad/bevel.scad>
use <../libs/build_plate.scad> use <../libs/build_plate.scad>
use <../libs/teardrop.scad> use <../libs/teardrop.scad>
use <../libs/rod.scad>
include <./lm8uu_holder.scad> include <./lm8uu_holder.scad>
@ -40,15 +43,9 @@ lbearing_length = 24;
Z_smooth_rods_sep = 55; Z_smooth_rods_sep = 55;
Z_smooth_rods_len = 140; Z_smooth_rods_len = 140;
Z_threaded_rod_len = 120;
lbearing_holder_length = Z_smooth_rods_sep+M8_rod_diam+5; 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) { module rodHole(len=100,radius=M8_rod_hole_diam/2, truncateMM=1) {
color([0.8,0.8,0.8]) 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; X_nut_screw_diam = X_nut_screw_diam*1.2;
scale([1,1,-1]) rotate([-90,0,0]) scale([1,1,-1]) rotate([-90,0,0])
difference() { difference() {
@ -107,6 +104,17 @@ module X_nut_holder_cover() {
rotate([90,0,0]) rotate([90,0,0])
cylinder(r=X_nut_screw_diam/2,h=40,center=true,$fn=20); 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) { 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 } // 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) { 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); X_carriage(show_printbed, with_extra_parts=with_extra_parts, exploded=exploded);
if(show_Xrods){ if(show_Xrods){
// ---- Rods (for reference) ---- // ---- Rods (for reference) ----
translate([-X_rod_sep_real/2,0,0]) { 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]) { translate([-X_rod_sep_real/2,0,X_rod_sep_real]) {
rod(len=100); rod(len=100);
@ -191,15 +221,13 @@ module X_carriage_assembled(show_printbed = 0, show_Xrods = 0, show_Zrods = 0) {
rod(len=100); rod(len=100);
} }
} }
if(show_Zrods) if(z_smooth_rods_len)
translate([0,0,0]) translate([0,0,0])
rotate([90,0,0]) { rotate([90,0,0]) {
translate([0,Z_threaded_rod_len/2-10,0]) translate([0,z_smooth_rods_len/2-5,Z_smooth_rods_sep/2])
color([0.5,0.5,0.5]) rod(len=Z_threaded_rod_len); rod(len=z_smooth_rods_len);
translate([0,Z_smooth_rods_len/2-5,Z_smooth_rods_sep/2]) translate([0,z_smooth_rods_len/2-5,-Z_smooth_rods_sep/2])
rod(len=Z_smooth_rods_len); 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(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(); X_carriage_print_plate();
//translate([0,20,0]) X_nut_holder_cover(); //translate([0,20,0]) X_nut_holder_cover();

View File

@ -16,6 +16,7 @@ use <../libs/obiscad/bcube.scad>
use <../libs/build_plate.scad> use <../libs/build_plate.scad>
use <../libs/Write/Write.scad> use <../libs/Write/Write.scad>
use <../libs/linear_bearing.scad> use <../libs/linear_bearing.scad>
use <../libs/rod.scad>
use <motor_gear.scad> use <motor_gear.scad>
use <rod_gear.scad> use <rod_gear.scad>
@ -84,7 +85,7 @@ Cyclone_Nema17 = [
[NemaAxleFlatLengthBack, 14*mm] [NemaAxleFlatLengthBack, 14*mm]
]; ];
module dummySpindle() { module dummySpindle(length=0) {
translate([0,0,-length]) { 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-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); 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) { module Z_carriage_extras(top_part=true, exploded_distance=0) {
if(top_part) { 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]) translate([-motor_width/2,0,1-exploded_distance])
rotate([0,180,0]) rotate([0,180,0])
motor(Cyclone_Nema17, NemaLengthLong); 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]) for(i=[-1,1]) for(j=[-1,1])
translate([-motor_width/2,0,0]) translate([-motor_width/2,0,0])
translate([i*motor_screw_distance/2,j*motor_screw_distance/2,2.5+exploded_distance*0.7]) { 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]) rotate([0,0,-90])
cyclone_motor_z_gear(with_extra_parts=true, exploded=(exploded_distance!=0)); 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]) translate([0,0,wall_thickness/2])
bearing(model=608); bearing(model=608);
@ -296,7 +297,7 @@ module Z_carriage_extras(top_part=true, exploded_distance=0) {
rotate([180,0,11]) rotate([180,0,11])
cyclone_rod_z_gear(with_extra_parts=true, exploded=(exploded_distance!=0)); 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]) rotate([0,0,-90]) translate([-wall_height/2,-Z_threaded_pos,0])
translate([wall_height/2,wall_width-4,0]) color(Steel) { translate([wall_height/2,wall_width-4,0]) color(Steel) {
translate([20,8,-0.05-2.5*exploded_distance]) translate([20,8,-0.05-2.5*exploded_distance])
@ -307,9 +308,9 @@ module Z_carriage_extras(top_part=true, exploded_distance=0) {
} }
else 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]) rotate([0,0,-90]) translate([-wall_height/2,-Z_threaded_pos,0])
translate([wall_height/2,wall_width-4,0]) color(Steel) { translate([wall_height/2,wall_width-4,0]) color(Steel) {
translate([20,8,-0.8*5-0.5*exploded_distance]) 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) 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 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]) rotate([0,0,-90])
translate([-wall_height/2,-Z_threaded_pos,0]) { translate([-wall_height/2,-Z_threaded_pos,0]) {
translate([wall_height/2-Z_smooth_rods_sep/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) { if(top_part) {
echo("Non-Plastic Parts: 1 x M3 x 20 mm for Z_carriage part"); echo("Non-Plastic Parts, 1, Bolt 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, Nut M3 for Z_carriage top part");
} }
else { else {
echo("Non-Plastic Parts: 1 x M3 x 20 mm 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 x M3 nut 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]) 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]) { 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); 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, 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); 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);
} }

View File

@ -119,7 +119,7 @@ rotate([180,0,0]) union() difference() {
cyclone_motor_z_gear_extras(exploded_distance = (exploded?24:0)); cyclone_motor_z_gear_extras(exploded_distance = (exploded?24:0));
module cyclone_motor_z_gear_extras(exploded_distance=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); translate([0,-2.5-exploded_distance,-(12-3.5)]) rotate([90, 0, 0]) color(Steel) cylinder(r=1.5, h=8, $fn=30);
} }
} }

View File

@ -103,7 +103,7 @@ difference() {
cyclone_rod_z_gear_extras(exploded_distance = (exploded ?8:0)); cyclone_rod_z_gear_extras(exploded_distance = (exploded ?8:0));
module cyclone_rod_z_gear_extras(exploded_distance=false) { 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+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); translate([0,0,-0.8*8-10/2-exploded_distance]) rotate([0,0,0]) color(Steel) flat_nut(8);
} }

View File

@ -2,6 +2,8 @@
// Created by Carlosgs (http://carlosgs.es) // Created by Carlosgs (http://carlosgs.es)
// License: Attribution - Share Alike - Creative Commons (http://creativecommons.org/licenses/by-sa/3.0/) // License: Attribution - Share Alike - Creative Commons (http://creativecommons.org/licenses/by-sa/3.0/)
include <MCAD/metric_fastners.scad>
include <MCAD/materials.scad>
use <../libs/obiscad/bcube.scad> use <../libs/obiscad/bcube.scad>
use <../libs/build_plate.scad> use <../libs/build_plate.scad>
use <../libs/Write/Write.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() { union() {
difference() { difference() {
nut_holder_no_hole(); nut_holder_no_hole();
@ -101,12 +103,34 @@ module nut_holder() {
translate([-8,-5,0]) translate([-8,-5,0])
text(M8_nut_height-M8_nut_height_margin); text(M8_nut_height-M8_nut_height_margin);
} // End of union } // 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]) rotate([90,0,0])
translate([-(base_width-3.7),0,-wall_thickness/2]) 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 //for display only, doesn't contribute to final object

View File

@ -101,7 +101,7 @@ translate([frame_width-frame_thickness,frame_height,frame_thickness-2])
module Y_rod_idler_extras(exploded_distance=0) { module Y_rod_idler_extras(exploded_distance=0) {
screw_size = 2.9; screw_size = 2.9;
screw_length = 16; 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([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) { rotate([180,0,0]) color(Steel) {
translate([-5,0,0]) translate([-5,0,0])

View File

@ -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)); lm8uu_bearing_holder_extras(exploded_distance=(exploded?1.3*linearBearing_L("LM8UU"):0));
module lm8uu_bearing_holder_extras(exploded_distance=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]) rotate([90,0,90]) translate([0,0,LM8UU_dia/2+2]) rotate([90,0,0])
translate([0,0,exploded_distance]) translate([0,0,exploded_distance])
linearBearing(pos=[0,0,-linearBearing_L("LM8UU")/2], model="LM8UU"); linearBearing(pos=[0,0,-linearBearing_L("LM8UU")/2], model="LM8UU");
screw_size = 3.5; screw_size = 3.5;
screw_length = 13; 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]) 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); color(Steel) csk_bolt(screw_size, screw_length);
} }

View File

@ -111,7 +111,7 @@ module motor_stand_no_base_extras(with_motor=false, exploded_distance=0) {
rotate([0,180,0]) rotate([0,180,0])
translate([0,0,-1+exploded_distance]) translate([0,0,-1+exploded_distance])
motor(Cyclone_Nema17, NemaLengthLong); 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 --- // --- Motor Gear ---
translate([0,0,12+5.5+exploded_distance]) 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]) { translate([motor_width/2,motor_width/2,wall_thickness/2]) {
rotate([0,0,15]) translate([0,axis_distance,2.5-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]) translate([0,0,0.5*exploded_distance])
bearing(model=608); 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]) for(i=[-1,1]) for(j=[-1,1])
translate([motor_width/2,motor_width/2,wall_thickness/2]) 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]) { 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) { if(!with_motor) {
translate([motor_width/2,motor_width/2,wall_thickness/2]) 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) { 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); 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); 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); 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) { module idle_stand_extras(exploded_distance=0) {
screw_size = 2.9; screw_size = 2.9;
screw_length = 16; 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) translate([wall_height,base_width/2+2.5,base_length/1.5]) color(Steel)
rotate([0,90,0]) { rotate([0,90,0]) {
translate([-5,0,-bottom_thickness-.2-exploded_distance]) translate([-5,0,-bottom_thickness-.2-exploded_distance])

View File

@ -34,23 +34,23 @@ difference() {
} }
module end_stop_holder_extras(exploded_distance=0) { 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] ) { 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, 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); 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]) translate([4+3*0.3+exploded_distance, 28-5.15+(10-9.5)/2, 5-2])
rotate([90,0,90]) rotate([90,0,90])
micro_switch(with_extra_parts=true, exploded=(exploded_distance!=0)); 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]) translate([-3*exploded_distance,6,5])
rotate([0,90,0]) rotate([0,90,0])
color(Steel) boltHole(size=3, length=18); 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]) translate([17+0.9*3/2+exploded_distance,6,5])
rotate([0,-90,0]) rotate([0,-90,0])
rotate([0,0,30]) color(Steel) flat_nut(3); rotate([0,0,30]) color(Steel) flat_nut(3);

View File

@ -0,0 +1,52 @@
//Designed by Forgetful_Guy
//From http://www.thingiverse.com/thing:63578
//License: http://creativecommons.org/publicdomain/zero/1.0/
include <MCAD/metric_fastners.scad>
include <MCAD/materials.scad>
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);

View File

@ -0,0 +1,34 @@
//Designed by Forgetful_Guy
//From http://www.thingiverse.com/thing:63578
//License: http://creativecommons.org/publicdomain/zero/1.0/
include <MCAD/nuts_and_bolts.scad>
include <MCAD/materials.scad>
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);

View File

@ -32,7 +32,7 @@
space =1; //extra space between characters in (character widths) space =1; //extra space between characters in (character widths)
rotate=0; // text rotation (clockwise) rotate=0; // text rotation (clockwise)
font = "Letters.dxf"; //default for aditional fonts 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 // write cube defaults

View File

@ -0,0 +1,45 @@
////By Glen Chung, 2013.
//Dual licenced under Creative Commons Attribution-Share Alike 3.0 and LGPL2 or later
include <MCAD/units.scad>
include <MCAD/materials.scad>
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

View File

@ -24,7 +24,7 @@ module micro_switch(with_extra_parts=false, exploded=false) {
module micro_switch_extras(exploded_distance=0) { module micro_switch_extras(exploded_distance=0) {
screw_size = 2.2; screw_size = 2.2;
screw_length = 13; 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([5.15, 2, 0]) color(Steel) {
translate([0, 0, 0.5+6.4+exploded_distance]) translate([0, 0, 0.5+6.4+exploded_distance])
rotate([180,0,0]) csk_bolt(screw_size, screw_length); rotate([180,0,0]) csk_bolt(screw_size, screw_length);

View File

@ -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);
}
}

View File

@ -256,7 +256,7 @@ module frame_extras(with_motor=1, exploded_distance=0) {
translate([X_threaded_rod_posX,X_threaded_rod_posY,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]) { 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]) { 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); translate([0,0,exploded_distance]) motor(Cyclone_Nema17, NemaLengthLong);
// --- Motor gear --- // --- 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)); 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]) for(i=[-1,1]) for(j=[-1,1])
translate([i*motor_screw_distance/2,j*motor_screw_distance/2,0]) translate([i*motor_screw_distance/2,j*motor_screw_distance/2,0])
translate([0,0,-0.4*exploded_distance]) { 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]) { translate([X_threaded_rod_posX,X_threaded_rod_posY,0]) {
rotate([0,0,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); translate([0,0,-1.0-7/2-0.2*exploded_distance]) bearing(model=608);
// --- Rod Gear --- // --- Rod Gear ---
@ -288,7 +288,7 @@ module frame_extras(with_motor=1, exploded_distance=0) {
screw_size = 2.9; screw_size = 2.9;
screw_length = 16; 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) { 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]) translate([-base_screw_distance,0,0]) rotate([180,0,0])
csk_bolt(screw_size, screw_length); 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 // this seems to reduce working area of Y axis
if(false) { 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([frame_width-frame_thickness/2,frame_height,frame_thickness-2])
translate([0,-Y_rod_height+smooth_rod_margin,0]) translate([0,-Y_rod_height+smooth_rod_margin,0])
translate([0,-smooth_rod_margin,Y_rod_dist_from_wall]) 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 // this seems to reduce working area of X axis
if(false) { 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([X_smooth_rods_sep_projected,-smooth_rod_margin,0])
translate([15+0.5*exploded_distance, -8, frame_thickness]) translate([15+0.5*exploded_distance, -8, frame_thickness])
rotate([180,180,-90]) 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 // this seems to reduce working area of X axis
if(false) { 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]) rotate([90, 0, -45])
translate([X_rods_corner_shaft_size/2-19.8,0,-X_rods_corner_shaft_size/2+0.5*exploded_distance]) 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)); 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) { if(!with_motor) {
translate([X_threaded_rod_posX,X_threaded_rod_posY,0]) { translate([X_threaded_rod_posX,X_threaded_rod_posY,0]) {
rotate([0,0,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); 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); 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]) rotate([90, 0, -45])
translate([X_rods_corner_shaft_size/2-19.8,0,-X_rods_corner_shaft_size/2+0.5*exploded_distance]) 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)); micro_switch(with_extra_parts=true, exploded=(exploded_distance!=0));
if(true) { 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([frame_width-frame_thickness/2,frame_height,frame_thickness-2])
translate([0,-Y_rod_height+smooth_rod_margin,0]) translate([0,-Y_rod_height+smooth_rod_margin,0])
translate([0,-smooth_rod_margin,Y_rod_dist_from_wall]) 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 // this seems to reduce working area of Y axis
if(false) { 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([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,-Y_rod_height+smooth_rod_margin,0])
translate([0,-smooth_rod_margin-8.5-0.5*exploded_distance,0]) translate([0,-smooth_rod_margin-8.5-0.5*exploded_distance,0])

View File

@ -49,7 +49,7 @@ translate([0,0,part_z/2]) difference() {
module smooth_rod_fix_extras(exploded_distance=0) { module smooth_rod_fix_extras(exploded_distance=0) {
screw_size = 2.9; screw_size = 2.9;
screw_length = 16; 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) { color(Steel) {
translate([0,0,-.2-exploded_distance]) { translate([0,0,-.2-exploded_distance]) {
translate([-smooth_rod_screw_sep,0,0]) translate([-smooth_rod_screw_sep,0,0])