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:54]
vanlindtmarc
outilsit:fablab:laser:lol [2022/02/09 02:27] (Version actuelle)
vanlindtmarc
Ligne 1010: 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 1192: Ligne 1223:
 </code> </code>
 <code> <code>
-module menger3D(d,maxit){ +module menger3d(it=1,d,maxit){ 
-intersection(){ +    if (it==maxit){ 
-translate([-d/2,-d/2,-d]) linear_extrude(d*2) menger(d=d,maxit=maxit); +        cube([d,d,d],center=true); 
-rotate([90,0,0]) +    } 
-translate([-d/2,-d/2,-d]) linear_extrude(d*2) menger(d=d,maxit=maxit); +    if (it<=maxit){ 
-rotate([90,0,90]) +        union(){ 
-translate([-d/2,-d/2,-d]) linear_extrude(d*2) menger(d=d,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); 
 + 
 +        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> </code>
  
Ligne 1515: Ligne 1602:
 function translate3D(a,b)=[[for(i=[0:len(a[0])-1]) a[0][i]+b],a[1]]; 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]]; 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();
 +  }
 +}
 </code> </code>
  
outilsit/fablab/laser/lol.1644364456.txt.gz · Dernière modification: 2022/02/09 00:54 de vanlindtmarc