Compare commits
2 commits
75036012bc
...
d4c454a554
Author | SHA1 | Date | |
---|---|---|---|
d4c454a554 | |||
46950e5359 |
5 changed files with 192619 additions and 1 deletions
192517
CE3S1P_Knauf.gcode
Normal file
192517
CE3S1P_Knauf.gcode
Normal file
File diff suppressed because it is too large
Load diff
BIN
Knauf.png
Normal file
BIN
Knauf.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 18 KiB |
98
Knauf.scad
Normal file
98
Knauf.scad
Normal file
|
@ -0,0 +1,98 @@
|
||||||
|
// Parameter
|
||||||
|
res=200; // Auflösung
|
||||||
|
du=50; // Durchmesser Kugel
|
||||||
|
a=32; // Rohrdurchmesser innen
|
||||||
|
b=38; // Rohrdurchmesser außen
|
||||||
|
|
||||||
|
//-------------------
|
||||||
|
|
||||||
|
$fn=res;
|
||||||
|
|
||||||
|
difference() {
|
||||||
|
// sphere(d=du);
|
||||||
|
ssphere(r=du/2, n=3);
|
||||||
|
difference() {
|
||||||
|
translate([0,0,-10 ])cylinder(h=50,d=b);
|
||||||
|
translate([0,0,-10.05])cylinder(h=50.05,d=a);
|
||||||
|
}
|
||||||
|
translate([-20,-20,16])cube([40,40,40]);
|
||||||
|
for(i= [0:36:259]) {
|
||||||
|
x = du * sin(i);
|
||||||
|
y = du * cos(i);
|
||||||
|
z = 0;
|
||||||
|
translate([x,y,z]) sphere (2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function norm(v) = sqrt(v[0]*v[0]+v[1]*v[1]+v[2]*v[2]);
|
||||||
|
function normalize(v) = [v[0]/norm(v), v[1]/norm(v), v[2]/norm(v)];
|
||||||
|
function flatten(vec) = [for (v=vec) for(e=v) e];
|
||||||
|
|
||||||
|
module ssphere(r=1, n=0) {
|
||||||
|
C0 = (1+sqrt(5))/4;
|
||||||
|
pts = [[0.5, 0, C0], [0.5, 0, -C0], [-0.5, 0, C0], [-0.5, 0, -C0], [C0,
|
||||||
|
0.5, 0], [C0, -0.5, 0], [-C0, 0.5, 0], [-C0, -0.5, 0], [0, C0, 0.5], [0, C0,
|
||||||
|
-0.5], [0, -C0, 0.5], [0, -C0, -0.5]];
|
||||||
|
fcs = [[10, 2, 0], [5, 10, 0], [4, 5, 0], [8, 4, 0], [2, 8, 0], [11, 1, 3],
|
||||||
|
[7, 11, 3], [6, 7, 3], [9, 6, 3], [1, 9, 3], [7, 6, 2], [10, 7, 2], [11, 7,
|
||||||
|
10], [5, 11, 10], [1, 11, 5], [4, 1, 5], [9, 1, 4], [8, 9, 4], [6, 9, 8],
|
||||||
|
[2, 6, 8]];
|
||||||
|
npts = [for (v=pts) normalize(v)];
|
||||||
|
subdiv_sphere(npts, fcs, r, n);
|
||||||
|
}
|
||||||
|
|
||||||
|
module subdiv_sphere(pts, fcs, r, n) {
|
||||||
|
if (n>0) {
|
||||||
|
spts = concat(pts, flatten([for (f=fcs) [(pts[f[0]]+pts[f[1]]),
|
||||||
|
(pts[f[1]]+pts[f[2]]), (pts[f[2]]+pts[f[0]])]]));
|
||||||
|
nsfcs = flatten([for (i=[0:len(fcs)-1]) [[fcs[i][0], len(pts)+3*i+0,
|
||||||
|
len(pts)+3*i+2], [len(pts)+3*i+0, len(pts)+3*i+1, len(pts)+3*i+2],
|
||||||
|
[len(pts)+3*i+0, fcs[i][1], len(pts)+3*i+1], [len(pts)+3*i+2,
|
||||||
|
len(pts)+3*i+1, fcs[i][2]]]]);
|
||||||
|
nspts = [for (v=spts) r*normalize(v)];
|
||||||
|
subdiv_sphere(nspts, nsfcs, r, n-1);
|
||||||
|
}
|
||||||
|
else polyhedron(points=pts, faces=fcs);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// other
|
||||||
|
function spherePF(r=1,n=1,_pts=[],_fcs=[])=
|
||||||
|
(
|
||||||
|
// return [pt, faces]
|
||||||
|
_pts==[]?
|
||||||
|
let(
|
||||||
|
C0 = (1+sqrt(5))/4
|
||||||
|
, pts = [ [0.5,0,C0],[0.5,0,-C0],[-0.5,0,C0],[-0.5,0,-C0]
|
||||||
|
, [C0,0.5,0],[C0,-0.5,0],[-C0,0.5,0],[-C0,-0.5,0]
|
||||||
|
, [0,C0,0.5],[0,C0,-0.5],[0,-C0,0.5],[0,-C0,-0.5]]
|
||||||
|
, fcs = [ [10,2,0],[5,10,0],[4,5,0],[8,4,0],[2,8,0]
|
||||||
|
, [11,1,3],[7,11,3],[6,7,3],[9,6,3],[1,9,3]
|
||||||
|
, [7,6,2],[10,7,2],[11,7,10],[5,11,10],[1,11,5]
|
||||||
|
, [4,1,5],[9,1,4],[8,9,4],[6,9,8],[2,6,8]]
|
||||||
|
, npts = [for (v=pts) v/norm(v) ]
|
||||||
|
)
|
||||||
|
( n==0?[npts, fcs]
|
||||||
|
: spherePF(r=r,n=n-1,_pts=npts,_fcs=fcs)
|
||||||
|
)
|
||||||
|
: let(
|
||||||
|
spts = concat(_pts
|
||||||
|
, [ each for (f=_fcs)
|
||||||
|
[(_pts[f[0]]+_pts[f[1]])
|
||||||
|
,(_pts[f[1]]+_pts[f[2]])
|
||||||
|
,(_pts[f[2]]+_pts[f[0]])
|
||||||
|
]
|
||||||
|
]
|
||||||
|
)
|
||||||
|
, nsfcs = [each for (i=[0:len(_fcs)-1])
|
||||||
|
[ [_fcs[i][0], len(_pts)+3*i+0, len(_pts)+3*i+2]
|
||||||
|
, [len(_pts)+3*i+0, len(_pts)+3*i+1, len(_pts)+3*i+2]
|
||||||
|
, [len(_pts)+3*i+0, _fcs[i][1], len(_pts)+3*i+1]
|
||||||
|
, [len(_pts)+3*i+2, len(_pts)+3*i+1, _fcs[i][2]]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
, nspts = [for (v=spts) r*v/norm(v)]
|
||||||
|
)
|
||||||
|
n==0? [nspts, nsfcs]
|
||||||
|
: spherePF(r=r,n=n-1,_pts=nspts,_fcs=nsfcs)
|
||||||
|
);
|
BIN
Knauf.stl
Normal file
BIN
Knauf.stl
Normal file
Binary file not shown.
|
@ -1,3 +1,6 @@
|
||||||
# Schwimmbeckenknauf
|
# Schwimmbeckenknauf
|
||||||
|
|
||||||
Kauf für die Rohrenden an den Treppenstangen am Schwimmbecken. Rohrmasse: innen 32mm außen 38mm
|
Kauf für die Rohrenden an den Treppenstangen am Schwimmbecken. Rohrmasse: innen 32mm außen 38mm
|
||||||
|
|
||||||
|
## Knauf.scad
|
||||||
|
![Knauf.scad](./Knauf.png "Knauf.scad")
|
||||||
|
|
Loading…
Reference in a new issue