CAD/pi/pi0.scad
Michael Hope c9f5d2c61d + ‘pi/’
+ ‘pi/libjuju.scad’
+ ‘pi/pi0.scad’
2017-09-17 21:43:13 +02:00

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]);
}