Created Y rod idlers
							parent
							
								
									6b6971d040
								
							
						
					
					
						commit
						25a6b7c271
					
				| 
						 | 
				
			
			@ -13,7 +13,7 @@ use <libs/obiscad/obiscad/vector.scad>
 | 
			
		|||
use <libs/obiscad/obiscad/attach.scad>
 | 
			
		||||
use <libs/obiscad/obiscad/bcube.scad>
 | 
			
		||||
use <libs/standard_parts.scad>
 | 
			
		||||
use <libs/hole_for_screw.scad>
 | 
			
		||||
use <libs/helpers.scad>
 | 
			
		||||
 | 
			
		||||
// Functions for animations. Quick and dirty implementation, will need some cleanup
 | 
			
		||||
animated_parts_number = 10;
 | 
			
		||||
| 
						 | 
				
			
			@ -52,7 +52,7 @@ axes_Zthreaded_rodD	= 8+animatePart(4,dist=5);
 | 
			
		|||
// Y axis reference is the Y smooth rod end, BACK of RIGHT FRAME
 | 
			
		||||
// X axis reference is the frontal X smooth rod end, RIGHT FRAME
 | 
			
		||||
// Z axis reference is the Z threaded rod, at the height of the Z nut, and relative to the X reference
 | 
			
		||||
axes_Yreference_height	= 30+animatePart(5);
 | 
			
		||||
axes_Yreference_height	= 42+animatePart(5);
 | 
			
		||||
axes_Xreference_height	= 60+animatePart(6); // relative to Y reference
 | 
			
		||||
axes_Zreference_height	= 45+animatePart(7)+animatePart(9); // relative to X reference
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -235,5 +235,3 @@ translate([0,-axes_Ysmooth_rodLen/2+axes_Ycarriage_pos,axes_Y_threaded_height])
 | 
			
		|||
	Cyclone_Y_carriage();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
hole_for_screw(size=3,length=20,nutDepth=0,nutAddedLen=0,captiveLen=10);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -5,25 +5,31 @@
 | 
			
		|||
// Designed with http://www.openscad.org/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Ycarriage_linearBearingSeparation = 60;
 | 
			
		||||
Ycarriage_linearBearingSeparation = 35;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
module Cyclone_YsubPart_nutHolder() {
 | 
			
		||||
	
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module Cyclone_Y_carriage() {
 | 
			
		||||
	baseHeight = 10;
 | 
			
		||||
	color("lightgreen") {
 | 
			
		||||
		translate([-10,-5,-5])
 | 
			
		||||
			cube([20,15,axes_Y_smoothThreaded_verticalSeparation+10]);
 | 
			
		||||
		translate([0,0,axes_Y_smoothThreaded_verticalSeparation]) {
 | 
			
		||||
			cube([20,15,axes_Y_smoothThreaded_verticalSeparation+10+baseHeight]);
 | 
			
		||||
		translate([0,0,axes_Y_smoothThreaded_verticalSeparation+baseHeight/2]) {
 | 
			
		||||
			translate([axes_Ysmooth_separation/2,Ycarriage_linearBearingSeparation/2])
 | 
			
		||||
				cube([10,10,10], center=true);
 | 
			
		||||
				cube([10,10,10+baseHeight], center=true);
 | 
			
		||||
			translate([-axes_Ysmooth_separation/2,Ycarriage_linearBearingSeparation/2])
 | 
			
		||||
				cube([10,10,10], center=true);
 | 
			
		||||
				cube([10,10,10+baseHeight], center=true);
 | 
			
		||||
			translate([-axes_Ysmooth_separation/2,-Ycarriage_linearBearingSeparation/2])
 | 
			
		||||
				cube([10,10,10], center=true);
 | 
			
		||||
				cube([10,10,10+baseHeight], center=true);
 | 
			
		||||
			translate([axes_Ysmooth_separation/2,-Ycarriage_linearBearingSeparation/2])
 | 
			
		||||
				cube([10,10,10], center=true);
 | 
			
		||||
				cube([10,10,10+baseHeight], center=true);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	translate([0,0,8+5+axes_Y_smoothThreaded_verticalSeparation])
 | 
			
		||||
		beveledBase(size=[axes_Ysmooth_separation+50,Ycarriage_linearBearingSeparation+50,8], radius=3, res=15);
 | 
			
		||||
	translate([0,0,8+5+axes_Y_smoothThreaded_verticalSeparation+baseHeight])
 | 
			
		||||
		beveledBase(size=[axes_Ysmooth_separation+50,Ycarriage_linearBearingSeparation+100,8], radius=3, res=15);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -9,8 +9,12 @@ module mirrorOrNot(mirrorPart=false, axes=[-1,1,1]) {
 | 
			
		|||
	else children();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
module Cyclone_Y_frontFrame() {
 | 
			
		||||
	color("lightred")
 | 
			
		||||
	color("red")
 | 
			
		||||
		translate([-10,0,-axes_Y_threaded_height])
 | 
			
		||||
			cube([20,10,axes_Y_threaded_height+5]);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -21,14 +25,84 @@ module Cyclone_Y_backFrame() {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
module Cyclone_logo(sizemm = 30, thickness = 10, mirrorLogo = false) {
 | 
			
		||||
	dxf_logo_size = 50;
 | 
			
		||||
	scale_factor = sizemm/dxf_logo_size;
 | 
			
		||||
	if(mirrorLogo)
 | 
			
		||||
		mirror([ 1, 0, 0 ]) linear_extrude(height=thickness) scale(scale_factor) import("dxf/CycloneLogo.dxf", layer="logo");
 | 
			
		||||
	else
 | 
			
		||||
		linear_extrude(height=thickness) scale(scale_factor) import("dxf/CycloneLogo.dxf");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module Cyclone_Y_rightSmoothRodIdler(mirrorLogo = false) {
 | 
			
		||||
	color("lightcyan")
 | 
			
		||||
		translate([-5,0,-axes_Yreference_height]) {
 | 
			
		||||
			cube([20,10,axes_Yreference_height+5]);
 | 
			
		||||
	holderThickness = 5;
 | 
			
		||||
	holderOuterRadius = holderThickness+axes_Ysmooth_rodD/2;
 | 
			
		||||
	
 | 
			
		||||
	screwSize = 3; // M3, M4, etc (integers only)
 | 
			
		||||
	
 | 
			
		||||
	dimX = holderOuterRadius*2;
 | 
			
		||||
	dimY = 10+screwSize*2;
 | 
			
		||||
	dimZ = axes_Yreference_height;
 | 
			
		||||
	
 | 
			
		||||
	slotHeight = 3;
 | 
			
		||||
	screwLength = holderOuterRadius*2;
 | 
			
		||||
	
 | 
			
		||||
	logoDepth = dimY/4;
 | 
			
		||||
	
 | 
			
		||||
	
 | 
			
		||||
	footSeparation = screwSize*2;
 | 
			
		||||
	footThickness = 10;
 | 
			
		||||
	
 | 
			
		||||
	color("lightcyan") {
 | 
			
		||||
		difference() {
 | 
			
		||||
			union() {
 | 
			
		||||
				translate([0,0,-axes_Yreference_height])
 | 
			
		||||
					cube([dimX,dimY,dimZ+holderThickness+axes_Ysmooth_rodD/2]);
 | 
			
		||||
				translate([-holderOuterRadius,0,-axes_Yreference_height])
 | 
			
		||||
					cube([dimX,dimY,dimZ]);
 | 
			
		||||
				rotate([-90,0,0]) cylinder(r=holderOuterRadius, h=dimY);
 | 
			
		||||
				translate([0,dimY/2,-axes_Yreference_height])
 | 
			
		||||
					hull() {
 | 
			
		||||
						translate([-holderOuterRadius-footSeparation,0,0])
 | 
			
		||||
							cylinder(r=dimY/2,h=footThickness);
 | 
			
		||||
						translate([holderOuterRadius*2+footSeparation,0,0])
 | 
			
		||||
							cylinder(r=dimY/2,h=footThickness);
 | 
			
		||||
						translate([holderOuterRadius/2,dimY/2+footSeparation,0])
 | 
			
		||||
							cylinder(r=dimY/2,h=footThickness);
 | 
			
		||||
					}
 | 
			
		||||
			}
 | 
			
		||||
			standard_rod(diam=axes_Ysmooth_rodD, length=dimY*4, threaded=false, renderPart=true, center=true);
 | 
			
		||||
			translate([2.5+holderOuterRadius,dimY/2,holderOuterRadius])
 | 
			
		||||
				rotate([0,90,0])
 | 
			
		||||
						rotate([0,0,90])
 | 
			
		||||
							hole_for_screw(size=screwSize,length=screwLength+10,nutDepth=10,nutAddedLen=0,captiveLen=10);
 | 
			
		||||
			translate([dimX/2,dimY/2,0])
 | 
			
		||||
				cube([dimX+1,dimY+1,slotHeight],center=true);
 | 
			
		||||
			translate([(dimX-holderOuterRadius)/2,-0.1,-(dimZ+axes_Ysmooth_rodD/2)/2])
 | 
			
		||||
				scale([1,-1,1])
 | 
			
		||||
					rotate([90,0,0])
 | 
			
		||||
						Cyclone_logo(sizemm = min(dimX+holderOuterRadius-5,dimZ-axes_Ysmooth_rodD/2-5), thickness = logoDepth, mirrorLogo = mirrorLogo);
 | 
			
		||||
			translate([0,dimY/2,-axes_Yreference_height+footThickness]) {
 | 
			
		||||
				translate([-holderOuterRadius-footSeparation,0,0])
 | 
			
		||||
					rotate([0,90,0])
 | 
			
		||||
						rotate([0,0,90])
 | 
			
		||||
							hole_for_screw(size=screwSize,length=footThickness*2,nutDepth=0,nutAddedLen=0,captiveLen=0);
 | 
			
		||||
				translate([holderOuterRadius*2+footSeparation,0,0])
 | 
			
		||||
					rotate([0,90,0])
 | 
			
		||||
						rotate([0,0,90])
 | 
			
		||||
							hole_for_screw(size=screwSize,length=footThickness*2,nutDepth=0,nutAddedLen=0,captiveLen=0);
 | 
			
		||||
				translate([holderOuterRadius/2,dimY/2+footSeparation,0])
 | 
			
		||||
					rotate([0,90,0])
 | 
			
		||||
						rotate([0,0,90])
 | 
			
		||||
							hole_for_screw(size=screwSize,length=footThickness*2,nutDepth=0,nutAddedLen=0,captiveLen=0);
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	translate([0,-10,0]) rotate([90,0,0]) linear_extrude(height=10, center = true) {
 | 
			
		||||
		if(mirrorLogo) scale([-1,1]) import("dxf/CycloneLogo.dxf");
 | 
			
		||||
		else import("dxf/CycloneLogo.dxf");
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -7,16 +7,9 @@
 | 
			
		|||
include <MCAD/nuts_and_bolts.scad>
 | 
			
		||||
 | 
			
		||||
module hole_for_screw(size=3,length=20,nutDepth=5,nutAddedLen=0,captiveLen=0,tolerance=0.5) {
 | 
			
		||||
	*translate([0,-length/2+nutDepth,0])
 | 
			
		||||
		rotate([90,0,0])
 | 
			
		||||
		hull() {
 | 
			
		||||
		translate([0,0,nutDepth])
 | 
			
		||||
			scale([1,1,0.01])
 | 
			
		||||
			nutHole(size=size, tolerance=tolerance, proj=-1);
 | 
			
		||||
		scale([1,1,0.01]) nutHole(size=size, tolerance=tolerance, proj=-1);
 | 
			
		||||
		}
 | 
			
		||||
	radius = METRIC_NUT_AC_WIDTHS[size]/2+tolerance;
 | 
			
		||||
	height = METRIC_NUT_THICKNESS[size]+tolerance;
 | 
			
		||||
	translate([0,-length/2,0]) {
 | 
			
		||||
	translate([0,-length/2+height+nutAddedLen+nutDepth-0.01,0])
 | 
			
		||||
		scale([1,(height+nutAddedLen)/height,1])
 | 
			
		||||
			rotate([90,0,0])
 | 
			
		||||
| 
						 | 
				
			
			@ -27,7 +20,8 @@ module hole_for_screw(size=3,length=20,nutDepth=5,nutAddedLen=0,captiveLen=0,tol
 | 
			
		|||
				}
 | 
			
		||||
	translate([0,length/2-2.6,0])
 | 
			
		||||
		rotate([90,0,0])
 | 
			
		||||
			render() boltHole(size=size, length=length-2.6+0.5, tolerance=tolerance-0.1, proj=-1);
 | 
			
		||||
			render() boltHole(size=size, length=length-2.6+0.5, tolerance=tolerance, proj=-1);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
hole_for_screw(size=3,length=20,nutDepth=0,nutAddedLen=0,captiveLen=10);
 | 
			
		||||
| 
						 | 
				
			
			@ -8,19 +8,19 @@ use <obiscad/obiscad/bcube.scad>
 | 
			
		|||
 | 
			
		||||
$render_standard_parts = false;
 | 
			
		||||
 | 
			
		||||
module renderStandardPart() {
 | 
			
		||||
	if($render_standard_parts) children();
 | 
			
		||||
module renderStandardPart(renderPart) {
 | 
			
		||||
	if(renderPart) children();
 | 
			
		||||
	else %children();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module standard_paperSheet_A4(t=0.05) {
 | 
			
		||||
	renderStandardPart()
 | 
			
		||||
module standard_paperSheet_A4(t=0.05, renderPart=false) {
 | 
			
		||||
	renderStandardPart(renderPart)
 | 
			
		||||
		translate([0,0,t/2])
 | 
			
		||||
			color("white") cube([297,210,t], center=true);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module standard_rod(diam=8, length=10, threaded=true, center=false) {
 | 
			
		||||
	renderStandardPart()
 | 
			
		||||
module standard_rod(diam=8, length=10, threaded=true, center=false, renderPart=false) {
 | 
			
		||||
	renderStandardPart(renderPart)
 | 
			
		||||
		if(threaded) {
 | 
			
		||||
			color("black") rotate([-90,0,0]) cylinder(r=diam/2, h=length, center=center);
 | 
			
		||||
		} else {
 | 
			
		||||
| 
						 | 
				
			
			@ -28,16 +28,16 @@ module standard_rod(diam=8, length=10, threaded=true, center=false) {
 | 
			
		|||
		}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module rubberFoot(diam=40, thickness=8) {
 | 
			
		||||
	renderStandardPart()
 | 
			
		||||
module rubberFoot(diam=40, thickness=8, renderPart=false) {
 | 
			
		||||
	renderStandardPart(renderPart)
 | 
			
		||||
		color("black")
 | 
			
		||||
			translate([0,0,-thickness])
 | 
			
		||||
				cylinder(r=diam/2, h=thickness);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
module beveledBase(size=[100,200,10], radius=10, res=15) {
 | 
			
		||||
	renderStandardPart()
 | 
			
		||||
module beveledBase(size=[100,200,10], radius=10, res=15, renderPart=false) {
 | 
			
		||||
	renderStandardPart(renderPart)
 | 
			
		||||
		color("brown")
 | 
			
		||||
			translate([0,0,-size.z/2])
 | 
			
		||||
				bcube(size, cr=radius, cres=res);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
		Loading…
	
		Reference in New Issue