Add knob generator

This commit is contained in:
Kienan Stewart 2026-01-20 21:14:42 -05:00
parent 30631929c1
commit 48c2975ae6
2 changed files with 94 additions and 0 deletions

47
knob.json Normal file
View File

@ -0,0 +1,47 @@
{
"parameterSets": {
"design default values": {
"$fn": "180",
"Depth": "4",
"Diameter": "101.6",
"Inner_pattern": "c",
"Inner_pattern_depth": "1",
"Inner_pattern_width": "24.5",
"Inset": "true",
"Inset_depth": "1",
"Inset_width": "15"
},
"hdd-2.5-v1": {
"$fn": "180",
"Depth": "4",
"Diameter": "101.6",
"Inner_pattern": "c",
"Inner_pattern_depth": "1",
"Inner_pattern_width": "24.5",
"Inset": "true",
"Inset_depth": "1.5",
"Inset_width": "15"
},
"steampunk knob": {
"$fn": "64",
"Base_depth": "30",
"Base_diameter": "30",
"Head_import": "\/home\/kienan\/Downloads\/button_steampunk_2.STL",
"Head_rotate_x": "90",
"Head_rotate_y": "0",
"Head_rotate_z": "0",
"Head_scale_x": "2",
"Head_scale_y": "2",
"Head_scale_z": "2",
"Head_style": "stl",
"Head_translate_x": "-30.4",
"Head_translate_y": "30.3",
"Head_translate_z": "28",
"Screw_length": "20",
"Screw_size": "M4",
"Sphere_diameter": "50",
"Sphere_offset": "40"
}
},
"fileFormatVersion": "1"
}

47
knob.scad Normal file
View File

@ -0,0 +1,47 @@
include <lib/BOSL2/std.scad>
include <lib/BOSL2/screws.scad>
Base_diameter = 30.0; // 0.1
Base_depth = 30.0; // 0.1
Screw_size = "M4";
Screw_length = 15.0; // 0.1
Head_style = "sphere"; // ["sphere", "stl"]
Sphere_diameter = 50.0; // 0.1
Sphere_offset = 40.0; // 0.1
Head_import = "";
Head_rotate_x = 0.0; // 0.1
Head_rotate_y = 0.0; // 0.1
Head_rotate_z = 0.0; // 0.1
Head_scale_x = 1.0; // 0.1
Head_scale_y = 1.0; // 0.1
Head_scale_z = 1.0; // 0.1
Head_translate_x = 0.0; // 0.1
Head_translate_y = 0.0; // 0.1
Head_translate_z = 0.0; // 0.1
$fn = 64;
module thing() {
union() {
cylinder(Base_depth, d=Base_diameter);
if (Head_style == "sphere") {
translate([0, 0, Sphere_offset]) { sphere(d=50);
};
}
if (Head_style == "stl") {
translate([Head_translate_x, Head_translate_y, Head_translate_z]) {
rotate([Head_rotate_x, Head_rotate_y, Head_rotate_z]) {
scale([Head_scale_x, Head_scale_y, Head_scale_z]) {
import(Head_import);
}
}
}
}
}
}
difference() {
thing();
translate([0, 0, Screw_length/2]) {
screw_hole(Screw_size, tolerance="tap", length=Screw_length);
}
};