/* 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 :
",R,"
",V,"
",B,"
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]); } } }