// allviews pyramide etoile etoileImprimable p2-top p2-bottom p2-assemblage pyramideCoupe include module bug(){ translate([0,0,-3]) union(){ n=10; for(i=[1:n]){ rotate([0,30,i*360/n]) translate([-1,0,0]) cube([10,10,10]); } } } module pyramide2(inverse){ difference(){ intersection(){ translate([-100,-100,0]) cube([200,200,10]); if (inverse){ rotate([180,0,0]) bug(); }else{ bug(); } } translate([0,0,-1]) cylinder(r=3,h=20,$fn=80); } } module pyramide() { scale([1,1,3]) { difference() { translate([0,0,-3]) { rotate([-45,-35.27,0]) { translate([-5,-5,-5]) { cube([10,10,10]); } } } translate([-50,-50,-100]) { cube([100,100,100]); } } } } module pyramideCoupe() { scale([1,1,2]) intersection() { translate([0,0,2]) difference() { translate([-5,-5,-5]) cube([10,10,10]); union() { n=4; for(i=[1:n]) { rotate([0,0,360/n*i]) translate([5,0,5]) rotate([0,45,0]) translate([-5,-5,-5]) cube([10,10,10]); } } } translate([-5,-5,0]) cube([10,10,10]); } } module etoile() { len=0; n=4; for(i=[1:n]) { rotate([0,0,360/n*i]) translate([0,-len,0]) rotate([90,0,0]) pyramideCoupe(); } translate([0,0,len]) pyramideCoupe(); translate([0,0,-len]) rotate([180,0,0]) pyramideCoupe(); translate([-len,-len,-len]) cube([len,len,len]); } module etoileImprimable() { scale([2,2,2]) difference() { translate([0,0,0]) intersection() { etoile(); translate([-10,-10,0]) cube([20,20,20]); } translate([0,6,-1]) cylinder(r=1,h=10,$fn=40); } // scale([2,2,2]) difference() // { // // translate([-15,0,0]) intersection() // { // etoile(); // translate([-10,-10,0]) cube([20,20,20]); // } // translate([-15,6,-1]) cylinder(r=1,h=10,$fn=40); // } } module main_view(view){ if (view=="pyramide"){ pyramide(); }else if (view=="p2-top"){ pyramide2(false); }else if (view=="p2-bottom"){ pyramide2(true); }else if (view=="p2-assemblage"){ pyramide2(false); translate([0,0,-1]) rotate([180,0,0]) pyramide2(true); } else if (view=="pyramideCoupe") { pyramideCoupe(); } else if (view=="etoile") { etoile(); } else if (view=="etoileImprimable") { etoileImprimable(); } }