include //////////////////// //Paramètres réglables: resolution=20; //résolution réglable pour générer le maillage nbtrouj=7; //paramètre pour faire varier le nombre de trous sur l'axe j, valeur doit être impaire! rayoncourbure=10; //rayon de courbure pour arrondir les arêtes,la palette n'est pas agrandie quand on change le rayon //////////////////// module piece(jeu=0){ rotate([90,0,0]) translate([0,0,-10]) cylinder(h=20,r=15+jeu,$fn=resolution); } //////////////////// module palette(){ rotate([+90,0,0]) difference(){ union(){ #minkowski(){ linear_extrude(height = nbtrouj*42+22-2*rayoncourbure, center = true, convexity = 10) //polygon(points=[[0,0],[100,0],[100,50],[0,100]],paths=[[0,1,2,3]]); polygon(points=[[rayoncourbure,rayoncourbure],[100-rayoncourbure,rayoncourbure],[100-rayoncourbure,50-rayoncourbure*0.6],[rayoncourbure,100-rayoncourbure*1.6]],paths=[[0,1,2,3]]); sphere(r=rayoncourbure,$fn=resolution); // ou rotate([90,0,0]) cylinder(r=4,$fn=resolution); } translate([20,20,((nbtrouj*42+22)/2)]) scale([1.2,2.1,1]) linear_extrude(height = 5, center = true, convexity = 10) text("IUT GEII"); } //hull() { translate([0,100,0]) //rotate([0,0,-atan(50/100)]) rotate([0,0,atan2(-50,100)]) //rotate([0,0,atan2(-50,100-14)]) //for (i=[-4:4]){ for (i=[-floor(nbtrouj/2):floor(nbtrouj/2)]){ for (j=[1:2]){ if(((j*9+i)%4)!=0){ translate([j*42-5,0,i*42]){ repere(); #piece(); } } else echo("pas ici"); } } } } } //////////////////// palette();