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