← Back to Models
Parametric Furniture Corner Drilling Jig for Panels (Euro/Confirmat Screws)

Parametric Furniture Corner Drilling Jig for Panels (Euro/Confirmat Screws)

by Oleg S ·

This is a fully parametric corner drilling jig designed to easily prepare furniture panels (chipboard/LDSP) for Confirmat (euro) screws.If you are tired of searching for a jig that perfectly matches your custom board thickness, this OpenSCAD model is the ultimate solution. Simply adapt it to your specific hardware and materials.

📐 Fully Parametric: Adjust the board thickness, tolerance/clearance, drill hole diameters, and exact offsets via the OpenSCAD Customizer.
📐 Perfect Alignment: The vertical front face fits perfectly flush with the edge of your panel for accurate, non-slip drilling.

Customizable Parameters:
board_thickness: Set it to 16mm, 18mm, or any custom panel size.
board_tolerance: Adds a tight or loose clearance gap to compensate for laminate irregularities.
hole_diameter: Matches the diameter of your step-drill or standard drill bit.
hole_1_height & hole_2_height: Custom vertical offsets from the channel floor.
total_width & total_length: Controls the length of the side guiding arms.

Interactive Preview & Customizer

3D preview with OpenSCAD rendering on parameter changes.

Loading previewLoading preview...

Nominal width of LDSP board, mm

step 0.5

Board tolerance / clearance (погрешность ламината/зазор), mm

step 0.05

Drill guide hole diameter, mm

step 0.5

Height of lower drill hole from channel floor, mm

step 1

Height of upper drill hole from channel floor, mm

step 1

Tower depth (thickness in Y direction), mm

step 1

Width of tower at back face (tapers narrower towards back), mm

step 0.5

Fillet / rounding radius for tower corners and top edges, mm

step 0.5

Total transverse width (across side arms), mm

step 1

Total length (front to back), mm

step 1

Total height of drill tower, mm

step 1

Base channel wall thickness, mm

step 0.5

Base bottom floor thickness, mm

step 0.5

Height of channel guide walls, mm

step 1
step 0.5
WASM compiler loads on first parameter change.
Download

Prompt

-

OpenSCAD Code

// Furniture drilling jig for LDSP (chipboard)
// Parametric corner drilling jig with trapezoidal tower cross-section and rounded outer edges/corners

/* [Main Customizable Parameters] */
// Nominal width of LDSP board, mm
board_thickness = 16; // [10:0.5:32]

// Board tolerance / clearance (погрешность ламината/зазор), mm
board_tolerance = 0.2; // [0.1:0.05:0.6]

// Drill guide hole diameter, mm
hole_diameter = 4.5; // [3:0.5:15]

// Height of lower drill hole from channel floor, mm
hole_1_height = 25; // [5:1:40]

// Height of upper drill hole from channel floor, mm
hole_2_height = 50; // [25:1:65]

/* [Tower Parameters] */
// Tower depth (thickness in Y direction), mm
tower_depth = 15; // [10:1:40]

// Width of tower at back face (tapers narrower towards back), mm
tower_back_width = 10; // [6:0.5:25]

// Fillet / rounding radius for tower corners and top edges, mm
tower_corner_radius = 2.5; // [0.5:0.5:5]

/* [Jig Dimensions] */
// Total transverse width (across side arms), mm
total_width = 60; // [50:1:150]

// Total length (front to back), mm
total_length = 60; // [60:1:150]

// Total height of drill tower, mm
total_height = 60; // [40:1:100]

// Base channel wall thickness, mm
wall_thickness = 3; // [1:0.5:8]

// Base bottom floor thickness, mm
floor_thickness = 3; // [1:0.5:8]

// Height of channel guide walls, mm
wall_height = 18; // [15:1:35]

$fn = 120;

// Effective slot width taking tolerance into account
slot_width = board_thickness + board_tolerance;

// Module for tower 2D cross section
// The front corners are sharp at +-slot_width/2, y_tower_front so they cleanly meet the channel slot
// The outer back corners and side edges are smoothly rounded
module tower_cross_section(r_top_shrink = 0) {
    w_ch = slot_width;
    y_front = w_ch;
    y_back = y_front + tower_depth - r_top_shrink;
    r = max(0.1, tower_corner_radius - r_top_shrink);
    
    w_f = slot_width - 2 * r_top_shrink;
    w_b = tower_back_width - 2 * r_top_shrink;
    
    // Construct trapezoid with rounded back corners:
    hull() {
        // Front sharp edge/corners
        translate([-w_f / 2, y_front])
            square([w_f, 0.01]);
            
        // Left back rounded corner
        translate([-w_b / 2 + r, y_back - r])
            circle(r = r, $fn = 48);
            
        // Right back rounded corner
        translate([w_b / 2 - r, y_back - r])
            circle(r = r, $fn = 48);
    }
}

module tower_solid() {
    r = tower_corner_radius;
    // Build tower with rounded outer vertical corners and rounded top dome/edge
    hull() {
        // Main tower body up to total_height - r
        linear_extrude(height = total_height - r)
            tower_cross_section(0);
            
        // Sloped/rounded top transition
        translate([0, 0, total_height - r])
            linear_extrude(height = r, scale = [ (tower_back_width - 2*r)/tower_back_width, (tower_depth - r)/tower_depth ])
                tower_cross_section(0);
    }
}

// Cleaner, fully manifold geometric construction of tower
module smooth_tower() {
    r = tower_corner_radius;
    w_ch = slot_width;
    y_front = w_ch;
    y_back = y_front + tower_depth;
    
    // Front face remains vertical/flat at y_front for drilling/mating with the chipboard edge,
    // while top corners and outer vertical edges are smoothly rounded with tower_corner_radius.
    hull() {
        // Lower portion up to total_height - r
        linear_extrude(height = total_height - r)
            tower_cross_section(0);

        // Top front corners with radius r
        // Left front top
        translate([-slot_width/2 + r, y_front, total_height - r])
            rotate([-90, 0, 0])
                cylinder(r = r, h = 0.01, $fn = 36);

        // Right front top
        translate([slot_width/2 - r, y_front, total_height - r])
            rotate([-90, 0, 0])
                cylinder(r = r, h = 0.01, $fn = 36);
            
        // Top back rounded corners
        translate([-tower_back_width/2 + r, y_back - r, total_height - r])
            sphere(r = r, $fn = 36);
            
        translate([tower_back_width/2 - r, y_back - r, total_height - r])
            sphere(r = r, $fn = 36);
    }
}

module drilling_jig() {
    w_ch = slot_width;
    t_w = wall_thickness;
    t_fl = floor_thickness;
    
    // Overall channel outer width
    arm_w = w_ch + 2 * t_w;
    
    // Y coordinates layout:
    y_tower_front = w_ch;
    y_tower_back = y_tower_front + tower_depth;
    y_front_min = y_tower_back - total_length;
    
    difference() {
        // --- POSITIVE SOLID BODY ---
        union() {
            // 1. Transverse arms (left & right)
            translate([-total_width/2, -t_w, 0])
                cube([total_width, arm_w, wall_height + t_fl]);
                
            // 2. Longitudinal front arm
            translate([-arm_w/2, y_front_min, 0])
                cube([arm_w, -t_w - y_front_min + 0.1, wall_height + t_fl]);
                
            // 3. Trapezoidal tower solid body with rounded outer corners and top
            smooth_tower();
        }
        
        // --- NEGATIVE CUTOUTS ---
        
        // 1. Transverse U-channel slot (along X)
        translate([-total_width/2 - 1, 0, t_fl])
            cube([total_width + 2, w_ch, total_height + 10]);
            
        // 2. Longitudinal front U-channel slot (along Y)
        translate([-w_ch/2, y_front_min - 1, t_fl])
            cube([w_ch, 0 - y_front_min + 1, wall_height + 20]);
            
        // 3. Drill holes through tower (parallel to Y axis)
        // Lower hole
        translate([0, y_tower_front - 1, t_fl + hole_1_height])
            rotate([-90, 0, 0])
                cylinder(r = hole_diameter / 2, h = total_length, center = false);
                
        // Upper hole
        translate([0, y_tower_front - 1, t_fl + hole_2_height])
            rotate([-90, 0, 0])
                cylinder(r = hole_diameter / 2, h = total_length, center = false);
    }
}

// @name Furniture Drilling Jig
drilling_jig();

Download Model

Choose the model version and file format.

Model version