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.
107 lines
2.3 KiB
107 lines
2.3 KiB
2 years ago
|
$fs=0.0001;
|
||
|
|
||
|
axis_radius = 10;
|
||
|
|
||
|
piston_lenght = 15;
|
||
|
piston_radius = 4;
|
||
|
piston_tickness = 1;
|
||
|
inner_lenght = 6;
|
||
|
|
||
|
spacing = 0.05;
|
||
|
|
||
|
scale([100, 100, 100]){
|
||
|
|
||
|
//rotating part
|
||
|
union(){
|
||
|
difference(){
|
||
|
cylinder(1, axis_radius, axis_radius, true);
|
||
|
cylinder(10, 2, 2, true);
|
||
|
}
|
||
|
translate([0, axis_radius*.7, 0.5]){
|
||
|
cylinder(1, 2, 2);
|
||
|
translate([0,0,1])
|
||
|
cylinder(2, 1, 1);
|
||
|
|
||
|
|
||
|
translate([0, 0, 2.6])
|
||
|
cylinder(1, 2, 2);
|
||
|
}
|
||
|
|
||
|
translate([0, 0, -4]){
|
||
|
cylinder(10, 2, 2, true);
|
||
|
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
height = 2.3;
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
//axis
|
||
|
union(){
|
||
|
translate([0, 0, height]){
|
||
|
translate([0, -axis_radius*.5, 0]){
|
||
|
cube(size = [1, 2.1*axis_radius, 1], center = true);
|
||
|
|
||
|
translate([0, -2.1*axis_radius/2-1.6/2, 0])rotate([0, 0, 0]){
|
||
|
difference(){
|
||
|
cylinder(1.5, 1.5, 1.5, true);
|
||
|
cylinder(4, 0.7, 0.7, true);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
translate([0, axis_radius*.7, 0]){
|
||
|
difference(){
|
||
|
cylinder(1.5, 1.8, 1.8, true);
|
||
|
cylinder(2, 1+spacing, 1+spacing, true);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
//piston holder
|
||
|
translate([0, 0, 0])
|
||
|
difference(){
|
||
|
rotate([90, 0,0])translate([0, height, axis_radius/2+piston_lenght]){
|
||
|
difference(){
|
||
|
cylinder(piston_lenght, piston_radius, piston_radius, true);
|
||
|
translate([0, 0, -piston_tickness]){
|
||
|
cylinder(2*piston_lenght, piston_radius-piston_tickness, piston_radius-piston_tickness, true);
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
translate([0,-12.5,height])rotate([0, 90, 0])translate([0,0,-5])cylinder(10, 1.5, 1.5);
|
||
|
}
|
||
|
|
||
|
|
||
|
//piston
|
||
|
inner_piston_r = piston_radius - piston_tickness - spacing;
|
||
|
difference(){
|
||
|
translate([0, 0, height])rotate([0, 90, 0])translate([0,0,-height])union(){
|
||
|
rotate([90, 0,0])translate([0, height, axis_radius/2+piston_lenght-inner_lenght/2]){
|
||
|
difference(){
|
||
|
cylinder(inner_lenght, inner_piston_r, inner_piston_r, true);
|
||
|
translate([0, 0, -piston_tickness]){
|
||
|
cylinder(inner_lenght, inner_piston_r-piston_tickness, inner_piston_r-piston_tickness, true);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
}
|
||
|
|
||
|
translate([0, -axis_radius*.5-2.1*axis_radius/2-1.6/2, height])rotate([0, 90, 0]){
|
||
|
cylinder(2*(inner_piston_r-piston_tickness), 0.7-spacing, 0.7-spacing, true);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
translate([0,-14,height])rotate([0, 90, 0])translate([0,0,-5])cylinder(10, 1.5, 1.5);
|
||
|
|
||
|
}
|
||
|
}
|