1
0
mirror of https://github.com/JustinSDK/dotSCAD.git synced 2025-04-20 22:21:52 +02:00

add r_union

This commit is contained in:
Justin Lin 2021-09-03 11:29:32 +08:00
parent c6ca52aba8
commit 346cea1db8
2 changed files with 170 additions and 18 deletions

View File

@ -1,6 +1,6 @@
use <__comm__/__frags.scad>;
module r_union2(r = 1) {
module r_union2(radius = 1) {
module _r_union2(r = 1) {
fn = __frags(r);
step = 90 / fn;
@ -35,7 +35,7 @@ module r_union2(r = 1) {
children(0);
}
else if($children == 2) {
_r_union2(r) {
_r_union2(radius) {
children(0);
children(1);
};
@ -43,8 +43,8 @@ module r_union2(r = 1) {
// OpenSCAD have to enumerate children explicitly.
// Currently, this module allow 10 children.
else if($children == 3) {
r_union2(r) {
_r_union2(r) {
r_union2(radius) {
_r_union2(radius) {
children(0);
children(1);
};
@ -52,8 +52,8 @@ module r_union2(r = 1) {
}
}
else if($children == 4) {
r_union2(r) {
_r_union2(r) {
r_union2(radius) {
_r_union2(radius) {
children(0);
children(1);
};
@ -62,8 +62,8 @@ module r_union2(r = 1) {
}
}
else if($children == 5) {
r_union2(r) {
_r_union2(r) {
r_union2(radius) {
_r_union2(radius) {
children(0);
children(1);
};
@ -73,8 +73,8 @@ module r_union2(r = 1) {
}
}
else if($children == 6) {
r_union2(r) {
_r_union2(r) {
r_union2(radius) {
_r_union2(radius) {
children(0);
children(1);
};
@ -85,8 +85,8 @@ module r_union2(r = 1) {
}
}
else if($children == 7) {
r_union2(r) {
_r_union2(r) {
r_union2(radius) {
_r_union2(radius) {
children(0);
children(1);
};
@ -98,8 +98,8 @@ module r_union2(r = 1) {
}
}
else if($children == 8) {
r_union2(r) {
_r_union2(r) {
r_union2(radius) {
_r_union2(radius) {
children(0);
children(1);
};
@ -112,8 +112,8 @@ module r_union2(r = 1) {
}
}
else if($children == 9) {
r_union2(r) {
_r_union2(r) {
r_union2(radius) {
_r_union2(radius) {
children(0);
children(1);
};
@ -127,8 +127,8 @@ module r_union2(r = 1) {
}
}
else if($children == 10) {
r_union2(r) {
_r_union2(r) {
r_union2(radius) {
_r_union2(radius) {
children(0);
children(1);
};

View File

@ -0,0 +1,152 @@
use <__comm__/__frags.scad>;
module r_union3(radius = 1) {
module _r_union3(r = 1) {
module dilate(r) {
minkowski() {
children();
sphere(r);
}
}
fn = __frags(r);
step = 90 / fn;
rx = is_list(r) ? r[1] : r;
ry = is_list(r) ? r[0] : r;
for(i = [0:fn - 1]) {
x = rx - sin(i * step) * rx;
y = ry - cos(i * step) * ry;
xi = rx - sin(i * step + step) * rx;
yi = ry - cos(i * step + step) * ry;
hull() {
intersection() {
dilate(x) children(0);
dilate(y) children(1);
}
intersection() {
dilate(xi) children(0);
dilate(yi) children(1);
}
}
}
children(0);
children(1);
}
if($children == 0) {
// nope
}
else if($children == 1) {
children(0);
}
else if($children == 2) {
_r_union3(radius) {
children(0);
children(1);
};
}
// OpenSCAD have to enumerate children explicitly.
// Currently, this module allow 10 children.
else if($children == 3) {
r_union3(radius) {
_r_union3(radius) {
children(0);
children(1);
};
children(2);
}
}
else if($children == 4) {
r_union3(radius) {
_r_union3(radius) {
children(0);
children(1);
};
children(2);
children(3);
}
}
else if($children == 5) {
r_union3(radius) {
_r_union3(radius) {
children(0);
children(1);
};
children(2);
children(3);
children(4);
}
}
else if($children == 6) {
r_union3(radius) {
_r_union3(radius) {
children(0);
children(1);
};
children(2);
children(3);
children(4);
children(5);
}
}
else if($children == 7) {
r_union3(radius) {
_r_union3(radius) {
children(0);
children(1);
};
children(2);
children(3);
children(4);
children(5);
children(6);
}
}
else if($children == 8) {
r_union3(radius) {
_r_union3(radius) {
children(0);
children(1);
};
children(2);
children(3);
children(4);
children(5);
children(6);
children(7);
}
}
else if($children == 9) {
r_union3(radius) {
_r_union3(radius) {
children(0);
children(1);
};
children(2);
children(3);
children(4);
children(5);
children(6);
children(7);
children(8);
}
}
else if($children == 10) {
r_union3(radius) {
_r_union3(radius) {
children(0);
children(1);
};
children(2);
children(3);
children(4);
children(5);
children(6);
children(7);
children(8);
children(9);
}
}
}