diff --git a/knob.json b/knob.json new file mode 100644 index 0000000..3b51e8b --- /dev/null +++ b/knob.json @@ -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" +} diff --git a/knob.scad b/knob.scad new file mode 100644 index 0000000..4987059 --- /dev/null +++ b/knob.scad @@ -0,0 +1,47 @@ +include +include + +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); + } +};