}
}
-module Retainer(){ ////toplevel
+module RetainerElevation(){
difference(){
union(){
- linextr(0, retainer_th) {
- difference(){
- union(){
- rectfromto([ -retainer_ea_x, retainer_z_ctr ],
- [ +retainer_ea_x, bracket_top_z + retainer_adjust/2 ]);
- // TODO make it round at bottom
- }
- translate([ 0, screw_hole_z ])
- Oval( screw_dia/2, retainer_adjust );
- rectfromto([ -retainer_void_w/2, retainer_z + retainer_th ],
- [ +retainer_void_w/2,
- screw_hole_z - retainer_adjust/2 ]);
- }
- }
- linextr(0, retainer_tab)
- translate([ 0, retainer_z_ctr ])
- circle(r = retainer_radius + retainer_th);
+ rectfromto([ -retainer_ea_x, retainer_z_ctr ],
+ [ +retainer_ea_x, bracket_top_z + retainer_adjust/2 ]);
+ // TODO make it round at bottom
}
- linextr(-1, retainer_tab+1)
- translate([ 0, retainer_z_ctr ])
+ translate([ 0, screw_hole_z ])
+ Oval( screw_dia/2, retainer_adjust );
+ translate([ 0, retainer_z_ctr ])
circle(r = retainer_radius);
+ rectfromto([ -retainer_void_w/2, retainer_z + retainer_th ],
+ [ +retainer_void_w/2,
+ screw_hole_z - retainer_adjust/2 ]);
+ }
+}
+
+module Retainer(){ ////toplevel
+ linextr(0, retainer_th) {
+ RetainerElevation();
+ }
+ linextr(0, retainer_tab) {
+ intersection(){
+ RetainerElevation();
+ translate([ 0, retainer_z_ctr ])
+ circle(r = retainer_radius + retainer_th);
+ }
}
}