add knurled knob that I already made
This commit is contained in:
76
knurled_knob.scad
Normal file
76
knurled_knob.scad
Normal file
@@ -0,0 +1,76 @@
|
||||
|
||||
$fa = 4;
|
||||
$fs = 0.2;
|
||||
|
||||
body_height = 10;
|
||||
body_diameter = 24;
|
||||
|
||||
bevel_height = 1;
|
||||
bevel_width = 1;
|
||||
|
||||
knurl_width = 1.2;
|
||||
knurl_depth = 0.8;
|
||||
knurl_count = 36;
|
||||
knurl_angle = 110*(body_height-2*bevel_height)/body_diameter; // idk where 110 comes from
|
||||
|
||||
// m5: 5.4, 9.2, 3.4
|
||||
// m3: 3.2, 6.2, 3.0
|
||||
hole_diameter = 3.2;
|
||||
bolt_head_width = 5.6;
|
||||
bolt_recess_depth = 3.0;
|
||||
|
||||
module main() {
|
||||
difference() {
|
||||
|
||||
cylinder(body_height, d1 = body_diameter, d2 = body_diameter, center = true);
|
||||
|
||||
bevel(1);
|
||||
bevel(-1);
|
||||
|
||||
knurl_cuts(1);
|
||||
knurl_cuts(-1);
|
||||
|
||||
cylinder(body_height, d1 = hole_diameter, d2 = hole_diameter, center = true);
|
||||
hex_recess();
|
||||
}
|
||||
}
|
||||
|
||||
module bevel(face) { // 1 for top and -1 for bottom
|
||||
translate([0, 0, face*(body_height/2 - bevel_height)])
|
||||
rotate_extrude() {
|
||||
translate([body_diameter/2, 0, 0])
|
||||
polygon([[0, 0], [0, bevel_height*face], [-bevel_width, bevel_height*face]]);
|
||||
}
|
||||
}
|
||||
|
||||
module knurl_cuts(direction) { // 1 for cw and -1 for ccw
|
||||
for(i = [1:1:knurl_count]) {
|
||||
linear_extrude(body_height-2*bevel_height, center=true, twist=knurl_angle*direction) {
|
||||
knurl_triangle = [[-knurl_width/2, 0], [knurl_width/2, 0], [0, knurl_depth*sqrt(3)/2]];
|
||||
|
||||
rotate([0, 0, 360/knurl_count * i])
|
||||
translate([0, -body_diameter/2 - 0.05, 0])
|
||||
polygon(knurl_triangle);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module hex_recess() {
|
||||
edge_length = bolt_head_width/2;
|
||||
x = edge_length * sqrt(3)/2;
|
||||
y = edge_length;
|
||||
a = [y/2, x];
|
||||
b = [y, 0];
|
||||
c = [y/2, -x];
|
||||
d = [-y/2, -x];
|
||||
e = [-y, 0];
|
||||
f = [-y/2, x];
|
||||
hexagon = [a, b, c, d, e, f];
|
||||
|
||||
translate([0, 0, -(body_height-bolt_recess_depth)/2])
|
||||
linear_extrude(bolt_recess_depth, center=true) {
|
||||
polygon(hexagon);
|
||||
}
|
||||
}
|
||||
|
||||
main();
|
||||
Reference in New Issue
Block a user