// Base is the bottom part where the recipe will go into $base_width = 150; $base_depth = 14; $base_height = 14; // The size of the gap the recipe needs to fit into $recipe_gap_lip = 8; $recipe_gap = 5; $recipe_angle = 30; // degrees // The support part in the back to hold the recipe $frame_width = 20; $frame_depth = $base_depth / 2 - $recipe_gap / 2; $frame_height = 180; $support_width = $frame_width; $support_depth = $frame_height * cos(90 - $recipe_angle); $support_height = 5; translate([$base_width / 2 - $support_width / 2, -1 * $support_depth, 0]) support(); rotate([$recipe_angle, 0, 0]) holder(); module support() { cube([$support_width, $support_depth, $support_height]); }; module holder() { translate([$base_width / 2 - $frame_width / 2, 0, 0]) cube([$frame_width, $frame_depth, $frame_height]); difference() { cube([$base_width, $base_depth, $base_height]); translate([-1 * $base_width, $base_depth / 2 - $recipe_gap / 2, $base_height - $recipe_gap_lip]) cube([$base_width * 3, $recipe_gap, $base_height * 2]); }; };