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

$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);
}
}