modèles 3D : les 3 recettes OpenSCAD (vaisseau, face d'amarrage, agrégat)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
cloudion-labo
2026-08-12 00:34:50 +00:00
parent 63d87c230f
commit fca2a361f4
3 changed files with 61 additions and 0 deletions

View File

@@ -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);

View File

@@ -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);

View File

@@ -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);