The desktop-CNC and 3D-printer cousin of T-slot — same alloy, same extrusion process, but the slot has a 90-degree V-groove inside it that doubles as a linear bearing track. Drop a Delrin V-wheel into the V-groove and the wheel rolls along the rail with no preload adjustment, no rail-and-block precision-grinding, no Hiwa price tag. The OpenBuilds project (open-source CNC + 3D printer + laser cutter community) standardized the V-Slot 2020 (20mm × 20mm metric) and 4040 (40mm × 40mm) profiles around 2013, and now every desktop CNC kit (Shapeoko, X-Carve, Workbee, OpenBuilds C-Beam) is built from this profile or its 1530 / 4080 / 8080 cousins. The metric 20mm scale matches the 3D-printer ecosystem (Voron, Prusa, Creality frames are all 2020 / 4040 / 4080 V-Slot). Buy from OpenBuilds Parts Store, Misumi (HFS5 series), or Amazon for hobby quantities; the same Ingenue parts library that lists T-slot should list V-Slot beside it because students will reach for both depending on whether the project is a static fixture or a moving-axis machine.
Extruded aluminum 6063-T5 profile, cross-section a 20mm × 20mm square with four open V-grooves (one centered on each face, opening 6.4mm at the face, narrowing to 5.7mm at the V-vertex inside) and a central 5.0mm hole for end-tapping. Profile weight ~0.55 kg/m. Standard finish is clear or black anodize. The V-groove is the load-bearing surface for Delrin / Polycarbonate V-wheels (typical bore 5mm or 8mm, OD 23.9mm, ground V-edge mating to the slot V) — wheel preload is set by the eccentric spacer not by the rail, which means the rail does not need precision finishing for linear motion. Joins via M5 T-nuts (drop-in or sliding) plus M5 socket-head screws across corner brackets; the OpenBuilds ecosystem standardizes M5 throughout. Tolerances per Aluminum Association DS-1; the V-groove geometry is held to the extrusion die's accuracy, typically ±0.1mm on the V-vertex position. The V-Slot 2040, 2080, 4040, 4080, and 8080 variants extend the same V-slot logic to larger cross-sections for stiffer machines. Cuts on a fine-tooth carbide chop saw; ends typically tapped M5 or finished with end-cap accessories.
Principled BSDF defaults derived from the sphere metallic finish. Reasonable seed for Blender, Substance, Keyshot, Rhino — tune per material. Or grab the whole library at once: ForMaterials library →
# finish: metallic albedo #2c2c2e metallic 1.00 roughness 0.45 ior 1.45 transmission 0.00 clearcoat 0.00 sheen 0.00 anisotropic 0.00
{
"albedo": "#2c2c2e",
"metallic": 1.0,
"roughness": 0.45,
"ior": 1.45,
"transmission": 0.0,
"clearcoat": 0.0,
"sheen": 0.0,
"anisotropic": 0.0
}
# Blender 4.x — Principled BSDF
# Aluminum V-Slot Extrusion, 2020 (OpenBuilds-style) · finish: metallic
import bpy
mat = bpy.data.materials.new(name="mat_aluminum_extrusion_vslot_2020")
mat.use_nodes = True
bsdf = mat.node_tree.nodes["Principled BSDF"]
bsdf.inputs["Base Color"].default_value = (0.0252, 0.0252, 0.0273, 1.0)
bsdf.inputs["Metallic"].default_value = 1.000
bsdf.inputs["Roughness"].default_value = 0.450
bsdf.inputs["IOR"].default_value = 1.450
bsdf.inputs["Transmission Weight"].default_value = 0.000
bsdf.inputs["Coat Weight"].default_value = 0.000
bsdf.inputs["Sheen Weight"].default_value = 0.000
bsdf.inputs["Anisotropic"].default_value = 0.000
# KeyShot 11+ — lux Python API, Generic material
# Aluminum V-Slot Extrusion, 2020 (OpenBuilds-style) · finish: metallic
# Run from Window → Scripting Console
import lux
mat = lux.createMaterial(name="mat_aluminum_extrusion_vslot_2020", materialType="Generic")
mat.setProperty("diffuse", (44, 44, 46)) # 8-bit sRGB
mat.setProperty("metallic", 1.000)
mat.setProperty("roughness", 0.450)
mat.setProperty("indexOfRefraction", 1.450)
mat.setProperty("transparency", 0.000)
mat.setProperty("coatingWeight", 0.000)
{
"_format": "Substance Designer / Painter \u2014 pbrMetalRough constants",
"_about": "Aluminum V-Slot Extrusion, 2020 (OpenBuilds-style) \u00b7 finish: metallic",
"baseColor": {
"r": 0.0252,
"g": 0.0252,
"b": 0.0273
},
"metallic": 1.0,
"roughness": 0.45,
"ior": 1.45,
"opacity": 1.0,
"anisotropyLevel": 0.0,
"_notes": "Channels listed are the standard Substance pbrMetalRough output. Drop into a Uniform Color node per channel, or as the constant input on a layered stack."
}
{
"asset": {
"version": "2.0",
"generator": "ForMatter"
},
"materials": [
{
"name": "mat_aluminum_extrusion_vslot_2020",
"pbrMetallicRoughness": {
"baseColorFactor": [
0.0252,
0.0252,
0.0273,
1.0
],
"metallicFactor": 1.0,
"roughnessFactor": 0.45
},
"extensions": {
"KHR_materials_ior": {
"ior": 1.45
}
}
}
]
}
# USD Preview Surface — UsdShade.MaterialLook prim attributes
# Aluminum V-Slot Extrusion, 2020 (OpenBuilds-style) · finish: metallic
def Material "mat_aluminum_extrusion_vslot_2020" {
token outputs:surface.connect = </mat_aluminum_extrusion_vslot_2020/PreviewSurface.outputs:surface>
def Shader "PreviewSurface" {
uniform token info:id = "UsdPreviewSurface"
color3f inputs:diffuseColor = (0.0252, 0.0252, 0.0273)
float inputs:metallic = 1.000
float inputs:roughness = 0.450
float inputs:ior = 1.450
float inputs:opacity = 1.000
float inputs:clearcoat = 0.000
token outputs:surface
}
}
OpenBuilds / Misumi V-slot technical literature.
House vocabulary — terms ForMatter uses with intent.
Materials and processes for people who design and make things.
A local-first library of materials, processes, applications, and finishes — equal weight, citable everywhere, so a student can move from "what is this" toward "what's actually buildable here, now, by me." Part of the renato.design ecosystem — sibling of Plenum, Specimen, Ingenue, gesture, graf, and the Renato Rhino plug-ins. Form and matter, inseparable.
Half of teaching materials is teaching how the material is made into the thing. The standard subscription library was always light on that half. The wedge here isn't better samples or a prettier interface — it's treating Process as a peer entity, not a footnote.
Conway, Lefteri, Forty, Sparke, ASM, GIA. Every voice: Voices.
Local to this browser. No telemetry.