diff --git a/modeles-3d/cubion-agregat.scad b/modeles-3d/cubion-agregat.scad new file mode 100644 index 0000000..10c5e8c --- /dev/null +++ b/modeles-3d/cubion-agregat.scad @@ -0,0 +1,19 @@ +// Agrégat de cubions — n×n×n space-cubions amarrés : le pavage de l'espace sans vide, joints lisibles, anneaux fusionnés aux interfaces +// params: [{"k": "n", "v": 2, "min": 1, "max": 4, "step": 1}, {"k": "arete", "v": 20, "min": 10, "max": 40, "step": 2}] + +module cubion_agregat(n,arete){ + a=arete; f=a/16; off=-(n-1)*a/2; + for(x=[0:n-1])for(y=[0:n-1])for(z=[0:n-1]) translate([off+x*a,off+y*a,off+z*a]){ + // ossature de la cellule + difference(){ cube(a,center=true); + cube([a-2*f,a-2*f,a+2],center=true); + cube([a-2*f,a+2,a-2*f],center=true); + cube([a+2,a-2*f,a-2*f],center=true); } + // panneaux en leger retrait : le joint entre cubions reste lisible + cube(a-f,center=true); + // anneaux d'amarrage sur les 6 faces (fusionnent aux interfaces : pavage sans vide) + for(r=[[0,0,0],[90,0,0],[0,90,0]]) rotate(r) for(s=[-1,1]) translate([0,0,s*a/2]) + difference(){ cylinder(h=f,d=a/3,center=true,$fn=24); cylinder(h=f+1,d=a/4,center=true,$fn=24); } + } +} +cubion_agregat(n,arete); \ No newline at end of file diff --git a/modeles-3d/cubion-docking-face.scad b/modeles-3d/cubion-docking-face.scad new file mode 100644 index 0000000..4f95490 --- /dev/null +++ b/modeles-3d/cubion-docking-face.scad @@ -0,0 +1,17 @@ +// Face d'amarrage cubion — la face d'amarrage seule : cadre + anneau soft-capture androgyne + passage central (800 mm reels a l'echelle) + 4 connecteurs +// params: [{"k": "face", "v": 64, "min": 32, "max": 128, "step": 4}, {"k": "diametre_passage", "v": 16, "min": 8, "max": 32, "step": 1}, {"k": "wall", "v": 4, "min": 2, "max": 8, "step": 0.5}] + +module cubion_docking_face(face,diametre_passage,wall){ + p=diametre_passage; $fn=64; + // cadre : plaque + passage central (800 mm reels a l'echelle 1:50) + 4 percages + difference(){ cube([face,face,wall],center=true); + cylinder(h=wall+2,d=p,center=true); + for(i=[0:3]) rotate([0,0,45+i*90]) translate([face*0.44,0,0]) cylinder(h=wall+2,d=wall,center=true,$fn=24); } + // anneau soft-capture androgyne + translate([0,0,wall/2]) difference(){ cylinder(h=wall*1.2,d=p*1.35); translate([0,0,-0.5]) cylinder(h=wall*1.2+1,d=p*1.08); } + // 3 petales de guidage a 120 deg (androgyne : tout port s'amarre a tout port) + for(i=[0:2]) rotate([0,0,i*120]) translate([p*0.6,0,wall/2+wall*0.6]) cube([wall*1.4,p/5,wall*1.2],center=true); + // 4 connecteurs structurels aux coins + for(i=[0:3]) rotate([0,0,45+i*90]) translate([face*0.38,0,wall/2+wall*0.4]) cube([face/9,face/9,wall*0.8],center=true); +} +cubion_docking_face(face,diametre_passage,wall); \ No newline at end of file diff --git a/modeles-3d/space-cubion.scad b/modeles-3d/space-cubion.scad new file mode 100644 index 0000000..4300bb6 --- /dev/null +++ b/modeles-3d/space-cubion.scad @@ -0,0 +1,25 @@ +// Space Cubion — le vaisseau (arete reelle 4 m = 2⁸ bions) : ossature + 6 faces d'amarrage androgynes (anneau soft-capture, 3 petales, 4 connecteurs) + hublots +// params: [{"k": "arete", "v": 40, "min": 24, "max": 96, "step": 4}, {"k": "detail", "v": 2, "min": 1, "max": 4, "step": 1}] + +module space_cubion(arete,detail){ + a=arete; f=a/16; fn=16*detail; p=a/5; + // ossature : les 12 aretes du cube (arete reelle 4 m = 2^8 bions de 16 mm) + difference(){ cube(a,center=true); + cube([a-2*f,a-2*f,a+2],center=true); + cube([a-2*f,a+2,a-2*f],center=true); + cube([a+2,a-2*f,a-2*f],center=true); } + // 6 faces d'amarrage identiques (androgynes : tout port s'amarre a tout port) + for(r=[[0,0,0],[90,0,0],[0,90,0]]) rotate(r) for(s=[-1,1]) translate([0,0,s*(a/2-f/2)]){ + // panneau + passage central + couronne de hublots + difference(){ cube([a-2*f,a-2*f,f/2],center=true); + cylinder(h=f+2,d=p,center=true,$fn=fn); + for(i=[0:4*detail-1]) rotate([0,0,i*360/(4*detail)]) translate([a*0.34,0,0]) cylinder(h=f+2,d=a/14,center=true,$fn=fn); } + // anneau soft-capture + difference(){ cylinder(h=f,d=p*1.4,center=true,$fn=fn); cylinder(h=f+2,d=p*1.1,center=true,$fn=fn); } + // 3 petales de guidage a 120 deg + for(i=[0:2]) rotate([0,0,i*120]) translate([p*0.62,0,s*f*0.6]) cube([f*0.8,p/4,f*0.8],center=true); + // 4 connecteurs structurels + for(i=[0:3]) rotate([0,0,45+i*90]) translate([a*0.3,0,0]) cube([a/12,a/12,f],center=true); + } +} +space_cubion(arete,detail); \ No newline at end of file