c9f5d2c61d
+ ‘pi/libjuju.scad’ + ‘pi/pi0.scad’
106 lines
1.9 KiB
OpenSCAD
106 lines
1.9 KiB
OpenSCAD
include <libjuju.scad>
|
|
|
|
module unicorn() {
|
|
s = [65, 30, 2.7];
|
|
r = 3;
|
|
|
|
e = 0.1;
|
|
|
|
module plate() {
|
|
hull() {
|
|
translate([r, r, 0])
|
|
cylinder(s[2], r, r);
|
|
translate([s[0]-r, r, 0])
|
|
cylinder(s[2], r, r);
|
|
translate([s[0]-r, s[1]-r, 0])
|
|
cylinder(s[2], r, r);
|
|
translate([r, s[1]-r, 0])
|
|
cylinder(s[2], r, r);
|
|
}
|
|
}
|
|
|
|
module holes() {
|
|
$fn = 20;
|
|
m = 2.5;
|
|
r = 3.5;
|
|
translate([r, r, -e])
|
|
cylinder(s[2]+2*e, m/2, m/2);
|
|
translate([s[0]-r, r, -e])
|
|
cylinder(s[2]+2*e, m/2, m/2);
|
|
translate([s[0]-r, s[1]-r, -e])
|
|
cylinder(s[2]+2*e, m/2, m/2);
|
|
translate([r, s[1]-r, -e])
|
|
cylinder(s[2]+2*e, m/2, m/2);
|
|
}
|
|
|
|
difference() {
|
|
plate();
|
|
holes();
|
|
}
|
|
}
|
|
|
|
module plate(s, r) {
|
|
hull() {
|
|
translate([r, r, 0])
|
|
cylinder(s[2], r, r);
|
|
translate([s[0]-r, r, 0])
|
|
cylinder(s[2], r, r);
|
|
translate([s[0]-r, s[1]-r, 0])
|
|
cylinder(s[2], r, r);
|
|
translate([r, s[1]-r, 0])
|
|
cylinder(s[2], r, r);
|
|
}
|
|
}
|
|
|
|
e = 0.1;
|
|
w = 3;
|
|
r = 3;
|
|
spi = [65+1, 30+1, 20];
|
|
sbox = [65+w*2, 30+w*2, 10+w];
|
|
|
|
module bottom_box() {
|
|
difference() {
|
|
plate(sbox, r);
|
|
translate(
|
|
[
|
|
(sbox[0]-spi[0])/2,
|
|
(sbox[1]-spi[1])/2,
|
|
w])
|
|
plate(spi, r);
|
|
}
|
|
}
|
|
|
|
module bottom() {
|
|
union() {
|
|
bottom_box();
|
|
translate([0, -w, 0])
|
|
cube([sbox[0], w*2, sbox[2]]);
|
|
rotate([0, 90, 0])
|
|
cylinder(sbox[0], w ,w);
|
|
}
|
|
}
|
|
|
|
module pitext() {
|
|
translate([sbox[0]/2, sbox[1]/2, -e])
|
|
linear_extrude(w*2)
|
|
mirror()
|
|
text("picorn", font="Allerta Stencil", size=15, halign="center", valign="center");
|
|
}
|
|
|
|
module box() {
|
|
difference() {
|
|
bottom();
|
|
pitext();
|
|
}
|
|
}
|
|
|
|
$fn = 20;
|
|
|
|
difference() {
|
|
box();
|
|
|
|
rotate([-90+5, 0, 0])
|
|
translate([-100, -100, -200])
|
|
cube([200, 200, 200]);
|
|
}
|