adapt_main_top_y = brk_bottom_y + general_gap_y;
// on LHS, so -ve
-rack_rail_x = -(rack_width_inner + rack_rail_dia/2);
-rack_rail_outer_x = -(rack_width_inner + rack_rail_dia);
+rack_rail_x = -(rack_width_inner/2 + rack_rail_dia/2);
+rack_rail_outer_x = -(rack_width_inner/2 + rack_rail_dia);
grasp_large_r = (rack_rail_dia + grasp_sz)/2;
grasp_large_x = rack_rail_outer_x + grasp_large_r;
}
}
+module BlockElevation(){
+ rectfromto([ -rack_width_inner/2, adapt_main_top_y ],
+ [ +rack_width_inner/2, adapt_main_top_y - main_sz_y ]);
+}
+
module Principal(){
// calculated
$rack_rail_y = brk_bottom_y - $elevation_nominal
difference(){
linextr(0, main_sz_z){
GraspElevation();
+ BlockElevation();
+ mirror([1,0]) GraspElevation();
}
linextr(-10, main_sz_z+10) {
- translate([ rack_rail_x, $rack_rail_y ]){
- hull(){
- for (dx = [-rack_rail_dia, 0])
- translate([dx, 0])
- circle(r= rack_rail_dia/2);
+ for (mx=[0,1]) {
+ mirror([mx,0]) {
+ translate([ rack_rail_x, $rack_rail_y ]){
+ hull(){
+ for (dx = [-rack_rail_dia, 0])
+ translate([dx, 0])
+ circle(r= rack_rail_dia/2);
+ }
+ }
}
- }
+ }
}
}
}