$fn=64; // --- Parameters --- holder_width = 120; // Overall width of the block holder_depth = 100; // Overall depth of the block height_front = 25; // Height at the front edge height_back = 60; // Height at the back edge base_thickness = 10; // Solid material thickness below the slots slot_angle = 15; // Lean-back angle of the rulers (degrees) slot_spacing = 15; // Distance between each slot start_y = 15; // Y position of the first slot // Array of slot widths (from front to back) // Accommodates thin steel rulers up to thick aluminum/wood straight edges slots = [1.0, 1.5, 2.0, 2.5, 3.0, 4.0]; // --- Geometry --- difference() { // Main body: Sloped wedge design hull() { // Base footprint cube([holder_width, holder_depth, 0.01]); // Front vertical face cube([holder_width, 0.01, height_front]); // Back vertical face translate([0, holder_depth - 0.01, 0]) cube([holder_width, 0.01, height_back]); } // Cutout slots for rulers for (i = [0 : len(slots) - 1]) { y_pos = start_y + (i * slot_spacing); translate([-1, y_pos, base_thickness]) rotate([-slot_angle, 0, 0]) // Cutter dimensions extended to ensure clean manifold cuts cube([ holder_width + 2, slots[i], height_back + 20 ]); } }