Ce générateur créera les plans DXF à utiliser avec une découpeuse laser afin d'obtenir le résultat voulu, prévisualisable dans le générateur.
Par exemple :
Nous pouvons voir sur cette capture quatre choses :
Ainsi, si vous désirez une lampe “ronde”, il suffit de mettre cet angle à 180° :
Ce générateur est complexe dans le sens où il existe énormément de variables pouvant influer sur la forme, le tout sans aucun garde-fou vous indiquant si vous faites une mauvaise utilisation de l'outil.
Merci vous référer à ce qui suit avant de me contacter ;)
Vous aurez le choix entre :
correspondant à ce que vous aurez vu plus haut.
Nombre de fois que la forme sera répétée autour du luminaire.
Attention à toujours garder un moyen de mettre une ampoule!
Diamètre des plaques haut et bas servant d'accroches aux formes et où sera mise l'ampoule.
Simulera le fait que la lampe soit là où vous l'indiquez : en haut ou en bas.
Indique l'épaisseur du matériau que vous utiliserez.
indique la couleur du matériau dans la prévisualisation 3D.
Donne les informations de largeur, hauteur et d'angle utilisé.
Affiche le support sur lequel est posé la lampe en prévisualisation 3D.
Rend les formes transparentes :
Permet de simuler l'emboitement…
Hauteur de la lampe
Indique le nombre de bords qu'aura la forme.
L'information est également donnée là où est indiqué l'angle.
Ici avec une qualité de 3, équivalant donc à 3 côtés :
Créé la courbure de la forme en fonction de l'angle voulu.
Permet d'étirer une forme pour changer le type de courbure.
Deux formes intérieures peuvent etre crées pour trouer ou modifier la forme.
Indique la taille du trou
Indique le nombre de bords qu'aura ce trou
Déplacement horizontal et vertical
Hauteur à laquelle se situe l'accorhce
Taille des encoches
Créée le trou pour mettre l'ampoule
Diamètre du trou pour la lampe…
Permet d'afficher un pattern au sein de la forme.
Applique ou non
Taille qu'aura le bord
Plusieurs patterns peuvent-être utilisés :
Utilisera le fichier indiqué comme pattern.
Attention à ne pas utiliser de tros gros SVG!!!!
Quatre modificateurs modifiant les patterns.
Chaque pattern étant fort différent l'un de l'autre, les modificateurs n'agissent pas de la même manière en fonction de chaque pattern. A vous d'essayer chacun.
Permet de simuler la présence de l'ampoule et modifier la forme de la lampe en fonction de la lampe voulue.
Plusieurs paramètres permettent de créer la forme de la majorité de ampoules habituelles.
Le paramètre “offset” permet d'augmenter ou diminuer l'espace entre l'ampoule et la forme de la lampe.
Il y a déjà plusieurs ampoules incluses :
/* 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("<center><h1>Générateur de supports à lampes</h1></center><b>CC-BY-SA <a href =mailto:marc@vanlindt.be>marc@vanlindt.be</a> - www.vanlindt.be</b><br/>Inspiré d'une création de ... présentée à la Braderie de l'Art de Liège 2018<hr>"); echoInfos=str(" <center><h2>Informations sur l'objet</h2></center> <table> <tr> <td align=right width=200><b>Hauteur de l'objet : </b></td> <td>",Taille," mm.</td> </tr> <tr> <td align=right><b>Largeur de l'objet : </b></td> <td>",ep2*2+Diametre_interieur," mm.</td> </tr> <tr> <td align=right><b>Largeur d'une forme : </b></td> <td>",ep2," mm.</td> </tr> </table> <hr> <table> <tr> <td align=right width=200><b>Nombre de formes : </b></td> <td>",Repetitions,"</td> </tr> </table> <hr> <table> <tr> <td align=right width=200><b>Diametre intérieur : </b></td> <td>",Diametre_interieur," mm.</td> </tr> </table> <hr> <table> <tr> <td align=right width=200><b>Epaisseur matériau choisi : </b></td> <td>",Epaisseur," mm.</td> </tr> </table> <hr> <table> <tr> <td align=right width=200><b>Angle utilisé : </b></td> <td>",Angle,"°</td> </tr> </table> <hr> <table> <tr> <td align=right width=200><b>Hauteur raccord haut : </b></td> <td>",Taille/100*Hauteur_accroche_haut," mm.</td> </tr> <tr> <td align=right width=200><b>Hauteur raccord bas : </b></td> <td>",Taille/100*Hauteur_accroche_bas," mm.</td> </tr> </table> <hr>" ); toto="Edison-Tube-30-3.jpg"; echo3Dt=Transparence_formes==true ? "Activée!" : "Désactivée!"; echo3D=str("<center><h2>Vue 3D</h2></center> <small><b><i>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.<br/>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).</i></b></small> <br/><br/> <b>Couleur de l'objet :</b> <table> <tr> <td width=50 bgcolor=",HexaCouleur," rowspan=3></td> <td align=center width=20 bgcolor=",HexaRC,"><b></b></td> <td align=left>",R,"</td> </tr> <tr> <td align=center width=20 bgcolor=",HexaRV,"><b></b></td> <td align=left>",V,"</td> </tr> <tr> <td align=center width=20 bgcolor=",HexaRB,"><b></b></td> <td align=left>",B,"</td> </table> <b>Transparence de l'objet : </b>",echo3Dt," <hr>"); echoPattern=str("<center><h2>Aide pour pattern utilisé</h2></center>"); InfoPattern=[" <h3>Pattern 1 : lignes</h3> • <b>Pattern mod 1 : </b>Espacement entre les lignes<br/> • <b>Pattern mod 2 : </b>Epaisseur des lignes<br/> • <b>Pattern mod 3 : </b>Rotation des lignes", "<h3>Pattern 2 : Hexagones I</h3> • <b>Pattern mod 1 : </b>Taille des hexagones<br/> • <b>Pattern mod 2 : </b>Epaisseur des traits", "<h3>Pattern 3 : Quadrillage</h3> • <b>Pattern mod 1 : </b>Espacement entre les lignes<br/> • <b>Pattern mod 2 : </b>Epaisseur des lignes • <b>Pattern mod 3 : </b>Rotation du quadrillage", "<h3>Pattern 4 : Hexagones II</h3> • <b>Pattern mod 1 : </b>Taille des hexagones<br/> • <b>Pattern mod 2 : </b>Epaisseur des traits", "<h3>Pattern 5 : Soleil</h3> • <b>Pattern mod 1 : </b>Nombre de rayons<br/> • <b>Pattern mod 2 : </b>Epaisseur des rayons<br/> • <b>Pattern mod 3 : </b>Déplacement horizonal<br/> • <b>Pattern mod 4 : </b>Déplacement vertical"]; PatternInfo=InfoPattern[Pattern-1]; echoTout=str(echoPrez,echoInfos,echo3D,echoPattern,PatternInfo,"<hr>"); 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]); } } }