96 lines
1.9 KiB
OpenSCAD
96 lines
1.9 KiB
OpenSCAD
// Clamp for a 32 mm diameter handlebar
|
|
e = 0.1;
|
|
$fn = 40;
|
|
|
|
t = 2; // wall thickness
|
|
r = 32/2; // inner clamp radius
|
|
w = 30; // clamp width
|
|
m = 3; // bolt diameter
|
|
|
|
module clamp() {
|
|
module ring() {
|
|
difference() {
|
|
cylinder(r=r+t, w);
|
|
translate([0, 0, -e])
|
|
cylinder(r=r, w+e*2);
|
|
}
|
|
}
|
|
module hinge() {
|
|
k = 4*1.5;
|
|
translate([-r-t*2.5, 0, k/2]) {
|
|
j = m+t*2;
|
|
difference() {
|
|
hull() {
|
|
translate([j/2+t/2, j/2, 0]) cylinder(d=m/2, w-k);
|
|
translate([j/2+t/2, -j/2, 0]) cylinder(d=m/2, w-k);
|
|
cylinder(d=j, w-k);
|
|
}
|
|
cylinder(d=m, w-k+e); // hole for a m3x30
|
|
}
|
|
}
|
|
}
|
|
module clamp() {
|
|
translate([r, 0, 0]) {
|
|
j = m*3;
|
|
difference() {
|
|
union() {
|
|
cube([m*3, t+1, w]);
|
|
translate([0, -t-1, 0]) cube([j, t+1, w]);
|
|
}
|
|
translate([j/2, t*2, w/2])
|
|
rotate(90, [1, 0, 0])
|
|
cylinder(d=m, t*5); // hole for a m3x10
|
|
}
|
|
}
|
|
}
|
|
module mount() {
|
|
translate([0, r+t/2, w/2])
|
|
hull() {
|
|
cube([w/2, t, w], center=true);
|
|
translate([0, 11-t, 0])
|
|
cube([w, t, w], center=true);
|
|
}
|
|
}
|
|
ring();
|
|
hinge();
|
|
clamp();
|
|
mount();
|
|
}
|
|
|
|
module bottom() {
|
|
// Bottom half of the clamp for printing
|
|
j = m;
|
|
difference() {
|
|
clamp();
|
|
translate([-r+t, -1, -e])
|
|
cube([r*3, r*3, w*2]);
|
|
translate([-r*2, j, -e])
|
|
cube([r*3, r*3, w*2]);
|
|
translate([-r*2, -j-1, w/3])
|
|
cube([r*2, r*2, w/3]);
|
|
}
|
|
}
|
|
|
|
module top() {
|
|
// Top half of the clamp for printing
|
|
j = m;
|
|
difference() {
|
|
clamp();
|
|
mirror([0, 1, 0])
|
|
translate([-r+t, -1, -e])
|
|
cube([r*3, r*3, w*2]);
|
|
mirror([0, 1, 0])
|
|
translate([-r*2, j, -e])
|
|
cube([r*3, r*3, w*2]);
|
|
mirror([0, 1, 0]) {
|
|
translate([-r*2, -j-1, 0])
|
|
cube([r*2, r*2, w/3+0.5]);
|
|
translate([-r*2, -j-1, w*2/3-0.5])
|
|
cube([r*2, r*2, w/3+t]);
|
|
}
|
|
}
|
|
}
|
|
|
|
top();
|
|
bottom();
|