Skip to content

Instantly share code, notes, and snippets.

@FeepingCreature
Created May 11, 2022 17:31
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save FeepingCreature/ea9140dce64e5bf0ed1554e4a3c1ff34 to your computer and use it in GitHub Desktop.
Save FeepingCreature/ea9140dce64e5bf0ed1554e4a3c1ff34 to your computer and use it in GitHub Desktop.
$fa=1;
$fs=1/8;
eps=0.01;
w=2.5;
h=50;
an=6;
sinkh=5;
inserth=8;
floorw=0.3;
module rounded_wedge() {
translate([0, 1.5, 0]) union() {
translate([0, -2.5, 0]) cube([w, 10, h], center=true);
translate([0, 2.5, 0]) cylinder(h=h, r1=floorw, r2=w/2, center=true);
}
}
module wing() {
difference() {
rotate([-an, 0, 0])
translate([0, -2, h/2]) rounded_wedge();
translate([0, -5-eps, h/2 + 2]) cube([10, 10, h + 4], center=true);
}
}
// wing();
module quartspike() {
translate([0, -eps, 0]) difference() {
wing();
union() {
rotate([0, atan2(w-floorw*2, h)/2, 0])
translate([5+floorw, 0, h/2]) cube([10, 20, h+2], center=true);
rotate([0, -atan2(w-floorw*2, h)/2, 0])
translate([-5-floorw, 0, h/2]) cube([10, 20, h+2], center=true);
}
}
}
// quartspike();
module spike_ext() {
union() {
quartspike();
rotate([0, 0, 90]) quartspike();
rotate([0, 0, 180]) quartspike();
rotate([0, 0, 270]) quartspike();
}
}
// spike_ext();
module capped_spike() {
union() {
translate([0, 0, h-1+1/4-eps])
cylinder(h=1/4, r1=8.7, r2=8.9, center=true);
difference() {
spike_ext();
translate([0, 0, 5+h-3/4]) cube([50, 50, 10], center=true);
}
}
}
// capped_spike();
module cut_spike() {
difference() {
capped_spike();
translate([0, 0, inserth]) spike_ext();
rotate([0, 0, 45]) translate([0, 0, h-sinkh])
union() {
for (x=[-1,0,1]) for (y=[-1,0,1])
translate([x*0.1, y*0.1, 0]) spike_ext();
}
}
}
cut_spike();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment