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.
Nominal width of LDSP board, mm
Board tolerance / clearance (погрешность ламината/зазор), mm
Drill guide hole diameter, mm
Height of lower drill hole from channel floor, mm
Height of upper drill hole from channel floor, mm
Tower depth (thickness in Y direction), mm
Width of tower at back face (tapers narrower towards back), mm
Fillet / rounding radius for tower corners and top edges, mm
Total transverse width (across side arms), mm
Total length (front to back), mm
Total height of drill tower, mm
Base channel wall thickness, mm
Base bottom floor thickness, mm
Height of channel guide walls, mm
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();


