Outils pour utilisateurs

Outils du site


outilsit:fablab:laser:lol

Différences

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

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
outilsit:fablab:laser:lol [2022/02/09 00:09]
vanlindtmarc
outilsit:fablab:laser:lol [2022/02/09 02:27] (Version actuelle)
vanlindtmarc
Ligne 88: Ligne 88:
 </code> </code>
  
 +----
  
 ===== Nouvelles fonctions sur nombres ===== ===== Nouvelles fonctions sur nombres =====
Ligne 1009: Ligne 1010:
 } }
 </code> </code>
 +
 +----
 +
 +==== outline(w,t) ====
 +
 +<code>
 +abc=square([50,50],center=true);
 +
 +#translate([0,0,2]) 2D(abc);
 +outline(w=3) 2D(abc);
 +
 +#translate([55,0,2]) 2D(abc);
 +translate([55,0,0]) outline(w=3,t="in") 2D(abc);
 +
 +#translate([110,0,2]) 2D(abc);
 +translate([110,0,0]) outline(w=3,t="out") 2D(abc);
 +</code>
 +<code>
 +module outline                (w,t){ 
 +  w=w==undef?1:w;
 +  t=t==undef?"on":t;
 +  difference()
 +  {    
 +    offset(t=="out"?w:t=="in"?0:w/2)
 +    children();
 +    offset(t=="out"?0:t=="in"?-w:-w/2)
 +    children();
 +  }
 +}
 +</code>
 +
  
 ---- ----
Ligne 1182: Ligne 1214:
 } }
 </code> </code>
 +
 +----
 +==== menger3D(d,maxit) ====
 +{{ :outilsit:fablab:openscad:lolscad:2022-02-09_00_52_31-lol2022-wip.scad_-_openscad.png?400|}}
 +Attention, la prévisualisation amène des erreurs d'affichage. Mais le résultat final est bon.
 +<code>
 +menger3D(d=100,maxit=3);
 +</code>
 +<code>
 +module menger3d(it=1,d,maxit){
 +    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);
 +
 +        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);
 +        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);
 +}}}
 +</code>
 +
 +----
 +==== jcube(d,maxit) ====
 +{{ :outilsit:fablab:openscad:lolscad:2022-02-09_01_18_16-lol2022-wip.scad_-_openscad.png?400|}}
 +<code>
 +jcube(d=100,maxit=4);
 +</code>
 +<code>
 +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>
 +
 +----
  
 ===== Modificateurs formes 2D et 3D ===== ===== Modificateurs formes 2D et 3D =====
Ligne 1451: Ligne 1560:
       children();       children();
     };     };
 +  }
 +}
 +</code>
 +
 +----
 +
 +==== mirror(a,x,y) ====
 +{{ :outilsit:fablab:openscad:lolscad:2022-02-09_00_18_42-lol2022-wip.scad_-_openscad.png?400|}}
 +<code>
 +abc=chaincurve(center(LetterL),3);
 +2D(abc);
 +translate([60,0,0]) 2D(mirror(abc,x=true));
 +translate([0,-80,0]) 2D(mirror(abc,y=true));
 +translate([60,-80,0]) 2D(mirror(abc,x=true,y=true));
 +</code>
 +<code>
 +function mirror(a,x,y)=let(
 +  xx=x==undef?1:x==true?-1:1,
 +  yy=y==undef?1:y==true?-1:1,
 +  aa=[
 +    for(i=[0:len(a)-1])
 +      each
 +      [
 +        [a[i][0]*xx,a[i][1]*yy]
 +      ]
 +  ]
 +)aa;
 +</code>
 +
 +----
 +
 +==== translate3D(a,b) & rescale3D(a,b) ====
 +{{ :outilsit:fablab:openscad:lolscad:2022-02-09_00_38_15-lol2022-wip.scad_-_openscad.png?400|}}
 +<code>
 +abc=cube([10,10,10],center=true);
 +def=translate3D(rescale3D(abc,2),[10,20,30]);
 +3D(abc);
 +3D(def);
 +</code>
 +<code>
 +function translate3D(a,b)=[[for(i=[0:len(a[0])-1]) a[0][i]+b],a[1]];
 +function rescale3D(a,s)=  [[for(i=[0:len(a[0])-1]) a[0][i]*s],a[1]];
 +</code>
 +
 +----
 +
 +==== skew(XY,XZ,YX,YZ,ZX,ZY) ====
 +{{ :outilsit:fablab:openscad:lolscad:2022-02-09_02_26_38-lol2022-wip.scad_-_openscad.png?400|}}
 +<code>
 +skew(XY=0.5) cube([25,25,25],center=true);
 +translate([50,0,0]) skew(XZ=0.5) cube([25,25,25],center=true);
 +translate([0,-50,0]) skew(YX=0.5) cube([25,25,25],center=true);
 +translate([50,-50,0]) skew(YZ=0.5) cube([25,25,25],center=true);
 +translate([0,-100,0]) skew(ZX=0.5) cube([25,25,25],center=true);
 +translate([50,-100,0]) skew(ZY=0.5) cube([25,25,25],center=true);
 +</code>
 +<code>
 +module skew(XY,XZ,YX,YZ,ZX,ZY){  
 +  matrice=[ 
 +    [1,XY,XZ,0], //[redimX, skewXY, skewXZ,translateX]
 +    [YX,1,YZ,0], //[SkewYX,RedimY,SkewYZ,translateY]
 +    [ZX,ZY,1,0] //[SkewZX, SkewZY,redimZ,TranslateZ]
 +  ]; 
 +  multmatrix(matrice){
 +    children();
   }   }
 } }
outilsit/fablab/laser/lol.1644361753.txt.gz · Dernière modification: 2022/02/09 00:09 de vanlindtmarc