/* Ball Caster modificado*/

DiametroBola =16.5;
DiametroTaladros = 3;
DiametroCabeza =5.5;		/*Diámetro de la cabeza del tornillo*/
EspesorParedes = 2.5;
AnchoRanura = 5;
EspesorBase = 3;

AnchoBase = DiametroBola+EspesorParedes*2;
LargoBase = DiametroBola+EspesorParedes*2+DiametroCabeza;  /*Distancia entre taladros*/


difference(){
	Principal();
	Hueco();
	Agujeros();
}

module Principal()
{
	union()
	{
		hull()
		{
			translate([LargoBase/2,0,0])
				cylinder(	h=EspesorBase, 
						r=DiametroTaladros/2+EspesorParedes,
						$fn=40);
			translate([-LargoBase/2,0,0])
				cylinder(	h=EspesorBase,
						r= DiametroTaladros/2+EspesorParedes,
						$fn=40);
		}
		cylinder(h=EspesorBase+DiametroBola*0.7, r=AnchoBase/2, $fn=50);
	}

}

module Hueco()
{
	translate([0,0,DiametroBola/2+EspesorBase]) sphere(DiametroBola/2, $fn=50);
	translate([-LargoBase/2,-AnchoRanura/2,EspesorBase]) cube([LargoBase,AnchoRanura,DiametroBola]);
	translate([-LargoBase/2,0,EspesorBase+DiametroBola*0.6])
		rotate([0,90])
			cylinder(h=LargoBase,r=DiametroBola*0.3,$fn=6);
	//translate([0,0,EspesorBase]) cylinder(h=DiametroBola/4, r=DiametroBola/2, $fn=40);
	translate([0,0,EspesorBase]) cylinder(h=DiametroBola, r1=DiametroBola/2,r2=0, $fn=40);
}

module Agujeros()
{
	translate([LargoBase/2,0,-1])
		cylinder(h=EspesorBase+2, r=DiametroTaladros/2, $fn=30);
	translate([-LargoBase/2,0,-1])
		cylinder(h=EspesorBase+2, r=DiametroTaladros/2, $fn=30);
}