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:
parent
c6ca52aba8
commit
346cea1db8
@ -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);
|
||||
};
|
||||
|
152
src/experimental/r_union3.scad
Normal file
152
src/experimental/r_union3.scad
Normal 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);
|
||||
}
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user