// ZHUAN R1. Units mm. Editable concept, NOT fabrication drawings.
// Beam 1000 x 30 x 4; support spacing 500. All fixture dimensions provisional.
// EI loss belongs to the mechanical model; no notch is implied by orange color.
beam_L=1000; beam_b=30; beam_h=4; support_gap=500;
beam_center_z=90; settlement_mm=0; zone=1; show_sensors=true;
$fn=40;
module roller(x,z){translate([x,0,z])rotate([90,0,0])cylinder(h=52,r=5,center=true);}
module pedestal(x,mid=false){
  dz=mid?-settlement_mm:0;
  color([.48,.54,.60]){
    translate([x-18,-35,12])cube([36,70,54]);
    translate([x-23,-32,66+dz])cube([46,64,12]);
    if(mid){
      translate([x-22,-34,76+dz])cube([44,5,31]);
      translate([x-22,29,76+dz])cube([44,5,31]);
      translate([x-22,-34,103+dz])cube([44,68,5]);
    }
  }
  color([.65,.70,.74])roller(x,83+dz);
  if(mid)color([.65,.70,.74])roller(x,97+dz);
}
color([.16,.21,.27])translate([-50,-80,0])cube([1100,160,12]);
pedestal(0);pedestal(support_gap,true);pedestal(2*support_gap);
color([.31,.51,.70])translate([0,-beam_b/2,beam_center_z-beam_h/2])cube([beam_L,beam_b,beam_h]);
if(show_sensors)for(x=[150,350,450,550,650,850])
  color([.12,.65,.58])translate([x-5,-7,beam_center_z+beam_h/2+.1])cube([10,14,.5]);
// Nonzero settlement moves only the fixture in this CAD concept.
// Deformed beam geometry is exported separately by build.mjs at physical scale.
