// License: CC0 // // To the extent possible under law, Clementine Computing LLC has waived // all copyright and related or neighboring rights to this file. // // This work is published from: United States. // include module PopufareHousingFrontBottomPlate() { w = POPUFARE_HOUSING_WIDTH; h = POPUFARE_FRONT_HEIGHT; bx = POPUFARE_BRACKET_CX; br = POPUFARE_BRACKET_D/2.0; de = POPUFARE_BRACKET_DE; frontlip = POPUFARE_HOUSING_FRONT_LIP_HEIGHT; mt = _MATERIAL_THICKNESS; lip = _MATERIAL_THICKNESS; lip_top = _MATERIAL_THICKNESS * sqrt(2.0); h_tot = h - lip_top + lip; fudge = 10; difference() { union() { square([w,h], center=true); // left/right overhang // translate([-w/2-lip, -h/2 ]) square([lip,h_tot]); translate([ w/2, -h/2 ]) square([lip,h_tot]); }; // legacy housing fron lip // translate([0, -(h/2 - frontlip/2)]) square([w + 2*lip,frontlip], center=true); // get rid of ghost edges // translate([0, -(h/2 - frontlip/2)]) square([w + 2*lip + 1,frontlip], center=true); translate([0, -(h/2)]) square([w + 2*lip + 1,frontlip/2], center=true); // shave off top front panel to accomodate angle plate. // fudge to guard against stray geometry // translate([0, (h/2 - 0.4999*lip_top)]) square([2*w, lip_top + 0.15], center=true); // side plate bracket attachment // translate([ -(w/2 - bx), 0]) circle(br); translate([ (w/2 - bx), 0]) circle(br); // bottom lip attachment // translate([ -(w/2 - 8*mt), -(h/2 - bx)]) circle(br); translate([ (w/2 - 8*mt), -(h/2 - bx)]) circle(br); } } //PopufareHousingFrontBottomPlate();