3 opening_height = 7.84 - 0.3;
6 opening_topprotr = 1.54;
10 retain_empir_angle = 20;
11 retain_empir_stalkw = 0.8;
13 retain_empir_inward = 0.65;
35 ins_irad = openingcnr_dia/2 + gap;
36 ins_orad = openingcnr_dia/2 + opening_height - gap;
37 ins_th = ins_orad - ins_irad;
40 handle_h = bot_overlap + ins_th;
41 handle_y0 = -ins_orad-bot_overlap;
42 handle_y1 = handle_y0 + handle_h;
44 handle_x1 = handle_x0 + bot_w + handle_w;
46 module InsertSection(){
48 translate([-ins_orad, 0]) square([ins_th, 0.1]);
49 translate([-ins_irad - topprotr_rad,
50 opening_topprotr - topprotr_rad])
51 circle(r=topprotr_rad, $fn=10);
53 translate([0, -ins_orad]) square([ins_irad+1, ins_th]);
55 translate([0.1,0.1]) mirror([1,1]) square([100,100]);
58 circle(r= ins_irad, $fn=20);
63 module HandleSection(){
66 translate([handle_x0, handle_y0])
67 square([bot_w, handle_h]);
68 for (y= [handle_y1 - handle_rh/2,
69 handle_y1 - ins_th + handle_rh/2]) {
70 translate([handle_x1 - handle_rh/2, y])
71 circle(r= handle_rh/2, $fn=20);
75 for (x= [handle_x0 + bot_w + handle_rcut/2,
76 handle_x1 - handle_rh/2 - handle_rcut/2]) {
77 translate([x, handle_y1])
78 circle(r = handle_rcut/2, $fn=20);
83 for (y= [handle_y1 - handle_rh/2,
84 handle_y1 - 3*handle_rh/2])
85 translate([handle_x1 - handle_rh/2, y])
86 circle(r = handle_rh/2, $fn=20);
90 module RetainSection(){
91 rotate(180-retain_empir_angle)
92 translate([0, ins_orad - retain_empir_inward])
93 circle(r=retain_rad, $fn=20);
96 module RetainCutout(gapping=false){
97 rotate(180-retain_empir_angle)
98 translate([0, ins_orad - retain_empir_inward]) {
100 circle(r=retain_rad + cutout_gap, $fn=20);
102 rotate(180 + retain_empir_angle/2)
103 translate([0, -retain_empir_stalkw])
104 square([100, retain_empir_stalkw*2]);
109 module GappingSection(){
117 module WithRetainSection(){
126 module BasicSection(){
132 bs0 = retaining_len + overret_gaplen;
133 bs1 = bs0 + overret_hch;
134 linear_extrude(height=total_len, convexity=100) GappingSection();
135 linear_extrude(height=retaining_len, convexity=100) WithRetainSection();
136 translate([0,0, bs1]) linear_extrude(height= total_len - bs1)
138 translate([0,0, bs1+0.1]) mirror([0,0,1]) {
139 intersection_for (sl=[0,1]) {
140 multmatrix([[1,0,0,0],
144 linear_extrude(height= overret_gaplen+1, convexity=100)
156 color("red") RetainSection();
160 linear_extrude(height=2) WithRetainSection();
164 //WithRetainSection();