cases = [ //Case,thickness+~0.2,Distance between parts,tape width ["0603",1,4,8], ["1206",1.4,4,8], ["SOD80",1.7,4,8] ]; //Selected Package selected_part_size = "SOD80"; // [ "0603","1206","SOD80"] //Amount of parts to be stored parts = 1000; //amount of parts in //Inner Diameter of filled storage inner_diameter=16; //Amount of Storages to fit on Rail storage_amount=13; /* [Hidden] */ function selector(item) = cases[search([item], cases)[0]]; active_case = selector(selected_part_size); tape_thickness = active_case[1]; distance_between_parts = active_case[2]; total_distance = parts*distance_between_parts; tape_width= active_case[3]; part_width=tape_width+2.4; outerdiameter=ceil(sqrt(4*tape_thickness*total_distance/(3.1415)+inner_diameter*inner_diameter)); boxdim=outerdiameter+10; boxdimhalf = boxdim/2; holder_thickness=part_width*storage_amount+5; translate([boxdimhalf+4.5,0,0]) { cube([10,boxdim+18.5,holder_thickness],center=true); //main holder part } translate([boxdimhalf-9.45,boxdimhalf-2,0]){ cube([7.6,10,holder_thickness],center=true); //Rear retention nose } translate([boxdimhalf-3.25,boxdimhalf-4.25,0])cube([20,6,holder_thickness],center=true); translate([boxdimhalf-2.8,boxdimhalf-5.8,0]) rotate([0,0,-10]) cube([20,6,holder_thickness],center=true); translate([boxdimhalf,boxdimhalf-8,0])rotate([0,0,30]) cube([8,15,holder_thickness],center=true); difference(){ translate([boxdimhalf+4,boxdimhalf+4,0])rotate([0,0,-15]) cube([8,12,holder_thickness],center=true); translate([boxdimhalf+8,boxdimhalf+9.25,0])cube([15,5,holder_thickness+1],center=true); } translate([boxdimhalf-6.5,-boxdimhalf-0.75,0])rotate([0,0,30]) cube([7,15.5,holder_thickness],center=true); translate([boxdimhalf-1.6131,-boxdimhalf-4.7117,0]) cube([8.05,9,holder_thickness],center=true);