// -*- C -*- include nook_th = 8; // xxx nook_cnr_rad = 10; case_th = 2.5; ledge_w = 4; tape_th = 1.5; tape_inside = 2.0; // calculated ledge_h = case_th; spp0 = [0,0]; spp1 = spp0 + case_th * [-1,0]; spp9 = spp0 + ledge_h * [0,-1]; spp8 = spp9 + nook_th * [0,-1]; spp7 = spp8 + case_th * [-1,-1]; spp11y = spp1[1] - tape_th; spp4y = 0.5 * (spp0[1] + spp8[1]); spp3y = spp4y + tape_inside/2; spp5y = spp4y - tape_inside/2; spp2y = spp3y + tape_th; spp6y = spp5y - tape_th; spp20 = spp8 + nook_cnr_rad * [1,0]; spp20x = spp20[0]; module SideMainProfile() { rectfromto(spp7, spp0); rectfromto(spp7, spp20); } module SideTapeCutout1(y0,y1) { rectfromto([ spp7[0]-1, y0 ], [ spp8[0]+1, y1 ]); } module SideTapeCutout() { SideTapeCutout1(spp6y, spp5y); SideTapeCutout1(spp3y, spp2y); SideTapeCutout1(spp3y, spp2y); SideTapeCutout1(spp11y, spp1[1] + 1); } module Demo(){ translate([0,0,-2]) color("red") SideMainProfile(); difference(){ SideMainProfile(); SideTapeCutout(); } //%SideTapeCutout(); } Demo();