///////////////////////////////////////////////////////////////////////////////// // Female part of the box. // // Author: Maximilian Stiefel // Last modification: 31.07.2017 ///////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////// // Includes ///////////////////////////////////////////////////////////////////////////////// // Dimesnions include use // Module for raw box without any lids include use // Module for screw holes include use //////////////////////////////////////////////////////////////////////////////// // Vars ///////////////////////////////////////////////////////////////////////////////// // Set minimum angle of a fragment $fa = 0.5; // Set minimum size of a fragment $fs = 0.5; //////////////////////////////////////////////////////////////////////////////// // Action ///////////////////////////////////////////////////////////////////////////////// color(myColor1) { translate([0, 0, housing_outside_height/2]) //rotate([180, 0, 0]) { difference() { // Draw hole box box(); union() { // Cut off half of it translate([0, 0, housing_outside_height/4]) cube([housing_outside_width + 1, housing_outside_depth + 1, housing_outside_height/2 + 0.01], center = true); // Draw cylinders for mortise joint translate([0, 0, -(mortise_joint_height - mortise_joint_cone_height)/2]) screw_holes(housing_inside_width + housing_thickness/2, housing_inside_depth + housing_thickness/2, mortise_joint_dia, mortise_joint_height - mortise_joint_cone_height); // Draw cones rotate([180, 0, 0]) for(x=[-0.5,+0.5]) for(y=[-0.5,+0.5]) translate([x*(housing_inside_width + housing_thickness/2), y*(housing_inside_depth + housing_thickness/2), mortise_joint_height - mortise_joint_cone_height/2 - 0.01]) cylinder(r1 = mortise_joint_dia/2, r2 = 1, mortise_joint_cone_height, center = true); } } } }