Ceci est une ancienne révision du document !
Le Super Générateur de Support à Machins est un générateur
/*
Super générateur de support à machins
CC-BY-SA 2.0 Belgique - Marc Vanlindt (marc@vanlindt.be)
---------------------------------------------
Carte de visite : 85*55
Magazine : 210*297
*/
// ---------------------------------------------
Vue ="3D";//[2D,3D]
Ecart_des_bord =0;//[0:20]
/*[ Forme générale ]*/
//Epaisseur du matériau
Epaisseur =4.5;
//Ecart pour faciliter l'insertion
Ecart =0.2;
Largeur = 90 ;
Hauteur_arriere = 45 ;
Hauteur_avant = 15 ;
Profondeur = 30 ;
/*[ Inclinaisons ]*/
Inclinaison_avant = 10;// [-90:90]
Inclinaison_arriere = 10;// [0:90]
Support=true;
/*[ Côtés ]*/
Forme ="2";//[1,2]
Objet ="Carré";//[Cercle, Carré]
Modif_taille_objet =1;
Qualite_si_cercle =8;
Arrondir =20;
Epaissir =0;
Qualite_arrondi =32;
// ---------------------------------------------
if(Vue=="3D")
{
vue3D();
}
if(Vue=="2D")
{
vue2D();
}
module vue2D()
{
translate([-Epaisseur-Epaissir-1,0])
cote();
translate([Epaisseur+Epaissir+1,0])
mirror() cote();
translate([0,Profondeur+Epaisseur+Epaissir+Profondeur+Profondeur])
bas();
translate([0,Profondeur+Epaisseur+Epaissir+Profondeur+Profondeur/2+Hauteur_avant/2+5+Profondeur])
avant();
translate([0,Profondeur+Epaisseur+Epaissir+Profondeur+Profondeur/2+Hauteur_avant+5+Hauteur_arriere/2+5+Profondeur])
arriere();
}
module cote()
{
difference()
{
if(Forme=="1"){cote1();}
if(Forme=="2"){cote2();}
cote_devant2();
cote_haut2();
cote_bas2();
}
}
// -------------------------------------------------
module cote2()
{
offset(Epaissir,$fn=Qualite_arrondi)
offset(-Arrondir,$fn=Qualite_arrondi)
offset(Arrondir,$fn=Qualite_arrondi)
chull(){
translate([-Epaisseur,-Profondeur/2])
rotate([0,0,90+Inclinaison_avant])
translate([-Epaisseur/2,Epaisseur/2])
translate([0,Hauteur_avant-Epaisseur,0])
offset(Modif_taille_objet)
monobjet2();
translate([-Epaisseur,-Profondeur/2])
rotate([0,0,90+Inclinaison_avant])
translate([-Epaisseur/2,Epaisseur/2])
offset(Modif_taille_objet)
monobjet2();
translate([-Epaisseur/2,-Profondeur/2+Epaisseur/2])
offset(Modif_taille_objet)
monobjet2();
translate([-Epaisseur/2,Profondeur/2-Epaisseur/2])
offset(Modif_taille_objet)
monobjet2();
translate([-Epaisseur,Profondeur/2])
rotate([0,0,180-Inclinaison_arriere])
translate([Epaisseur/2,-Epaisseur/2])
offset(Modif_taille_objet)
monobjet2();
translate([-Epaisseur,Profondeur/2])
rotate([0,0,180-Inclinaison_arriere])
translate([Epaisseur/2,-Epaisseur/2])
translate([Hauteur_arriere-Epaisseur,0])
offset(Modif_taille_objet)
monobjet2();
translate([-Epaisseur,Profondeur/2])
rotate([0,0,180-Inclinaison_arriere])
translate([Epaisseur/2,-Epaisseur/2])
offset(Modif_taille_objet)
monobjet2();
translate([-Epaisseur,Profondeur/2])
rotate([0,0,180-Inclinaison_arriere])
translate([Epaisseur/2,-Epaisseur/2])
translate([Hauteur_arriere-Epaisseur,0])
offset(Modif_taille_objet)
monobjet2();
}
}
// -------------------------------------------------
module cote1()
{
offset(Epaissir,$fn=Qualite_arrondi)
offset(-Arrondir,$fn=Qualite_arrondi)
offset(Arrondir,$fn=Qualite_arrondi)
{
hull()
{
translate([-Epaisseur/2,Profondeur/2+Epaisseur/2-sin(Inclinaison_arriere)*Epaisseur/2])
monobjet();
if(Support==true)
{
translate([-Epaisseur/2,Profondeur/2+Epaisseur/2+sin(Inclinaison_arriere)*Hauteur_arriere-sin(Inclinaison_arriere)*Epaisseur/2])
monobjet();
}
translate([-Epaisseur/2,Profondeur/2+Epaisseur/2-sin(Inclinaison_arriere)*Epaisseur/2])
rotate([0,0,-180-Inclinaison_arriere])
translate([Hauteur_arriere,0,0])
monobjet();
}
hull(){
translate([-Epaisseur/2,-Profondeur/2-Epaisseur/2+sin(Inclinaison_avant)*Epaisseur/2])
monobjet();
translate([-Epaisseur/2,Profondeur/2+Epaisseur/2-sin(Inclinaison_arriere)*Epaisseur/2])
monobjet();
}
hull(){
translate([-Epaisseur/2,-Profondeur/2-Epaisseur/2+sin(Inclinaison_avant)*Epaisseur/2])
monobjet();
translate([-Epaisseur/2,-Profondeur/2-Epaisseur/2+sin(Inclinaison_avant)*Epaisseur/2])
rotate([0,0,-180+Inclinaison_avant])
translate([Hauteur_avant,0,0])
monobjet();
}
}
}
module monobjet()
{
if(Objet=="Cercle")
{
circle(Epaisseur/2+Modif_taille_objet/2,$fn=Qualite_si_cercle);
}
if(Objet=="Carré")
{
square(Epaisseur+Modif_taille_objet,center=true);
}
}
module monobjet2()
{
if(Objet=="Cercle")
{
circle(Epaisseur/2,$fn=Qualite_si_cercle);
}
if(Objet=="Carré")
{
square(Epaisseur,center=true);
}
}
module cote_haut2()
{
translate([-Epaisseur,Profondeur/2,0])
rotate([0,0,90-Inclinaison_arriere])
translate([Epaisseur/2,Hauteur_arriere/2])
square([Epaisseur+Ecart,Hauteur_arriere/2+Ecart],center=true);
}
module cote_devant2()
{
translate([-Epaisseur,-Profondeur/2,0])
rotate([0,0,90+Inclinaison_avant])
translate([-Epaisseur/2,Hauteur_avant/2])
square([Epaisseur+Ecart,Hauteur_avant/2+Ecart],center=true);
}
module cote_bas2()
{
translate([-Epaisseur/2,0])
square([Epaisseur+Ecart,Profondeur/2+Ecart],center=true);
}
module cote_haut()
{
translate([-Epaisseur,Profondeur/2,0])
rotate([0,0,90-Inclinaison_arriere])
translate([Epaisseur/2,Hauteur_arriere/2])
square([Epaisseur,Hauteur_arriere],center=true);
}
module cote_devant()
{
translate([-Epaisseur,-Profondeur/2,0])
rotate([0,0,90+Inclinaison_avant])
translate([-Epaisseur/2,Hauteur_avant/2])
square([Epaisseur,Hauteur_avant],center=true);
}
module cote_bas()
{
translate([-Epaisseur/2,0])
square([Epaisseur,Profondeur],center=true);
}
module vue3D(){
translate([0,Profondeur/2,Epaisseur])
rotate([-90-Inclinaison_arriere,0,0])
translate([0,-Hauteur_arriere/2,0])
linear_extrude(Epaisseur)
arriere();
translate([0,-Profondeur/2,Epaisseur])
rotate([90+Inclinaison_avant,0,0])
translate([0,Hauteur_avant/2,0])
linear_extrude(Epaisseur)
avant();
linear_extrude(Epaisseur)
bas();
color("red")
translate([Largeur/2+Ecart_des_bord,0,0])
rotate([90,90,90])
linear_extrude(Epaisseur)
cote();
color("green")
translate([-Largeur/2-Epaisseur-Ecart_des_bord,0,0])
rotate([90,90,90])
linear_extrude(Epaisseur)
cote();
}
module bas()
{
square([Largeur, Profondeur],center=true);
square([Largeur+Epaisseur*2, Profondeur/2],center=true);
}
module avant()
{
square([Largeur, Hauteur_avant],center=true);
square([Largeur+Epaisseur*2, Hauteur_avant/2],center=true);
}
module arriere()
{
square([Largeur, Hauteur_arriere],center=true);
square([Largeur+Epaisseur*2, Hauteur_arriere/2],center=true);
}
module chull(m){
for(i=[0:$children-2]){
hull(){
children(m==true?0:i);
children(i+1);
}
}
}