Outils pour utilisateurs

Outils du site


outilsit:fablab:laser:supportamachins

Ceci est une ancienne révision du document !


Super Générateur de Support à Machins

Le Super Générateur de Support à Machins est un générateur

SupportAMachins.scad
/*
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);
    }
  }
}
outilsit/fablab/laser/supportamachins.1643656070.txt.gz · Dernière modification: 2022/01/31 20:07 de vanlindtmarc