// Glider Cube with Stand // © 2022 by Peter Ludikovsky // Licensed under CC BY-SA 4.0 // http://creativecommons.org/licenses/by-sa/4.0/ // Pin Connectors V2 by tbuser // https://www.thingiverse.com/thing:10541 use // What to print part="both"; //[cube:Glider Cube,stand:Stand,both:Cube and Stand] // Size sans rounded edges size=100; // [30:1:150] // Inset depth depth=5; // [1:.5:5] // Border width around the inset border=6; // [1:1:6] // Extruder size or pixel size of LCD filament=.1; elementsize=(size-border)/4; elementdistance=(size-border)/28; $fa= $preview ? 6 : 2; $fs= $preview ? .4/2 : filament/2; module glidercube(){ translate([0,0,(size/2)+(size/30)]) difference(){ union(){ difference(){ minkowski(){ cube([size,size,size],center=true); sphere(d=(size/15)); } translate([0,-size/2-(size/15),0]) cube([size-border,2*depth+(size/15),size-border],center=true); translate([0,size/2+(size/15),0]) cube([size-border,2*depth+(size/15),size-border],center=true); translate([-size/2-(size/15),0,0]) cube([2*depth+(size/15),size-border,size-border],center=true); translate([size/2+(size/15),0,0]) cube([2*depth+(size/15),size-border,size-border],center=true); } translate([0, -size/2+depth-(size/30), (elementsize+elementdistance)]) cube([elementsize,depth*2,elementsize], center=true); translate([(elementsize+elementdistance), -size/2+depth-(size/30), 0]) cube([elementsize,depth*2,elementsize], center=true); translate([-(elementsize+elementdistance), -size/2+depth-(size/30), -(elementsize+elementdistance)]) cube([elementsize,depth*2,elementsize], center=true); translate([0, -size/2+depth-(size/30), -(elementsize+elementdistance)]) cube([elementsize,depth*2,elementsize], center=true); translate([(elementsize+elementdistance), -size/2+depth-(size/30), -(elementsize+elementdistance)]) cube([elementsize,depth*2,elementsize], center=true); translate([size/2-depth+(size/30), (elementsize+elementdistance), (elementsize+elementdistance)]) cube([depth*2,elementsize,elementsize], center=true); translate([size/2-depth+(size/30), -(elementsize+elementdistance), (elementsize+elementdistance)]) cube([depth*2,elementsize,elementsize], center=true); translate([size/2-depth+(size/30), 0, 0]) cube([depth*2,elementsize,elementsize], center=true); translate([size/2-depth+(size/30), (elementsize+elementdistance), 0]) cube([depth*2,elementsize,elementsize], center=true); translate([size/2-depth+(size/30), 0, -(elementsize+elementdistance)]) cube([depth*2,elementsize,elementsize], center=true); translate([-(elementsize+elementdistance), size/2-depth+(size/30), (elementsize+elementdistance)]) cube([elementsize,depth*2,elementsize], center=true); translate([(elementsize+elementdistance), size/2-depth+(size/30), 0]) cube([elementsize,depth*2,elementsize], center=true); translate([-(elementsize+elementdistance), size/2-depth+(size/30), 0]) cube([elementsize,depth*2,elementsize], center=true); translate([0, size/2-depth+(size/30), -(elementsize+elementdistance)]) cube([elementsize,depth*2,elementsize], center=true); translate([-(elementsize+elementdistance), size/2-depth+(size/30), -(elementsize+elementdistance)]) cube([elementsize,depth*2,elementsize], center=true); translate([-size/2+depth-(size/30), (elementsize+elementdistance), (elementsize+elementdistance)]) cube([depth*2,elementsize,elementsize], center=true); translate([-size/2+depth-(size/30), 0, 0]) cube([depth*2,elementsize,elementsize], center=true); translate([-size/2+depth-(size/30), -(elementsize+elementdistance), 0]) cube([depth*2,elementsize,elementsize], center=true); translate([-size/2+depth-(size/30), (elementsize+elementdistance), -(elementsize+elementdistance)]) cube([depth*2,elementsize,elementsize], center=true); translate([-size/2+depth-(size/30), 0, -(elementsize+elementdistance)]) cube([depth*2,elementsize,elementsize], center=true); } translate([0,0,-size/2-(size/30)]) pinhole(h=size/3, r=4*size/30, lh=size/10, lt=size/30, tight=false); } } module stand(){ union(){ rotate_extrude() difference(){ square([size/2,size/3]); translate([size/2+7*size/60,size/2]) circle(size/2); } translate([0,0,size/3]) pintack(h=size/3, r=4*size/30, lh=size/10, lt=size/30,bh=0,br=0); } } if(part=="cube"){ glidercube(); }else if(part=="stand"){ stand(); } else { translate([-size/1.5,0,0]) glidercube(); translate([size/1.5,0,0]) stand(); }