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:
19
modeles-3d/cubion-agregat.scad
Normal file
19
modeles-3d/cubion-agregat.scad
Normal 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);
|
||||||
17
modeles-3d/cubion-docking-face.scad
Normal file
17
modeles-3d/cubion-docking-face.scad
Normal 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);
|
||||||
25
modeles-3d/space-cubion.scad
Normal file
25
modeles-3d/space-cubion.scad
Normal 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);
|
||||||
Reference in New Issue
Block a user