$fn = 64; // --- Parameters --- base_width = 90; base_depth = 50; base_height_front = 35; base_height_back = 45; corner_radius = 5; // Utility knife (e.g., standard Stanley knife) utility_slot_width = 35; utility_slot_depth = 12; utility_cut_depth = 38; // Hobby knives (e.g., X-Acto knives) hobby_slot_diameter = 12; hobby_cut_depth = 38; module safe_knife_holder() { difference() { // Main body with an ergonomic slanted top hull() { // Front corners for (x = [corner_radius, base_width - corner_radius]) { translate([x, corner_radius, 0]) cylinder(r=corner_radius, h=base_height_front); } // Back corners for (x = [corner_radius, base_width - corner_radius]) { translate([x, base_depth - corner_radius, 0]) cylinder(r=corner_radius, h=base_height_back); } } // Utility knife slot (Left side) // Extends well above the top to ensure a clean boolean cut translate([28 - utility_slot_width/2, base_depth/2 - utility_slot_depth/2, base_height_back - utility_cut_depth]) cube([utility_slot_width, utility_slot_depth, base_height_back + 10]); // Hobby knife slot 1 (Right side, back) translate([68, base_depth/2 + 10, base_height_back - hobby_cut_depth]) cylinder(d=hobby_slot_diameter, h=base_height_back + 10); // Hobby knife slot 2 (Right side, front) translate([68, base_depth/2 - 10, base_height_back - hobby_cut_depth]) cylinder(d=hobby_slot_diameter, h=base_height_back + 10); } } // Render the model safe_knife_holder();