9 screw_ctr_to_tr = [ 7.89, 3.87 ];
15 app_slop = 0.60; // total across both sides
19 tab_h = tot_height - ap_height;
21 real_ap_sz = [ ap_width, ap_height ] - app_slop * [ 1,1 ];
22 real_main_sz = real_ap_sz + wall_th * [ 2,1 ];
23 real_all_sz = real_main_sz + tab_h * [0,1];
25 screw_pos = real_all_sz - (screw_ctr_to_tr - 0.5 * app_slop * [1,1]);
28 rectfromto([ wall_th, -1 ],
29 [ real_main_sz[0] - wall_th, real_ap_sz[1] - wall_th ]);
38 rectfromto([0,0], real_all_sz);
41 module Grommet(){ ////toplevel
44 linextr(0, tab_th + wall_h) MainPlan();
45 linextr(0, tab_th) AllPlan();
47 linextr(-1, tab_th + wall_h + 1) GapPlan();
48 translate(concat(screw_pos, [-1]))
49 english_thread(diameter = 0.1380,
50 threads_per_inch = 32,