/*
Générateur de support à lampes.
Vanlindt Marc - marc@vanlindt.be - www.vanlindt.be
Inspiré des réalisations de ... (Merci à qui me donnera le nom)
/!\ A l'heure actuelle aucune découpe et lampe na encore été réalisée à l'aide
v0.6.5
-------
0.6.5 :
- offset autour de la lampe
0.6 :
- Mode Ampoule (beta)
0.5 :
- correction erreur des Interieur_mode quand "gauche" est utilisé.
0.4 :
- Ajout de plusieurs "Interieur mode" afin de changer facilement ou de manière personnalisée la rotation de la forme intérieure.
0.3 :
- Calcul correct de la hauteur lorsque angles > à 180°
0.2 :
- ajout variable "Pied" afin d'avoir un pied plat à l'objet.
0.1 :
- ajout informations en 3D et Forme
*/
/* [Mode de visualisation] */
Visualisation = "3D";//[3D,Forme,Sortie DXF,Ampoule]
/* [Forme générale] */
// Nombre de formes
Repetitions = 8;
// Diamètre au centre de la forme
Diametre_interieur = 45;
// Coupure pour avoir un pied plat
Pied = 50;//[0:200]
// La lampe sera positionnée en...
Position_de_la_lampe = "bas";//[bas,haut]
/* [Matériau] */
// En mm
Epaisseur = 5;
// Rouge
R = 208;//[0:255]
// Vert
V = 185;//[0:255]
// Bleu
B = 166;//[0:255]
/* [3D] */
// Affichage d'informations à l'écran et dans la console
Informations_3D = true;
Support =true;
// En mode 3D, les formes principales seront transparentes.
Transparence_formes = false;
// Eloigne certaines formes
Simulation_emboitement = true;
// Valeur de l'éoiglement (en mm.)
Eloignement = 0;//[0:500]
/* [Forme] */
Informations_Forme = true;
// Taille du trait en mode informations
Informations_trait = 5;
/* [Forme principale] */
// Hauteur finale en mm
Taille = 500;//[1:2000]
// En nombre de côtés
Qualite = 64;
// En °
Angle = 90;//[1:360]
// Redimensionnement en largeur (en %)
Redimensionnement_largeur = 100;//[1:500]
/* [Forme intérieure I] */
// En mm
Interieur_1_Taille = 350;
// En ...
Interieur_1_Qualite = 64;
// En mm
Interieur_1_Deplacement_H = -250;//[-2000:2000]
// En mm
Interieur_1_Deplacement_V = -125;//[-2000:2000]
// Change l'angle de placement de la forme
Interieur_1_mode = 1;//[1:"Gauche",2:"Haut",3:"Droite",4:"Bas",5:"Custom"]
Interieur_1_Custom_rotation = 0;//[-180:180]
/* [Forme intérieure II] */
// En mm
Interieur_2_Taille = 0;
// En ...
Interieur_2_Qualite = 32;
// En mm
Interieur_2_Deplacement_H = 0;//[-2000:2000]
// En mm
Interieur_2_Deplacement_V = 0;//[-2000:2000]
// Change l'angle de placement de la forme
Interieur_2_mode = 1;//[1:"Gauche",2:"Haut",3:"Droite",4:"Bas",5:"Custom"]
Interieur_2_Custom_rotation = 0;//[-180:180]
/* [Accroche - haut] */
// En % de la hauteur
Hauteur_accroche_haut = 75;//[0:100]
// Taille de encoches en mm
Taille_raccord_haut = 50;
// Trou pour lampe ?
Trou_haut = false;
// Diametre du trou en mm
Trou_haut_diametre = 80;
/* [Accroche - bas] */
// En % de la hauteur
Hauteur_accroche_bas = 15;//[0:100]
// Taille de encoches en mm
Taille_raccord_bas = 50;
// Trou pour lampe ?
Trou_bas = false;
// Diametre du trou en mm
Trou_bas_diametre = 80;
/* [Pattern] */
Informations_pattern = true;
Application_pattern = false;
// Taille du bord pour pattern.
Taille_bord = 10;
Pattern = 5;//[1:"Lignes",2:"Hexagones (Attention! Grandes valeurs pour pattern_mod!!!)",3:"Quadrillage",4:"Hexagones II (Attention! Grandes valeurs pour pattern_mod!!!)",5:"Soleil!",6:"DXF/SVG - Attention, activer l'option ''SVG'' dans les préférences!"]
Pattern_mod_1 = 128;
Pattern_mod_2 = 4;
Pattern_mod_3 = 0;//[-1000:1000]
Pattern_mod_4 = -71;//[-1000:1000]
Pattern_fichier = "pattern.svg";
/* [Ampoule] */
Montrer_ampoule = false;
Ampoule_Hauteur = 300;//[1:300]
Ampoule_Diametre_culot = 27;//[14:"Petit culot - 14mm",27:"Grand culot - 27mm"]
Ampoule_Evasement = 50;//[0:5000]
Ampoule_Evasement_Type = 1;//[1,2]
Ampoule_Diametre_haut = 30;//[1:200]
Ampoule_ecrasement_haut = 100;//[1:100]
Ampoule_Diametre_bas = 30;//[1:60]
Ampoule_ecrasement_bas = 100;//[1:100]
Ampoule_type = 1;//[1:"Custom",2:"E27 - Tube long à filament - 30 cm - 3cm",3:"E27 - Ampoule Edison Frequency à filaments - 13cm - 9.5cm",4:"E27 - Ampoule Edison cage à filaments / Spiral - 12cm - 8cm",5:"E27 - Edison Guad - 11.5cm - 6cm",6:"E27 - Edison Squirrel - 14cm - 6.4cm",7:"E27 - Ampoule Edison Valve à filaments - 11cm - 4.5cm",8:"E14 - Ampoule Edison Oval à filaments - 10cm - 3.5cm",9:"E27 - Ampoule Edison Candle à filaments - 13cm - 5.3cm",10:"E27 - Ampoule Edison Globe à filaments - 13cm - 5.3cm",11:"E27 - Osram Vintage 1906 - 14.5cm - 6.4cm"]
// Offset autour de l'ampoule
Offset_ampoule = 20;//[0:200]
// Variables calculées
haut = Angle>180?sin(90)*Taille:sin(Angle/2)*Taille; // Taille réelle de la forme obtenue
hautmod = Taille/2/haut; // Modificateur permettant de ramener la forme a la taille voulue
hautmod2 = ((Taille/2)+Pied/2)/haut;
ma = Angle/Qualite; // Angle de chaque division de la forme.
ep = Taille-(cos((Angle)/2)*Taille); // Epaisseur réelle de la forme
ep2 = ep*hautmod2*Redimensionnement_largeur/100; // Epaisseur de la forme une fois revenue à taille voulue
depl2 = Interieur_1_Taille/2>ep ? Interieur_1_Taille/2-ep : 0; // Modificateur de déplacement au cas où la forme intérieure serait plus grande que la forme extérieure.
points = [for(i=[0:Qualite])[sin(-ma*i)*Taille , cos(-ma*i)*Taille]]; // Points composant ma forme de base.
cr = 1/255*R; // Rouge
cv = 1/255*V; // Vert
cb = 1/255*B; // Bleu
dechex = [0,1/1,2,3,4,5,6,7,8,9,"A","B","C","D","E","F"];
hexaR = str(dechex[floor(R/16)],dechex[R%16]);
hexaV = str(dechex[floor(V/16)],dechex[V%16]);
hexaB = str(dechex[floor(B/16)],dechex[B%16]);
HexaCouleur = str("#",hexaR,hexaV,hexaB);
HexaRC = str("#",hexaR,"0000");
HexaRV = str("#00",hexaV,"00");
HexaRB = str("#0000",hexaB);
Espacement = sin(360/Repetitions/2)*Diametre_interieur;// Calcul de l'espacement entre deux formes pour savoir si l'ampoule choisie passe.
if(Visualisation=="Ampoule")
{
MonAmpoule();
}
if(Visualisation=="3D")
{
rotate([90,0,-90])
color([cr,cv,cb,1])
ObjetComplet();
if(Support==true)
{
color([0.9,0.7,0.5,1])
translate([0,0,-Epaisseur])
cylinder(r=ep2+Diametre_interieur/2,h=Epaisseur,$fn=64);
}
if(Informations_3D==true)
{
color([1,0.5,0.5,1])
{
translate([0,ep2+Diametre_interieur/2+50,0])
cylinder(d=10,h=Taille,$fn=4);
translate([0,ep2+Diametre_interieur/2+50,0])
rotate([90,0,0])
cylinder(d=10,h=50,$fn=4);
translate([0,ep2+Diametre_interieur/2+50,Taille])
rotate([90,0,0])
cylinder(d=10,h=50,$fn=4);
}
rotate([90,0,90])
translate([ep2+Diametre_interieur+40,Taille/2,0])
text(str("± ",Taille," mm"),valign="center",halign="left",size=Taille/15);
color([1,0.5,0.5,1])
{
translate([0,ep2+Diametre_interieur/2,Taille])
cylinder(d=10,h=50,$fn=4);
translate([0,-ep2-Diametre_interieur/2,Taille])
cylinder(d=10,h=50,$fn=4);
translate([0,-ep2-Diametre_interieur/2,Taille+50])
rotate([-90,0,0])
cylinder(d=10,h=ep2*2+Diametre_interieur,$fn=4);
}
translate([0,0,Taille+75])
rotate([90,0,90])
text(str("± ",ep2*2+Diametre_interieur," mm"),valign="bottom",halign="center",size=Taille/15);
translate([0,ep2+Diametre_interieur+(300*Taille/1200),Taille/4*3])
scale([1/1200*Taille,1/1200*Taille,1/1200*Taille])
rotate([90,0,90])
translate([-250,-Taille/2,0])
{
translate([250,Taille/2])
text(str(" ",Angle,"° "),valign="center",halign=Angle>180 ? "right":"left",size=Taille/25*1200/Taille);
hull()
{
translate([250,Taille/2])
circle(d=30);
translate([sin(-90+Angle/2)*200,cos(-90+Angle/2)*200])
translate([250,Taille/2])
circle(d=30);
}
hull()
{
translate([250,Taille/2])
circle(d=30);
translate([sin(-90-Angle/2)*200,cos(-90-Angle/2)*200])
translate([250,Taille/2])
circle(d=30);
}
for(i=[0:Qualite])
{
translate([250,Taille/2])
rotate([0,0,90-Angle/2])
translate([sin(-ma*i)*200,cos(-ma*i)*200])
circle(d=30);
}
}
}
if(Position_de_la_lampe=="bas" && Montrer_ampoule==true)
{
translate([0,0,Taille/100*Hauteur_accroche_bas])
MonAmpoule();
}
if(Position_de_la_lampe=="haut" && Montrer_ampoule==true)
{
translate([0,0,Taille/100*Hauteur_accroche_haut])
rotate([180,0,0])
MonAmpoule();
}
}
if(Visualisation=="Sortie DXF")
{
for(i=[1:Repetitions])
{
translate([(ep2+10)*i,0])
FormePrincipale();
translate([Diametre_interieur/2+Taille_raccord_haut/2,Taille*1.2+Diametre_interieur+20])
AccrocheHaut();
translate([Diametre_interieur*2+Taille_raccord_haut+Taille_raccord_bas/2,Taille*1.2+Diametre_interieur+Taille_raccord_bas/2])
AccrocheBas();
}
}
if(Visualisation=="Forme")
{
rotate([90,0,90])
color([cr,cv,cb,1])
linear_extrude(Epaisseur)
FormePrincipale();
}
module ObjetComplet()
{
Eloignement = Simulation_emboitement==true ? Eloignement : 0;
for(i=[0:Repetitions-1])
{
rotate([0,360/Repetitions*i,0])
translate([-Diametre_interieur/2-(Eloignement*sin(180/Repetitions*i)),0])
if(Transparence_formes==true)
{
#MaFormePrincipale3D();
}
else
{
MaFormePrincipale3D();
}
}
translate([0,Epaisseur/2+Taille/100*Hauteur_accroche_haut,0])
rotate([90,0,0])
linear_extrude(Epaisseur)
AccrocheHaut();
translate([0,Epaisseur/2+Taille/100*Hauteur_accroche_bas,0])
rotate([90,0,0])
linear_extrude(Epaisseur)
AccrocheBas();
}
module AccrocheHaut()
{
rotrep = Repetitions%2==1 ? 180/Repetitions : 0;
rotate([0,0,rotrep])
difference()
{
circle(d=Application_pattern==false ? Diametre_interieur+Taille_raccord_haut:Diametre_interieur+Taille_raccord_haut/2+Taille_bord*2
,$fn=64);
for(i=[1:Repetitions])
{
rotate([0,0,360/Repetitions*i])
translate([Diametre_interieur/2+Taille_raccord_haut/2+Taille_raccord_haut/4,0,0])
square([Taille_raccord_haut,Epaisseur],center=true);
}
if(Trou_haut==true)
{
circle(d=Trou_haut_diametre,$fn=64);
}
}
}
module AccrocheBas()
{
rotrep = Repetitions%2==1 ? 180/Repetitions : 0;
rotate([0,0,rotrep])
difference()
{
circle(d=Application_pattern==false ? Diametre_interieur+Taille_raccord_bas:Diametre_interieur+Taille_raccord_bas/2+Taille_bord*2,$fn=64);
for(i=[1:Repetitions])
{
rotate([0,0,360/Repetitions*i])
translate([Diametre_interieur/2+Taille_raccord_bas/2+Taille_raccord_bas/4,0,0])
square([Taille_raccord_bas,Epaisseur],center=true);
}
if(Trou_bas==true)
{
circle(d=Trou_bas_diametre,$fn=64);
}
}
}
module MaFormePrincipale3D()
{
translate([0,0,-Epaisseur/2])
linear_extrude(Epaisseur)
FormePrincipale();
}
module FormePrincipale()
{
if(Application_pattern==true)
{
difference()
{
FormeDeBase();
offset(-Taille_bord)
FormeDeBase();
}
}
else
{
FormeDeBase();
}
if(Application_pattern==true)
{
intersection()
{
FormeDeBase();
if(Pattern==1)Pattern1();
if(Pattern==2)Pattern2();
if(Pattern==3)Pattern3();
if(Pattern==4)Pattern4();
if(Pattern==5)Pattern5();
if(Pattern==6)Pattern6();
}
}
}
module FormeDeBase()
{
rotint = Interieur_1_mode==3 ? (180/Interieur_1_Qualite):
Interieur_1_mode==2 ? 90+(180/Interieur_1_Qualite):
Interieur_1_mode==4 ? -90+(180/Interieur_1_Qualite):
Interieur_1_mode==5 ? Interieur_1_Custom_rotation:(180/Interieur_1_Qualite)+180;
rotint2 = Interieur_2_mode==3 ? (180/Interieur_2_Qualite):
Interieur_2_mode==2 ? 90+(180/Interieur_2_Qualite):
Interieur_2_mode==4 ? -90+(180/Interieur_2_Qualite):
Interieur_2_mode==5 ? Interieur_2_Custom_rotation:(180/Interieur_2_Qualite)+180;
difference()
{
translate([0,-Pied])
scale([hautmod2*Redimensionnement_largeur/100,hautmod2,0])
translate([-ep,haut])
difference()
{
translate([Taille,0])
rotate([0,0,90-Angle/2])
polygon(points);
translate([(-depl2+Interieur_1_Deplacement_H)*1/Redimensionnement_largeur*100,Interieur_1_Deplacement_V])
scale([1/Redimensionnement_largeur*100,1,1])
rotate([0,0,rotint])
circle(r=Interieur_1_Taille,$fn=Interieur_1_Qualite);
translate([(-depl2+Interieur_2_Deplacement_H)*1/Redimensionnement_largeur*100,Interieur_2_Deplacement_V])
scale([1/Redimensionnement_largeur*100,1,1])
rotate([0,0,rotint2])
circle(r=Interieur_2_Taille,$fn=Interieur_2_Qualite);
}
if(Position_de_la_lampe=="bas")
{
translate([Diametre_interieur/2,Taille/100*Hauteur_accroche_bas])
difference()
{
offset(Offset_ampoule)
AmpouleForme();
translate([0,-5000+Epaisseur])
square([10000,10000],center=true);
translate([0,Taille/100*Hauteur_accroche_haut-Taille/100*Hauteur_accroche_bas+5000-Epaisseur])
square([10000,10000],center=true);
}
}
else
{
difference()
{
translate([Diametre_interieur/2,Taille/100*Hauteur_accroche_haut])
rotate([0,0,180])
difference()
{
offset(Offset_ampoule)
AmpouleForme();
translate([0,-5000+5])
square([10000,10000],center=true);
translate([0,Taille/100*Hauteur_accroche_haut-Taille/100*Hauteur_accroche_bas+5000-Epaisseur])
square([10000,10000],center=true);
}
}
}
translate([0,-Pied])
square([ep2*4,Pied*2],center=true);
translate([Taille_raccord_haut/4,Taille/100*Hauteur_accroche_haut])
square([Taille_raccord_haut,Epaisseur],center=true);
translate([Taille_raccord_bas/4,Taille/100*Hauteur_accroche_bas])
square([Taille_raccord_bas,Epaisseur],center=true);
}
if(Visualisation=="Forme" && Informations_Forme==true)
{
translate([100+250*Taille/1000,Taille/4*3,0])
scale([Taille/1000,Taille/1000,Taille/1000])
translate([0,0])
{
//translate([250,Taille/2])
text(str(" ",Angle,"° "),valign="center",halign=Angle>180 ? "right":"left",size=40);
hull()
{
//translate([250,Taille/2])
circle(d=Informations_trait);
translate([sin(-90+Angle/2)*200,cos(-90+Angle/2)*200])
//translate([250,Taille/2])
circle(d=Informations_trait);
}
hull()
{
//translate([250,Taille/2])
circle(d=Informations_trait);
translate([sin(-90-Angle/2)*200,cos(-90-Angle/2)*200])
//translate([250,Taille/2])
circle(d=Informations_trait);
}
for(i=[0:Qualite])
{
//translate([250,Taille/2])
rotate([0,0,90-Angle/2])
translate([sin(-ma*i)*200,cos(-ma*i)*200])
circle(d=Informations_trait/2);
}
}
hull()
{
translate([50,0,0])
circle(d=Informations_trait);
translate([100,0,0])
circle(d=Informations_trait);
}
hull()
{
translate([50,Taille,0])
circle(d=Informations_trait);
translate([100,Taille,0])
circle(d=Informations_trait);
}
hull()
{
translate([100,0,0])
circle(d=Informations_trait);
translate([100,Taille,0])
circle(d=Informations_trait);
}
hull()
{
translate([0,Taille+50,0])
circle(d=Informations_trait);
translate([0,Taille+100,0])
circle(d=Informations_trait);
}
hull()
{
translate([-ep2,Taille+50,0])
circle(d=Informations_trait);
translate([-ep2,Taille+100,0])
circle(d=Informations_trait);
}
hull()
{
translate([-ep2,Taille+100,0])
circle(d=Informations_trait);
translate([0,Taille+100,0])
circle(d=Informations_trait);
}
translate([0100,Taille/2,0])
text(str(" ± ",Taille," mm"),valign="center",halign="left",size=Taille/22);
translate([-ep2/2,Taille+150,0])
text(str("± ",ep2," mm"),valign="bottom",halign="center",size=Taille/22);
}
}
module Pattern1()
{
rotate([0,0,Pattern_mod_3])
for(i=[-Taille:Pattern_mod_1+Pattern_mod_2:Taille])
{
hull()
{
translate([i,-Taille])
circle(d=Pattern_mod_2);
translate([i,Taille*2])
circle(d=Pattern_mod_2);
}
}
}
module Pattern2()
{
hexa=[for(i=[0:5])[sin(60*i)*Pattern_mod_1 , cos(60*i)*Pattern_mod_1]];
difference()
{
translate([-Taille*2,-Taille*2])
square([Taille*4,Taille*4]);
translate([Pattern_mod_1*2,0])
for(j=[-(Taille/2/Pattern_mod_1)/2:(Taille/2/Pattern_mod_1)*2])
{
translate([0,j*cos(30)*Pattern_mod_1*2])
for(i=[-Taille/2/Pattern_mod_1:0])
{
translate([Pattern_mod_1*i*3,0])
rotate([0,0,30])
offset(-Pattern_mod_2)
polygon(hexa);
translate([Pattern_mod_1*i*3+sin(30)*Pattern_mod_1*3,cos(30)* Pattern_mod_1])
rotate([0,0,30])
offset(-Pattern_mod_2)
polygon(hexa);
}
}
}
}
module Pattern3()
{
rotate([0,0,Pattern_mod_3])
{
for(i=[-Taille:Pattern_mod_1+Pattern_mod_2:Taille])
{
hull()
{
translate([i,-Taille])
circle(d=Pattern_mod_2);
translate([i,Taille*2])
circle(d=Pattern_mod_2);
}
}
for(i=[-Taille:Pattern_mod_1+Pattern_mod_2:Taille])
{
hull()
{
translate([-Taille,i])
circle(d=Pattern_mod_2);
translate([Taille*2,i])
circle(d=Pattern_mod_2);
}
}
}
}
module Pattern4()
{
module p4fb(a)
{
polygon([[0,0],[sin(120)*a,cos(120)*a],[sin(120)*a+sin(60)*a,cos(120)*a+cos(60)*a],[sin(120)*a+sin(60)*a,cos(120)*a+cos(60)*a+a],[sin(60)*a,cos(60)*a],[0,a]]);
}
module p4fb2(a,b)
{
rotate([0,0,30])
for(i=[0:6])
{
rotate([0,0,-60*i])
translate([0,-a])
difference()
{
offset(b/2)
p4fb(a);
offset(-b/2)
p4fb(a);
}
}
}
module p4fb3()
{
p4fb2(Pattern_mod_1,Pattern_mod_2);
translate([sin(30)*Pattern_mod_1*6,cos(30)*Pattern_mod_1*2])
p4fb2(Pattern_mod_1,Pattern_mod_2);
}
module p4fb4()
{
for(i=[-Taille/4/Pattern_mod_1:0])
{
translate([sin(30)*Pattern_mod_1*12*i,0])
p4fb3();
}
}
for(i=[-Pattern_mod_1*4:sin(60)*Pattern_mod_1*4:Taille*1.5])
{
translate([0,i])
p4fb4();
}
}
module Pattern5()
{
for(i=[1:Pattern_mod_1])
{
translate([Pattern_mod_3,Pattern_mod_4])
hull()
{
circle(d=Pattern_mod_2);
translate([sin(360/Pattern_mod_1*i)*Taille*4,cos(360/Pattern_mod_1*i)*Taille*4])
circle(d=Pattern_mod_2);
}
}
}
module Pattern6()
{
translate([Pattern_mod_3,Pattern_mod_4,0])
offset(Pattern_mod_2)
scale([Pattern_mod_1/100,Pattern_mod_1/100,Pattern_mod_1/100])
import(Pattern_fichier);
}
module MonAmpoule()
{
if(Ampoule_type==1){Ampoule(h=Ampoule_Hauteur,d1=Ampoule_Diametre_culot,d2=Ampoule_Diametre_haut,d3=Ampoule_Diametre_bas,e=Ampoule_Evasement,de1=Ampoule_ecrasement_haut,de2=Ampoule_ecrasement_bas,et=Ampoule_Evasement_Type,o=0);}
if(Ampoule_type==2) {Ampoule(h=300 ,d1=27 ,d2=30 ,d3=30 ,e=0 ,de1=100 ,de2=25 ,et=1,o=0);}
if(Ampoule_type==3) {Ampoule(h=130 ,d1=27 ,d2=95 ,d3=30 ,e=10 ,de1=100 ,de2=25 ,et=1,o=0);}
if(Ampoule_type==4) {Ampoule(h=120 ,d1=27 ,d2=80 ,d3=30 ,e=10 ,de1=100 ,de2=25 ,et=1,o=0);}
if(Ampoule_type==5) {Ampoule(h=115 ,d1=27 ,d2=60 ,d3=30 ,e=70 ,de1=100 ,de2=25 ,et=1,o=0);}
if(Ampoule_type==6) {Ampoule(h=140 ,d1=27 ,d2=64 ,d3=33 ,e=5000 ,de1=80 ,de2=10 ,et=1,o=0);}
if(Ampoule_type==7) {Ampoule(h=110 ,d1=27 ,d2=45 ,d3=45 ,e=70 ,de1=100 ,de2=100 ,et=1,o=0);}
if(Ampoule_type==8) {Ampoule(h=100 ,d1=14 ,d2=35 ,d3=15 ,e=25 ,de1=0 ,de2=30 ,et=2,o=0);}
if(Ampoule_type==9) {Ampoule(h=130 ,d1=27 ,d2=53 ,d3=28 ,e=100 ,de1=0 ,de2=0 ,et=2,o=0);}
if(Ampoule_type==10){Ampoule(h=130 ,d1=27 ,d2=95 ,d3=27 ,e=10 ,de1=100 ,de2=100 ,et=1,o=0);}
if(Ampoule_type==11){Ampoule(h=145 ,d1=27 ,d2=64 ,d3=30 ,e=5000 ,de1=80 ,de2=25 ,et=1,o=0);}
}
module AmpouleForme()
{
if(Ampoule_type==1){Ampoule2D(h=Ampoule_Hauteur,d1=Ampoule_Diametre_culot,d2=Ampoule_Diametre_haut,d3=Ampoule_Diametre_bas,e=Ampoule_Evasement,de1=Ampoule_ecrasement_haut,de2=Ampoule_ecrasement_bas,et=Ampoule_Evasement_Type,o=Offset_ampoule);}
if(Ampoule_type==2) {Ampoule2D(h=300 ,d1=27 ,d2=30 ,d3=30 ,e=0 ,de1=100 ,de2=25 ,et=1,o=0);}
if(Ampoule_type==3) {Ampoule2D(h=130 ,d1=27 ,d2=95 ,d3=30 ,e=10 ,de1=100 ,de2=25 ,et=1,o=0);}
if(Ampoule_type==4) {Ampoule2D(h=120 ,d1=27 ,d2=80 ,d3=30 ,e=10 ,de1=100 ,de2=25 ,et=1,o=0);}
if(Ampoule_type==5) {Ampoule2D(h=115 ,d1=27 ,d2=60 ,d3=30 ,e=70 ,de1=100 ,de2=25 ,et=1,o=0);}
if(Ampoule_type==6) {Ampoule2D(h=140 ,d1=27 ,d2=64 ,d3=33 ,e=5000 ,de1=80 ,de2=10 ,et=1,o=0);}
if(Ampoule_type==7) {Ampoule2D(h=110 ,d1=27 ,d2=45 ,d3=45 ,e=70 ,de1=100 ,de2=100 ,et=1,o=0);}
if(Ampoule_type==8) {Ampoule2D(h=100 ,d1=14 ,d2=35 ,d3=15 ,e=25 ,de1=0 ,de2=30 ,et=2,o=0);}
if(Ampoule_type==9) {Ampoule2D(h=130 ,d1=27 ,d2=53 ,d3=28 ,e=100 ,de1=0 ,de2=0 ,et=2,o=0);}
if(Ampoule_type==10){Ampoule2D(h=130 ,d1=27 ,d2=95 ,d3=27 ,e=10 ,de1=100 ,de2=100 ,et=1,o=0);}
if(Ampoule_type==11){Ampoule2D(h=145 ,d1=27 ,d2=64 ,d3=30 ,e=5000 ,de1=80 ,de2=25 ,et=1,o=0);}
}
echoPrez=str("
Générateur de supports à lampes
CC-BY-SA marc@vanlindt.be - www.vanlindt.be
Inspiré d'une création de ... présentée à la Braderie de l'Art de Liège 2018
");
echoInfos=str("
Informations sur l'objet
Hauteur de l'objet : |
",Taille," mm. |
Largeur de l'objet : |
",ep2*2+Diametre_interieur," mm. |
Largeur d'une forme : |
",ep2," mm. |
Nombre de formes : |
",Repetitions," |
Diametre intérieur : |
",Diametre_interieur," mm. |
Epaisseur matériau choisi : |
",Epaisseur," mm. |
Angle utilisé : |
",Angle,"° |
Hauteur raccord haut : |
",Taille/100*Hauteur_accroche_haut," mm. |
Hauteur raccord bas : |
",Taille/100*Hauteur_accroche_bas," mm. |
"
);
toto="Edison-Tube-30-3.jpg";
echo3Dt=Transparence_formes==true ? "Activée!" : "Désactivée!";
echo3D=str("Vue 3D
Attention, les formes 3D générées sont des visualisations de ce que donnera l'objet physique final, après découpe des plans 2D.
Si vous tentez de créer un STL à partir de cette vue, il y aura des erreurs dues à la juxtaposition de certains vecteurs (non-manifold object).
Couleur de l'objet :
Transparence de l'objet : ",echo3Dt,"
");
echoPattern=str("Aide pour pattern utilisé
");
InfoPattern=["
Pattern 1 : lignes
• Pattern mod 1 : Espacement entre les lignes
• Pattern mod 2 : Epaisseur des lignes
• Pattern mod 3 : Rotation des lignes",
"Pattern 2 : Hexagones I
• Pattern mod 1 : Taille des hexagones
• Pattern mod 2 : Epaisseur des traits",
"Pattern 3 : Quadrillage
• Pattern mod 1 : Espacement entre les lignes
• Pattern mod 2 : Epaisseur des lignes
• Pattern mod 3 : Rotation du quadrillage",
"Pattern 4 : Hexagones II
• Pattern mod 1 : Taille des hexagones
• Pattern mod 2 : Epaisseur des traits",
"Pattern 5 : Soleil
• Pattern mod 1 : Nombre de rayons
• Pattern mod 2 : Epaisseur des rayons
• Pattern mod 3 : Déplacement horizonal
• Pattern mod 4 : Déplacement vertical"];
PatternInfo=InfoPattern[Pattern-1];
echoTout=str(echoPrez,echoInfos,echo3D,echoPattern,PatternInfo,"
");
if(Informations_pattern==true)
{
echo(echoTout);
}
module Ampoule(h,d1,d2,d3,e,de1,de2,et,o)
{
translate([0,0,-d1])
{
color([0.8,0.6,0.3,1])
translate([0,0,5])
cylinder(d=d1,h=d1-5);
color([0.1,0.1,0.1,1])
cylinder(d1=d1*0.5,d2=d1*0.9,h=5);
color([0.7,0.7,0.7,1])
rotate_extrude($fn=64)
difference()
{
offset(-e,$fn=256)
offset(e,$fn=256)
if(et==1)
{
union()
{
translate([0,h-((d2/2)*1/100*de1)])
scale([1,1/100*de1])
circle(d=d2,$fn=128);
translate([0,d1+((d3/2)*1/100*de2)])
scale([1,1/100*de2])
circle(d=d3,$fn=128);
}
offset(-50,$fn=128)
offset(50,$fn=128)
{
if(et==1)
{
translate([0,d1+((d3/2)*1/100*de2)])
square([d3/2,(h-d1-+((d3/2)*1/100*de2)-((d2/2)*1/100*de1))]);
}
translate([0,d1-0.1])
square([d1/2,0.1]);
}
}
if(et==2)
{
offset(-15)
offset(15)
{
translate([0,h/2+d1/2+e/200])
resize([d2,h-d1-e/100])
circle(d=h-d1-e/100,$fn=128);
offset(d3/10)
offset(-d3/10)
translate([0,d1])
square([d3/2,d3]);
}
}
translate([-d2*100,-(h+d2)*50])
square([d2*100,(h+d2)*100]);
}
}
}
module Ampoule2D(h,d1,d2,d3,e,de1,de2,et,o)
{
translate([0,-d1])
{
difference()
{
offset(-e,$fn=256)
offset(e,$fn=256)
if(et==1)
{
union()
{
translate([0,h-((d2/2)*1/100*de1)])
scale([1,1/100*de1])
circle(d=d2,$fn=128);
translate([0,d1+((d3/2)*1/100*de2)])
scale([1,1/100*de2])
circle(d=d3,$fn=128);
}
offset(-50,$fn=128)
offset(50,$fn=128)
{
if(et==1)
{
translate([0,d1+((d3/2)*1/100*de2)])
square([d3/2,(h-d1-+((d3/2)*1/100*de2)-((d2/2)*1/100*de1))]);
}
translate([0,d1-0.1])
square([d1/2,0.1]);
}
}
if(et==2)
{
offset(-15)
offset(15)
{
translate([0,h/2+d1/2+e/200])
resize([d2,h-d1-e/100])
circle(d=h-d1-e/100,$fn=128);
offset(d3/10)
offset(-d3/10)
translate([0,d1])
square([d3/2,d3]);
}
}
translate([-d2*100,-(h+d2)*50])
square([d2*100,(h+d2)*100]);
}
mirror()
difference()
{
offset(-e,$fn=256)
offset(e,$fn=256)
if(et==1)
{
union()
{
translate([0,h-((d2/2)*1/100*de1)])
scale([1,1/100*de1])
circle(d=d2,$fn=128);
translate([0,d1+((d3/2)*1/100*de2)])
scale([1,1/100*de2])
circle(d=d3,$fn=128);
}
offset(-50,$fn=128)
offset(50,$fn=128)
{
if(et==1)
{
translate([0,d1+((d3/2)*1/100*de2)])
square([d3/2,(h-d1-+((d3/2)*1/100*de2)-((d2/2)*1/100*de1))]);
}
translate([0,d1-0.1])
square([d1/2,0.1]);
}
}
if(et==2)
{
offset(-15)
offset(15)
{
translate([0,h/2+d1/2+e/200])
resize([d2,h-d1-e/100])
circle(d=h-d1-e/100,$fn=128);
offset(d3/10)
offset(-d3/10)
translate([0,d1])
square([d3/2,d3]);
}
}
translate([-d2*100,-(h+d2)*50])
square([d2*100,(h+d2)*100]);
}
}
}