5 nook_th = 12.41 + 0.50;
6 nook_w = 127.12 + 0.75;
7 nook_h = 123.44 + 21.88 + 21.05 + 0.75;
34 spp1 = spp0 + case_th * [-1,0];
35 spp9 = spp0 + ledge_h * [0,-1];
36 spp8 = spp9 + nook_th * [0,-1];
37 spp7 = spp8 + case_th * [-1,-1];
39 spp11y = spp1[1] - tape_th;
40 spp4y = 0.5 * (spp0[1] + spp7[1]);
41 spp3y = spp4y + tape_inside/2; spp5y = spp4y - tape_inside/2;
42 spp2y = spp3y + tape_th; spp6y = spp5y - tape_th;
44 spp20 = spp8 + nook_cnr_rad * [1,0];
48 tppB = spp1 + [0, gap[1]];
49 tppC = tppB + lid_th * [0,1];
50 tppD = [ spp20x, tppC[1] ];
51 tppE = [ spp20x, tppB[1] ];
52 tppF = tppA + ledge_w * [1,0];
53 tppG = tppF + ledge_h * [0,-1];
54 tppH = [ tppA[0], tppG[1] ];
56 tppJx = tppA[0] + tape_th;
58 tppK = [ tppC[0], tppG[1] ];
59 spp31 = tppK - [0, gap[1]];
60 spp30 = [ spp8[0], spp31[1] ];
62 nom_cnr = 0.5 * [nook_w, nook_h, 0] - nook_cnr_rad * [1,1,0];
64 etxa = nom_cnr[0] - engage_l2;
65 etxb = etxa - engage_l1;
66 etxc = -(nom_cnr[0] - engage_l2);
68 module RightSideMainProfile() {
69 rectfromto(spp7, spp0);
70 rectfromto(spp7, spp20);
73 module LeftSideMainProfile() {
74 rectfromto(spp7, spp30);
75 rectfromto(spp7, spp20);
78 module TopTapeCutout() {
84 [ tppA[0], tppC[1]+1 ]]);
87 module RightTopMainProfile() {
88 l = [ tppA, tppB, tppC, tppD, tppE, tppF, tppG, tppH ];
92 module LeftTopMainProfile() {
93 l = [ tppC, tppD, tppE, tppF, tppG, tppK ];
97 module SideTapeCutout1(y0,y1) {
98 rectfromto([ spp7[0]-1, y0 ],
102 module SideTapeCutout() {
103 SideTapeCutout1(spp6y, spp5y);
104 SideTapeCutout1(spp3y, spp2y);
105 SideTapeCutout1(spp3y, spp2y);
106 SideTapeCutout1(spp11y, spp1[1] + 1);
109 module Demo(){ ////toplevel
110 translate([0,0,-2]) LeftSideMainProfile();
111 translate([0,0,-2]) color("yellow") LeftTopMainProfile();
112 color("red") difference(){
113 LeftSideMainProfile();
116 translate([0,0,0]) color("purple") difference(){
117 LeftTopMainProfile();
120 translate([nook_cnr_rad*2 + 5, 0,0]) mirror([1,0,0]) {
121 color("red") RightSideMainProfile();
122 color("purple") RightTopMainProfile();
127 module FaceCore(z0,z1, extra_left, extra_right){
128 for (mx=[0,1]) mirror([mx,0,0]) {
129 for (my=[0,1]) mirror([0,my,0]) {
130 translate(-nom_cnr) {
131 rotate_extrude(angle=90, convexity=10)
132 translate(-[1,0,0] * nook_cnr_rad)
136 translate([nook_w/2, 0,0])
137 linextr_y_xz(-nom_cnr[1]-0.1, nom_cnr[1]+0.1)
140 for (my=[0,1]) mirror([0,my,0]) {
141 translate([0, -nook_h/2, 0]) {
142 linextr_x_yz(-nom_cnr[0]-0.1, etxc + extra_left) children(0);
143 linextr_x_yz(etxc - extra_right, etxb + extra_right) children(1);
144 linextr_x_yz(etxb - extra_left, etxa + extra_left) children(0);
145 linextr_x_yz(etxa - extra_right, nom_cnr[0]+0.1) children(1);
150 rectfromto(-nom_cnr, nom_cnr);
154 module Base(){ ////toplevel
155 FaceCore(0,0, 0.3, 0) {
156 LeftSideMainProfile();
157 RightSideMainProfile();
161 module Top(){ ////toplevel
162 FaceCore(0,0, -gap[0], gap[0] + 0.3) {
163 LeftTopMainProfile();
164 RightTopMainProfile();
168 module TestExtrude(){
170 linextr_y_xz(-test_pillar, tape_w+test_pillar) children(0);
171 linextr_y_xz( 0, tape_w ) children(1);
175 module TestSide(){ ////toplevel
176 TestExtrude() { LeftSideMainProfile(); SideTapeCutout(); }
179 module TestTop(){ ////toplevel
180 TestExtrude() { LeftTopMainProfile(); TopTapeCutout(); }
182 module TestTopPrint(){ ////toplevel
183 rotate([180,0,0]) TestTop();