major revision of EVERYTHING

This commit is contained in:
jayAitch256
2023-03-16 18:20:50 +01:00
parent 89863924f4
commit 9c6465b6c7
5 changed files with 346 additions and 160 deletions

View File

@@ -1,79 +1,121 @@
$fn = 200;
use <threads-scad/threads.scad>
module torus(r1=1, r2=2, angle=360, $fn=$fn){
rotate_extrude(convexity=10, $fn=$fn)
translate([r2, 0, 0])
circle(r=r1, $fn=$fn);
/*
Schraube MetricCountersunkBolt()
Schraubenloch CountersunkClearanceHole()
Gewindebolzen RodStart() RodEnd()
Mutter MetricNut()
*/
$fn = 300;
module MetricNutShape(diameter, thickness = 0, tolerance = 0.4) {
thickness = (thickness == 0) ? NutThickness(diameter) : thickness;
cylinder(h = thickness, r = HexAcrossCorners(diameter) / 2 - 0.5 * tolerance,
$fn = 6);
}
module rounded_cube(size, r=0, $fn=$fn){
translate([r, r, r]) minkowski(){
cube([size[0]-r*2, size[1]-r*2, size[2]-r*2]);
sphere(r, $fn=$fn);
}
module rounded_cube(size, r = 0, $fn = $fn) {
translate([ r, r, r ]) minkowski() {
cube([ size[0] - r * 2, size[1] - r * 2, size[2] - r * 2 ]);
sphere(r, $fn = $fn);
}
}
module rounded_cube_2d(size, r=0, $fn=$fn){
translate([r, r, 0]) minkowski(){
cube([size[0]-r*2, size[1]-r*2, size[2]/2]);
cylinder(d=r*2, h=size[2]/2, $fn=$fn);
}
module rounded_cube_2d(size, r = 0, $fn = $fn) {
translate([ r, r, 0 ]) minkowski() {
cube([ size[0] - r * 2, size[1] - r * 2, size[2] / 2 ]);
cylinder(d = r * 2, h = size[2] / 2, $fn = $fn);
}
}
module kugellager_mit_nuts(sphere_number = 330, h = 10 + 0.5) {
wall_d = 1.5;
sphere_d = 3;
sphere_spiel = 0.2;
sphere_ueberstand = 0.5;
screws_d = 3;
screws_inner_number = 2;
screws_outer_number = 3;
gesamt_h = h - sphere_ueberstand;
angle = 90;
wall_d = 1.5;
befestigung_d = 2*wall_d;
sphere_d = 3;
sphere_spiel = 0.2;
sphere_ueberstand = 0.5;
spehre_number = 40;
screw_hole_d = 2.6;
torus_r = (sphere_d / 2) / sin(360 / sphere_number);
torus_inner_r = (sphere_d + sphere_spiel) / 2;
gesamt_r = torus_r + torus_inner_r + wall_d;
gesamt_inner_r = torus_r - torus_inner_r - wall_d;
befestigung_d = screws_d + 4 * wall_d;
assert(torus_inner_r < torus_r);
assert(torus_inner_r ^ 2 - (torus_inner_r - sphere_ueberstand) ^
2 < (sphere_d / 2) ^ 2,
"Kugeln fallen raus! Überstand oder Spiel reduzieren!");
torus_r = (sphere_d / 2) / sin(360 / spehre_number);
torus_inner_r = (sphere_d + sphere_spiel) / 2;
gesamt_h = sphere_d + wall_d - sphere_ueberstand;
gesamt_r = torus_r + torus_inner_r + wall_d;
gesamt_inner_r = torus_r - torus_inner_r - wall_d;
// Asserts
assert(torus_inner_r < torus_r);
assert(torus_inner_r^2 - (torus_inner_r - sphere_ueberstand)^2 < (sphere_d / 2)^2, "Kugeln fallen raus! Überstand oder Spiel reduzieren!");
// Screw holes
module screw_hole() {
rotate(a = [0, 90, 0])
cylinder(d=screw_hole_d, h=befestigung_d);
difference() {
rotate_extrude(convexity = 10, angle = angle, $fn = $fn) {
difference() {
square([ gesamt_r, gesamt_h ]);
square([ gesamt_inner_r, gesamt_h ]);
translate([
torus_r, gesamt_h - torus_inner_r + sphere_ueberstand + sphere_spiel,
0
]) circle(r = torus_inner_r, $fn = $fn);
}
translate([ gesamt_inner_r - befestigung_d, 0, 0 ])
square([ 2 * (befestigung_d + torus_inner_r + wall_d), wall_d ]);
}
for (r = [
gesamt_r + befestigung_d / 2, gesamt_inner_r - befestigung_d / 2
]) {
screws_number = (r == gesamt_r + befestigung_d / 2) ? screws_outer_number
: screws_inner_number;
for (i = [1:screws_number]) {
phi = angle / screws_number * (i - 1 / 2);
translate([ r * cos(phi), r * sin(phi), wall_d / 2 ])
MetricNutShape(diameter = screws_d);
translate([ r * cos(phi), r * sin(phi), 0 ])
cylinder(h = wall_d, r = (screws_d + 0.4) / 2);
}
}
}
}
difference() {
module kugellager(sphere_number = 330, h = 10 + 0.5, nut_d = 10, wall_d = 1.5) {
sphere_d = 3;
sphere_spiel = 0.2;
sphere_ueberstand = 0.5;
screws_d = 3;
screws_inner_number = 2;
screws_outer_number = 3;
gesamt_h = h - sphere_ueberstand;
angle = 360;
torus_r = (sphere_d / 2) / sin(360 / sphere_number);
torus_inner_r = (sphere_d + sphere_spiel) / 2;
gesamt_r = torus_r + torus_inner_r + wall_d;
gesamt_inner_r = torus_r - torus_inner_r - wall_d;
befestigung_d = screws_d + 4 * wall_d;
assert(torus_inner_r < torus_r);
assert(torus_inner_r ^ 2 - (torus_inner_r - sphere_ueberstand) ^
2 < (sphere_d / 2) ^ 2,
"Kugeln fallen raus! Überstand oder Spiel reduzieren!");
rotate_extrude(convexity = 10, angle = angle, $fn = $fn) {
difference() {
union () {
//Cylinder
difference () {
cylinder(r=gesamt_r, h=gesamt_h);
cylinder(r=gesamt_inner_r, h=gesamt_h);
}
//Befestigung
translate([-befestigung_d, -(gesamt_r + gesamt_h + wall_d),0]) {
rounded_cube_2d ([befestigung_d, (gesamt_r + gesamt_h + wall_d) * 2, gesamt_h], r=0.25);
}
}
translate([0,0,torus_inner_r + wall_d]) {
torus(r1=torus_inner_r, r2=torus_r);
}
square([ gesamt_r, gesamt_h ]);
square([ gesamt_inner_r, gesamt_h ]);
translate([
torus_r, gesamt_h - torus_inner_r + sphere_ueberstand + sphere_spiel, 0
]) circle(r = torus_inner_r, $fn = $fn);
}
// Only one half halfes
translate([0,-gesamt_r,0])
cube([gesamt_r, gesamt_r*2, gesamt_h]);
// Screw holes
translate([-befestigung_d,-(gesamt_r + gesamt_h / 2 + wall_d / 2),gesamt_h / 2]) screw_hole();
translate([-befestigung_d,(gesamt_r + gesamt_h / 2 + wall_d / 2),gesamt_h / 2]) screw_hole();
translate([-befestigung_d,0,gesamt_h / 2]) screw_hole();
}
difference() {
union() {
cylinder(r = gesamt_r, h = wall_d);
cylinder(d = 2.5 * nut_d, h = 2 * wall_d);
}
MetricNutShape(diameter = nut_d, thickness = wall_d);
translate([ 0, 0, wall_d ]) cylinder(d = nut_d + 2, h = wall_d);
}
}