ly_r = lanyard_half_dia / 2;
ly_rc = ly_r * 2;
+ly_re = 10; // xxx
// prop recess in case
q_z = -(ly_rc + ly_r);
d_x = -ly_rc;
+ oec_y = lanyard_entry_rel_breadth * ly_r;
+
translate([d_x, 0, q_z]) {
intersection(){
rotate([90,0,0])
circleat([d_x, q_z], ly_rc);
}
}
+
+ translate([0,0,q_z]){
+ for (my=[0,1])
+ mirror([0,my,0]){
+ translate([0, oec_y, 0]){
+ difference(){
+ translate(ly_re * [-1,0,-1])
+ cube(ly_re * [2,1,1]);
+ rotate_extrude(convexity=10)
+ circleat([ly_re + ly_r, 0], ly_re);
+ }
+ }
+ }
+ }
}
module LanyardCutout(l){