/* */ include include include include PART=""; // [inner, clear, bezel, mount] CASE_X=64.70; CASE_Y=80.00; WALL=.8; BEZEL_Z=.6; MOUNT_Z=7; REV="RC1"; /* [Render Options] */ render_fs=1; render_fn=0; render_fa=7; // Set Render Options $fs= ($preview) ? $fs : render_fs; $fn= ($preview) ? $fn : render_fn; $fa= ($preview) ? $fa : render_fa; module govee_clear(x=CASE_X, y=CASE_Y, wall=WALL, lz=BEZEL_Z, z=MOUNT_Z, align=V_CENTER) { down(z/2)difference() { union() { up(lz) cuboid([x,y,z], fillet=7, edges=EDGES_Z_ALL, align=V_TOP); down(.01) cuboid([x-4,y-4,lz+.02], fillet=7, edges=EDGES_Z_ALL, align=V_TOP); } up(z)fwd(y/2)xrot(45)cuboid([5,1,1]); } } module govee_bezel(x=CASE_X, y=CASE_Y, wall=WALL, z=MOUNT_Z, align=V_CENTER, orient=ORIENT_Z) { orient_and_align([x,y,z], align=align, orient=orient) difference() { union() { cuboid([x+2*wall,y+2*wall,z], fillet=7, edges=EDGES_Z_ALL); } govee_clear(align=V_TOP); } } module govee_mount() { back(CASE_Y/2+WALL) difference() { hull() { back(10)xspread(n=2, l=60) cyl(d=8,h=6, align=V_TOP); cuboid([50,1,3], align=V_TOP); } up(3)back(10-7+3.5-WALL)cuboid([CASE_X-16,14,10], align=V_TOP); back(10) xspread(n=2, l=60)xrot(180)m3s_clear(bl=15, bz=-10, sh=.25); } govee_bezel(align=V_TOP); } if (PART == "clear") govee_clear(align=V_TOP); if (PART == "bezel") govee_bezel(align=V_TOP); if (PART == "mount") { difference() { govee_mount(align=V_TOP); back(CASE_Y/2 + 4) linear_extrude(height=1) mirror([1,0,0]) text(REV, halign="bottom"); } } if (PART == "mount") { back(CASE_Y/2 + 4) linear_extrude(height=1) mirror([1,0,0])text(REV, halign="bottom"); }