Outils pour utilisateurs

Outils du site


outilsit:fablab:laser:lol:code

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
outilsit:fablab:laser:lol:code [2022/02/07 19:40]
vanlindtmarc créée
outilsit:fablab:laser:lol:code [2022/02/09 02:35] (Version actuelle)
vanlindtmarc
Ligne 1: Ligne 1:
 <code OpenSCAD LOLscad.scad> <code OpenSCAD LOLscad.scad>
-abc=ngon(d=40,fn=3); 
-//def=fract(abc,in=false); 
-def=chaincurve(koch(abc,maxit=1),fn=4); 
-ghi=koch(abc,maxit=2); 
- 
-2Dto3D(abc,def,segment=4,quality=2); 
- 
-echo(def); 
-   
 /*═══════════════════════════════════════════════════════════════════════╕ /*═══════════════════════════════════════════════════════════════════════╕
 │                         Liège Openscad Library                         | │                         Liège Openscad Library                         |
Ligne 21: Ligne 12:
  
 LetterL=[[0,0],[0,70],[22,73],[19,21],[50,25],[48,-1],[0,0]]; LetterL=[[0,0],[0,70],[22,73],[19,21],[50,25],[48,-1],[0,0]];
-LetterO=[[0,35],[6.25,61.25],[25,70],[25,70],[43.75,61.25],[50,35],[50,35],[43.75,8.75],[25,0],[25,0],[6.25,8.75],[0,35]]; +//LetterO=[[0,35],[6.25,61.25],[25,70],[25,70],[43.75,61.25],[50,35],[43.75,8.75],[25,0],[6.25,8.75],[0,35]]; 
 +LetterO=[[0,0],[0,70],[50,70],[50,0],[0,0]];
 blue = [0,0,1,1]; blue = [0,0,1,1];
 red = [1,0,0,1]; red = [1,0,0,1];
Ligne 974: Ligne 965:
   )   )
 [clean(aa),clean(ee)]; [clean(aa),clean(ee)];
-  + 
 +function simple3D(a,b,h,bottom,top,angle,correct) = let ( 
 +    angle=angle==undef?0:angle, 
 +    correct=correct==undef?0:correct, 
 +    bottom=true, 
 +    top=true, 
 +    c=2Drot(interpolate(a,b,maxstep=1,step=0,correct=correct,q=1),angle), 
 +    d=2Drot(interpolate(a,b,maxstep=1,step=1,correct=correct,q=1),angle), 
 +    aa=[    for(i=[0:len(c)]) each[[c[i][0],c[i][1],0],[d[i][0],d[i][1],h]]  ], 
 +    bb=[    for(i=[0:1:len(aa)]) each [[i,i+1,i+2],[i+1,i+3,i+2]]    ],  
 +    cc=bottom==true?   for(i=[0:2:len(aa)]) each [i]   ]:[], 
 +    dd=top==true?   for(i=[0:2:len(aa)]) each [len(aa)-1-i]   ]:[], 
 +    ee=concat(bb,[cc],[dd]) 
 +  ) 
 +[clean(aa),clean(ee)];  
  
 function vectranslate(a,n,it)=let( function vectranslate(a,n,it)=let(
Ligne 983: Ligne 988:
   it==n+len(a)-2?aa:vectranslate(a=aa,n=n,it=it+1);   it==n+len(a)-2?aa:vectranslate(a=aa,n=n,it=it+1);
    
 +
  
 module 2Dto3D(a,b,h,segment,correct,quality,rotation){ module 2Dto3D(a,b,h,segment,correct,quality,rotation){
-angle=rotation==undef?0:rotation/segment; 
-quality=quality==undef?1:quality; 
-he=h==undef?64:h; 
-mm=segment==undef?8:segment; 
-aabc=a==undef?ngon(d=50,fn=3):a; 
-adef=b==undef?chaincurve(koch(ngon(d=50,fn=3),maxit=1),fn=4):b; 
-correct=correct==undef?0:correct;   
- 
- 
-    for(i=[0:mm-1]){ 
-      my3Dobject=to3D( 
-        2Drot(interpolate(aabc,adef,maxstep=mm,step=i,correct=correct,q=quality),i*angle), 
-        2Drot(interpolate(aabc,adef,maxstep=mm,step=i+1,correct=correct,q=quality),(i+1)*angle), 
-        h=he/mm, 
-        top=i==mm-1?true:true, 
-        bottom=i==0?true:true); 
-       
-      translate([0,0,(i)*he/mm]) 
-      color([1/mm*i,1-(1/mm*i),1,1]) 
-      union() 
-      { 
-      polyhedron(my3Dobject[0],my3Dobject[1]); 
-      polyhedron(my3Dobject[0],my3Dobject[1]);} 
-     
-  } 
-} 
-module 2Dto3D2(a,b,h,segment,correct,quality,rotation){ 
 angle=rotation==undef?0:rotation/segment; angle=rotation==undef?0:rotation/segment;
 quality=quality==undef?1:quality; quality=quality==undef?1:quality;
Ligne 1031: Ligne 1010:
       translate([0,0,i*he/mm])       translate([0,0,i*he/mm])
       color([1/mm*i,1-(1/mm*i),1,1])       color([1/mm*i,1-(1/mm*i),1,1])
-      //union()+      union()
       {       {
-      polyhedron(my3Dobject[0],my3Dobject[1]); +        polyhedron(my3Dobject[0],my3Dobject[1]); 
-      polyhedron(my3Dobject[0],my3Dobject[1]);}+        polyhedron(my3Dobject[0],my3Dobject[1]); 
 +      }
     }     }
   }   }
Ligne 1046: Ligne 1026:
   def=multiplyfaces(b,pp[1]),   def=multiplyfaces(b,pp[1]),
   aa=[for(i=[0:len(def)]) each [divide(abc[i],def[i],step/(maxstep))]])   aa=[for(i=[0:len(def)]) each [divide(abc[i],def[i],step/(maxstep))]])
-  (aa);+  clean(aa);
  
 function ppcm(a,b,q)=let( function ppcm(a,b,q)=let(
Ligne 1255: Ligne 1235:
 }}} }}}
  
 +module menger3d(it,d,maxit){
 +    it=it==undef?1:it;
 +    if (it==maxit){
 +        cube([d,d,d],center=true);
 +    }
 +    if (it<=maxit){
 +        union(){
 +        for (i=[-1:1]){
 +            translate([d/3,d/3,d/3*i]) rotate([0,90,0]) menger3d(it=it+1,d=d*1/3,maxit=maxit);
 +            translate([-d/3,d/3,d/3*i]) rotate([0,90,0]) menger3d(it=it+1,d=d*1/3,maxit=maxit);
 +            }
 +            
 +        translate([0,d/3,d/3]) rotate([0,90,0]) menger3d(it=it+1,d=d*1/3,maxit=maxit);
 +        translate([0,d/3,-d/3]) rotate([0,90,0]) menger3d(it=it+1,d=d*1/3,maxit=maxit);
  
-//menger2(); +        for (i=[-1:1]){ 
-module menger2(d,maxit,it,tab+            translate([d/3,-d/3,d/3*i]) rotate([0,90,0]) menger3d(it=it+1,d=d*1/3,maxit=maxit); 
-+            translate([-d/3,-d/3,d/3*i]) rotate([0,90,0]) menger3d(it=it+1,d=d*1/3,maxit=maxit); 
- it=it==undef?0:it; +            } 
- tab=it==undef?[[1]]:tab+        translate([0,-d/3,d/3]) rotate([0,90,0]) menger3d(it=it+1,d=d*1/3,maxit=maxit); 
-  +        translate([0,-d/3,-d/3]) rotate([0,90,0]) menger3d(it=it+1,d=d*1/3,maxit=maxit); 
-}+        translate([d/3,0,d/3]) rotate([0,90,0]) menger3d(it=it+1,d=d*1/3,maxit=maxit); 
 +        translate([d/3,0,-d/3]) rotate([0,90,0]) menger3d(it=it+1,d=d*1/3,maxit=maxit); 
 +        translate([-d/3,0,d/3]) rotate([0,90,0]) menger3d(it=it+1,d=d*1/3,maxit=maxit); 
 +        translate([-d/3,0,-d/3]) rotate([0,90,0]) menger3d(it=it+1,d=d*1/3,maxit=maxit); 
 +}}} 
 + 
 +module jcube(it,d,maxit)
 +    it=it==undef?1:it; 
 +union() 
 +    { 
 +        if(it==maxit) 
 +        { 
 +            cube([d,d,d],center=true); 
 +        }     
 +        if(it<=maxit) 
 +        { 
 +            translate([d/2,d/2,d/2]) 
 +            translate([-d/2*(sqrt(2)-1),-d/2*(sqrt(2)-1),-d/2*(sqrt(2)-1)]) 
 +            jcube(it=it+1,maxit=maxit,d=d*(sqrt(2)-1)); 
 + 
 +            translate([-d/2,d/2,d/2]) 
 +            translate([d/2*(sqrt(2)-1),-d/2*(sqrt(2)-1),-d/2*(sqrt(2)-1)]
 +            jcube(it=it+1,maxit=maxit,d=d*(sqrt(2)-1)); 
 + 
 +            translate([d/2,-d/2,d/2]
 +            translate([-d/2*(sqrt(2)-1),d/2*(sqrt(2)-1),-d/2*(sqrt(2)-1)]) 
 +            jcube(it=it+1,maxit=maxit,d=d*(sqrt(2)-1))
 + 
 +            translate([-d/2,-d/2,d/2]) 
 +            translate([d/2*(sqrt(2)-1),d/2*(sqrt(2)-1),-d/2*(sqrt(2)-1)]) 
 +            jcube(it=it+1,maxit=maxit,d=d*(sqrt(2)-1)); 
 + 
 +            translate([d/2,d/2,-d/2]) 
 +            translate([-d/2*(sqrt(2)-1),-d/2*(sqrt(2)-1),d/2*(sqrt(2)-1)]) 
 +            jcube(it=it+1,maxit=maxit,d=d*(sqrt(2)-1)); 
 + 
 +            translate([-d/2,d/2,-d/2]) 
 +            translate([d/2*(sqrt(2)-1),-d/2*(sqrt(2)-1),d/2*(sqrt(2)-1)]) 
 +            jcube(it=it+1,maxit=maxit,d=d*(sqrt(2)-1)); 
 + 
 +            translate([d/2,-d/2,-d/2]) 
 +            translate([-d/2*(sqrt(2)-1),d/2*(sqrt(2)-1),d/2*(sqrt(2)-1)]) 
 +            jcube(it=it+1,maxit=maxit,d=d*(sqrt(2)-1)); 
 + 
 +            translate([-d/2,-d/2,-d/2]) 
 +            translate([d/2*(sqrt(2)-1),d/2*(sqrt(2)-1),d/2*(sqrt(2)-1)]) 
 +            jcube(it=it+1,maxit=maxit,d=d*(sqrt(2)-1)); 
 + 
 +            translate([-d/2,-d/2,0]) 
 +            translate([d/2*(1-(2*(sqrt(2)-1))),d/2*(1-(2*(sqrt(2)-1))),0]) 
 +            jcube(it=it+1,maxit=maxit,d=d*(1-(2*(sqrt(2)-1)))); 
 + 
 +            translate([-d/2,d/2,0]) 
 +            translate([d/2*(1-(2*(sqrt(2)-1))),-d/2*(1-(2*(sqrt(2)-1))),0]) 
 +            jcube(it=it+1,maxit=maxit,d=d*(1-(2*(sqrt(2)-1)))); 
 + 
 +            translate([d/2,-d/2,0]) 
 +            translate([-d/2*(1-(2*(sqrt(2)-1))),d/2*(1-(2*(sqrt(2)-1))),0]) 
 +            jcube(it=it+1,maxit=maxit,d=d*(1-(2*(sqrt(2)-1)))); 
 + 
 +            translate([d/2,d/2,0]) 
 +            translate([-d/2*(1-(2*(sqrt(2)-1))),-d/2*(1-(2*(sqrt(2)-1))),0]) 
 +            jcube(it=it+1,maxit=maxit,d=d*(1-(2*(sqrt(2)-1)))); 
 + 
 +            translate([-d/2,0,-d/2]) 
 +            translate([d/2*(1-(2*(sqrt(2)-1))),0,d/2*(1-(2*(sqrt(2)-1)))]) 
 +            jcube(it=it+1,maxit=maxit,d=d*(1-(2*(sqrt(2)-1)))); 
 + 
 +            translate([-d/2,0,d/2]) 
 +            translate([d/2*(1-(2*(sqrt(2)-1))),0,-d/2*(1-(2*(sqrt(2)-1)))]) 
 +            jcube(it=it+1,maxit=maxit,d=d*(1-(2*(sqrt(2)-1)))); 
 + 
 +            translate([d/2,0,-d/2]) 
 +            translate([-d/2*(1-(2*(sqrt(2)-1))),0,d/2*(1-(2*(sqrt(2)-1)))]) 
 +            jcube(it=it+1,maxit=maxit,d=d*(1-(2*(sqrt(2)-1)))); 
 + 
 +            translate([d/2,0,d/2]) 
 +            translate([-d/2*(1-(2*(sqrt(2)-1))),0,-d/2*(1-(2*(sqrt(2)-1)))]) 
 +            jcube(it=it+1,maxit=maxit,d=d*(1-(2*(sqrt(2)-1)))); 
 + 
 +            translate([0,-d/2,-d/2]) 
 +            translate([0,d/2*(1-(2*(sqrt(2)-1))),d/2*(1-(2*(sqrt(2)-1)))]) 
 +            jcube(it=it+1,maxit=maxit,d=d*(1-(2*(sqrt(2)-1)))); 
 + 
 +            translate([0,-d/2,d/2]) 
 +            translate([0,d/2*(1-(2*(sqrt(2)-1))),-d/2*(1-(2*(sqrt(2)-1)))]) 
 +            jcube(it=it+1,maxit=maxit,d=d*(1-(2*(sqrt(2)-1)))); 
 + 
 +            translate([0,d/2,-d/2]) 
 +            translate([0,-d/2*(1-(2*(sqrt(2)-1))),d/2*(1-(2*(sqrt(2)-1)))]) 
 +            jcube(it=it+1,maxit=maxit,d=d*(1-(2*(sqrt(2)-1)))); 
 + 
 +            translate([0,d/2,d/2]) 
 +            translate([0,-d/2*(1-(2*(sqrt(2)-1))),-d/2*(1-(2*(sqrt(2)-1)))]) 
 +            jcube(it=it+1,maxit=maxit,d=d*(1-(2*(sqrt(2)-1)))); 
 +}}}
 </code> </code>
  
  
outilsit/fablab/laser/lol/code.1644259248.txt.gz · Dernière modification: 2022/02/07 19:40 de vanlindtmarc