// Droid stand // General th = 3; // Part thickness fn = 64; // Facets // Droid - rough dimensions dth = 11; // Droid, thickness dw = 70; // Droid, width dl = 131; // Droid, length // Speaker dimensions spth = dth+2; // Speaker thickness spw = 3; // Speaker width spl = 12; // Speaker length sr = 3; // Speaker radius scl = 16-sr; // Screen length offset scw = 9-sr; // Screen width offset // Stand // Cut = 17 sh = 20; // Stand, height scut = 17; // sw = scut+th; // Stand, width sl = 60; // Stand, length stand(); module stand() { render() difference() { union() { // Overall, describe the stand translate([6,-8,0]) difference() { scale([1.19,1.5,2]) sphere(r=21, $fn=fn); translate([0,0,-100/2]) cube(100, center=true); } rotate([0,20,0]) translate([0,0,10+spl/2]) { // Sound Tube! translate([0,7,0]) rotate([0,-90,0]) cylinder(r1=spl/2+sr+th, h=(spl/2+sr+2)*2-3, r2=(spl/2+sr)*2+th, $fn=fn); } } // translate([0,0,0.1]) render() droid(20); } } module droid(tilt) { rotate([0,tilt,0]) { translate([-dth/2,-dl/2,dw/2]) { // Main Droid cube([dth, dl, dw], center=true); translate([-(dth+50)/2,0,0]) cube([dth+50, dl-scl*2, dw-scw*2], center=true); // Speaker - commented out because this was really just a guide * translate([0,dl/2-3/2-6.5,12/2-dw/2+10]) render() minkowski() { cube([spth,spw, spl], center=true); sphere(r=sr, center=true, $fn=fn); } } translate([0,0,10+spl/2]) { // Circular Tube cylinder(r=spl/2+sr+7, h=(spl/2+sr)*2, center=true, $fn=fn); // Sound Tube! translate([0,7,0]) rotate([0,-90,0]) cylinder(r1=spl/2+sr, h=(spl/2+sr+2)*2+1, r2=(spl/2+sr)*2, $fn=fn); } } }