6 opening_topprotr = 1.54;
10 retain_empir_angle = 20;
11 retain_empir_stalkw = 1.0;
26 ins_irad = openingcnr_dia/2 + gap;
27 ins_orad = openingcnr_dia/2 + opening_height - gap;
28 ins_th = ins_orad - ins_irad;
31 handle_h = bot_overlap + ins_th;
32 handle_y0 = -ins_orad-bot_overlap;
33 handle_y1 = handle_y0 + handle_h;
35 handle_x1 = handle_x0 + bot_w + handle_w;
37 module InsertSection(){
38 translate([-ins_orad, 0]) square([ins_th, opening_topprotr]);
39 translate([0, -ins_orad]) square([ins_irad+1, ins_th]);
41 translate([0.1,0.1]) mirror([1,1]) square([100,100]);
44 circle(r= ins_irad, $fn=20);
49 module HandleSection(){
52 translate([handle_x0, handle_y0])
53 square([bot_w, handle_h]);
54 for (y= [handle_y1 - handle_rh/2,
55 handle_y1 - ins_th + handle_rh/2]) {
56 translate([handle_x1 - handle_rh/2, y])
57 circle(r= handle_rh/2, $fn=20);
61 for (x= [handle_x0 + bot_w + handle_rcut/2,
62 handle_x1 - handle_rh/2 - handle_rcut/2]) {
63 translate([x, handle_y1])
64 circle(r = handle_rcut/2, $fn=20);
69 for (y= [handle_y1 - handle_rh/2,
70 handle_y1 - 3*handle_rh/2])
71 translate([handle_x1 - handle_rh/2, y])
72 circle(r = handle_rh/2, $fn=20);
76 module RetainSection(){
77 rotate(180-retain_empir_angle)
78 translate([0,ins_orad]) circle(r=retain_rad, $fn=20);
81 module RetainCutout(){
82 rotate(180-retain_empir_angle)
83 translate([0,ins_orad]) {
85 circle(r=retain_rad + cutout_gap, $fn=20);
86 rotate(180 + retain_empir_angle/2)
87 translate([0, -retain_empir_stalkw])
88 square([100, retain_empir_stalkw*2]);
93 module WithRetainSection(){
108 color("red") RetainSection();
112 linear_extrude(height=2) WithRetainSection();
116 //WithRetainSection();