You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
127 lines
3.0 KiB
127 lines
3.0 KiB
// hight of stick from the cone
|
|
// throttle has different mounting slot at the bottom then the roll stick
|
|
// throttle has a metal stick and roll has a ps2 plastic shaft
|
|
use <lib/cube.scad>
|
|
use <lib/cylinder.scad>
|
|
|
|
is_ps2_stick=0;
|
|
// draw itself
|
|
stick(10, is_ps2_stick);
|
|
|
|
module stick(h=10,is_ps2_stick=0)
|
|
{
|
|
$fn=128;
|
|
translate([0,0,15-3]) {
|
|
cylinder(d=5,h=h);
|
|
translate([0,0,h])
|
|
// top nob to grab
|
|
gabber_part();
|
|
}
|
|
// stick holder with cutout
|
|
translate([0,0,0]) {
|
|
stick_mount(is_ps2_stick);
|
|
}
|
|
|
|
// dust protector
|
|
translate([0,0,0]) {
|
|
resize([30,30,22])
|
|
protector_cone(thickness=0.4*2.5);
|
|
}
|
|
}
|
|
|
|
module gabber_part() {
|
|
difference() {
|
|
union() {
|
|
cylinder(d1=5,d2=8,h=4);
|
|
translate([0,0,4])
|
|
cylinder(d1=8,d2=8,h=4);
|
|
translate([0,0,8])
|
|
cylinder(d1=8,d2=4,h=3);
|
|
}
|
|
for (rot=[0:15:360]) {
|
|
r=0.5;
|
|
// top grips
|
|
translate([0,0,8])
|
|
rotate([0,0,rot])
|
|
rotate([0,90,0])
|
|
translate([-3,0,0])
|
|
cylinder($fn=4,r=r,h=40);
|
|
|
|
// head grips
|
|
translate([0,0,8.5])
|
|
rotate([0,0,rot])
|
|
rotate([0,35,0])
|
|
translate([-3,0,-10])
|
|
cylinder($fn=4,r=r,h=40);
|
|
|
|
// vertiacal grips
|
|
rotate([0,0,rot])
|
|
translate([4,0,0])
|
|
cylinder($fn=4,r=r,h=10);
|
|
// bottom grips
|
|
translate([0,0,2])
|
|
rotate([0,0,rot])
|
|
rotate([0,21,0])
|
|
translate([3,0,0])
|
|
cylinder($fn=4,r=r,h=20);
|
|
}
|
|
}
|
|
}
|
|
|
|
module stick_mount(is_ps2_stick=0) {
|
|
ps2_dia=4+0.4;
|
|
ps2_width=3+0.4;
|
|
|
|
|
|
mount_h=5;
|
|
eps = 0.01;
|
|
|
|
difference() {
|
|
color([1,0,1]) {
|
|
translate([0,0,4])
|
|
cylinder_flange_sphere($fn=32,r2=8, r1=3, h=4.5);
|
|
translate([0,0,8.5])
|
|
cylinder_flange_sphere($fn=32,r2=3, r1=8, h=4.5);
|
|
|
|
if ( is_ps2_stick ) {
|
|
cylinder(d=6.75,h=10);
|
|
} else {
|
|
cylinder(d=6,h=10);
|
|
}
|
|
//cylinder(d=15,h=0.1);
|
|
}
|
|
translate([0,0,-eps])
|
|
if ( is_ps2_stick) {
|
|
intersection() {
|
|
cube(center=true,[ps2_width,100,100]);
|
|
cylinder(d=ps2_dia,h=mount_h);
|
|
}
|
|
translate([0,0,mount_h])
|
|
cylinder(d1=ps2_dia,d2=1.5,h=1.5);
|
|
} else {
|
|
aligned_cube([1.9,1.15,6]);
|
|
}
|
|
}
|
|
}
|
|
module protector_cone(thickness) {
|
|
d=30;
|
|
//dust protector
|
|
difference() {
|
|
union() {
|
|
sphere(d=d+2*thickness);
|
|
translate([0,0,12.1])
|
|
//cylinder(d2=3,d1=17.5,h=7);
|
|
cylinder_flange_sphere($fn=32,r2=4/2, r1=17.5/2, h=20);
|
|
}
|
|
|
|
// cut lower half
|
|
translate([-d,-d,-30])
|
|
cube([2*d,2*d,30]);
|
|
|
|
// cut innerpart so its a shell
|
|
sphere(d=d);
|
|
}
|
|
}
|
|
|
|
|
|
|