6 opening_topprotr = 1.54;
10 retain_empir_angle = 20;
11 retain_empir_stalkw = 1.0;
28 ins_irad = openingcnr_dia/2 + gap;
29 ins_orad = openingcnr_dia/2 + opening_height - gap;
30 ins_th = ins_orad - ins_irad;
33 handle_h = bot_overlap + ins_th;
34 handle_y0 = -ins_orad-bot_overlap;
35 handle_y1 = handle_y0 + handle_h;
37 handle_x1 = handle_x0 + bot_w + handle_w;
39 module InsertSection(){
41 translate([-ins_orad, 0]) square([ins_th, 0.1]);
42 translate([-ins_irad - topprotr_rad,
43 opening_topprotr - topprotr_rad])
44 circle(r=topprotr_rad, $fn=10);
46 translate([0, -ins_orad]) square([ins_irad+1, ins_th]);
48 translate([0.1,0.1]) mirror([1,1]) square([100,100]);
51 circle(r= ins_irad, $fn=20);
56 module HandleSection(){
59 translate([handle_x0, handle_y0])
60 square([bot_w, handle_h]);
61 for (y= [handle_y1 - handle_rh/2,
62 handle_y1 - ins_th + handle_rh/2]) {
63 translate([handle_x1 - handle_rh/2, y])
64 circle(r= handle_rh/2, $fn=20);
68 for (x= [handle_x0 + bot_w + handle_rcut/2,
69 handle_x1 - handle_rh/2 - handle_rcut/2]) {
70 translate([x, handle_y1])
71 circle(r = handle_rcut/2, $fn=20);
76 for (y= [handle_y1 - handle_rh/2,
77 handle_y1 - 3*handle_rh/2])
78 translate([handle_x1 - handle_rh/2, y])
79 circle(r = handle_rh/2, $fn=20);
83 module RetainSection(){
84 rotate(180-retain_empir_angle)
85 translate([0,ins_orad]) circle(r=retain_rad, $fn=20);
88 module RetainCutout(){
89 rotate(180-retain_empir_angle)
90 translate([0,ins_orad]) {
92 circle(r=retain_rad + cutout_gap, $fn=20);
93 rotate(180 + retain_empir_angle/2)
94 translate([0, -retain_empir_stalkw])
95 square([100, retain_empir_stalkw*2]);
100 module WithRetainSection(){
115 color("red") RetainSection();
119 linear_extrude(height=2) WithRetainSection();
123 //WithRetainSection();