November 8, 2025
Description
A simple and fully parametric trim profile generator I created for a personal project. Use it to create a custom-sized L-Shape or U-Shape profile, perfect for finishing the edges of furniture boards, countertops, or as a clean corner guard.
This started from a simple need: I had to neatly finish the raw edge of a woodenish board in my kitchen. Instead of designing one specific size, I decided to create this fully parametric OpenSCAD model. Now, both I and you can generate a perfectly fitting trim for any project in just a few seconds.
The model is designed to be 100% print-ready as soon as you generate it.
All parameters are available in the "Customise" tab.
This is a very straightforward model to print.
/*
============================================================
== Generator ==
============================================================
*//*
------------------------------------------------------------
-- User Parameters
------------------------------------------------------------
*/// 1. Total length of the trim profile in mm
profile_length = 200; // [10:2000]// 2. Use U-Shape (3 walls)?
// (false = L-Shape / 2 walls, true = U-Shape / 3 walls)
is_u_shape = false; // [true, false]// 3. Outer dimension of Wall 'A' (extends along the Y-axis)
dimension_a = 50; // [5:100]// 4. Outer dimension of Wall 'B' (extends along the X-axis)
dimension_b = 50; // [5:100]// 5. Outer dimension of Wall 'C' (extends along Y-axis, parallel to 'A')
// (Only used if is_u_shape is true)
dimension_c = 50; // [5:100]// 6. Thickness of all walls in mm
wall_thickness = 2; // [0.5:10]
/*
------------------------------------------------------------
-- Model Generation
------------------------------------------------------------
-- Do not edit below this line
------------------------------------------------------------
*/// Call the main module to generate the geometry
corner_trim_profile(
len = profile_length,
thick = wall_thickness,
dim_a = dimension_a,
dim_b = dimension_b,
dim_c = dimension_c,
u_shape = is_u_shape
);
/*
------------------------------------------------------------
-- Module Definition
------------------------------------------------------------
*/
module corner_trim_profile(len, thick, dim_a, dim_b, dim_c, u_shape = false) {
// Rotate the entire profile to lay flat on the XY plane
// (default OpenSCAD Z-axis is "up", so we rotate around X by 90 degrees)
rotate([90, 0, 0]) {
// Use union() to combine the parts into a single object
union() {
if (u_shape) {
// --- GENERATE U-SHAPE (3 WALLS) ---
// Based on total outer width (dim_b) and leg heights (dim_a, dim_c)// Wall A (Left Leg, Y-axis)
// Size: [thickness, height, length]
cube([thick, dim_a, len]);
// Wall B (Back/Web, X-axis)
// Positioned between the two legs
// Size: [width - 2*thickness, thickness, length]
translate([thick, 0, 0]) {
cube([dim_b - (2 * thick), thick, len]);
}
// Wall C (Right Leg, Y-axis)
// Positioned at the far right edge
// Size: [thickness, height, length]
translate([dim_b - thick, 0, 0]) {
cube([thick, dim_c, len]);
}
} else {
// --- GENERATE L-SHAPE (2 WALLS) ---
// Based on total outer dimensions (dim_a, dim_b)// Wall A (Vertical Leg, Y-axis)
// Size: [thickness, height, length]
cube([thick, dim_a, len]);
// Wall B (Horizontal Leg, X-axis)
// Starts after Wall A and extends to the full dim_b width
// Size: [width - thickness, thickness, length]
translate([thick, 0, 0]) {
cube([dim_b - thick, thick, len]);
}
}
}
}
}
License:
MakerWorld Exclusive License