111 lines
1.7 KiB
OpenSCAD
111 lines
1.7 KiB
OpenSCAD
module wing() {
|
|
polyhedron(
|
|
points = [
|
|
[-1, -1, 0],
|
|
[-1, 1, 0],
|
|
[-1, 0, 6],
|
|
[31, 0, 0],
|
|
],
|
|
faces = [
|
|
[1, 0, 3], // bottom
|
|
[0, 2, 3], // left
|
|
[0, 1, 2], // back
|
|
[3, 2, 1], // right
|
|
]
|
|
);
|
|
};
|
|
|
|
// screw bump 13mm long, 7mm high, round top and sides (triangle like rather than cylindrical)
|
|
module bump() {
|
|
linear_extrude(height=7) {
|
|
hull() {
|
|
translate([0,-5,0]) {
|
|
circle(4, $fn=100);
|
|
};
|
|
translate([13/2, -9, 0]) {
|
|
circle(.1, $fn=50);
|
|
};
|
|
translate([-13/2, -9, 0]) {
|
|
circle(.1, $fn=50);
|
|
};
|
|
};
|
|
};
|
|
};
|
|
|
|
module thing() {
|
|
union() {
|
|
// 13mm x40mm long cylinder
|
|
translate([0, 0, 15]) {
|
|
cylinder(40, 13/2, 13/2, $fn=360);
|
|
};
|
|
|
|
// cone, 17mm top, 21mm base, 15mm tall
|
|
translate([0, 0, 0]) {
|
|
cylinder(15, 21/2, 17/2, $fn=360);
|
|
};
|
|
|
|
// 2x long wings, 31mm x 2mm starting at 6mm tall and ending at 0 at 90 degree offset from key
|
|
|
|
translate([21/2, 0, 0]) {
|
|
wing();
|
|
};
|
|
mirror([1, 0, 0]) {
|
|
translate([21/2, 0, 0]) {
|
|
wing();
|
|
};
|
|
};
|
|
|
|
// key top is 15mm tall 10mm protrusion for edge of cone top angling down to 0mm at an offset of 16mm from cone bottom, 4mm wide
|
|
translate([-2, 8, 0]) {
|
|
cube([4, 11, 15], center=false);
|
|
};
|
|
|
|
|
|
translate([0, 19, 0]) {
|
|
polyhedron(points=[
|
|
[-2, 0, 0],
|
|
[2, 0, 0],
|
|
[-2, 0, 15],
|
|
[2, 0, 15],
|
|
[-2, 6, 0],
|
|
[2, 6, 0],
|
|
],
|
|
faces = [
|
|
[0, 1, 5, 4 ], // bottom
|
|
[2, 4, 5, 3], // top
|
|
[0, 4, 2], // left
|
|
[0, 2, 3, 1], // back
|
|
[5, 1, 3], // right
|
|
]);
|
|
};
|
|
|
|
|
|
|
|
translate([0, -8, 9.1]) {
|
|
rotate(90, v=[1, 0, 0]) {
|
|
bump();
|
|
};
|
|
};
|
|
// screw protrudes by about 2mm from back
|
|
|
|
// bend top is about 34mm high
|
|
|
|
};
|
|
};
|
|
|
|
%thing();
|
|
|
|
|
|
difference() {
|
|
translate([0, 5, 25/2+0.01]) {
|
|
cube([92, 59, 25], center=true);
|
|
};
|
|
thing();
|
|
};
|
|
|
|
translate([0, 10, 0]) {
|
|
difference() {
|
|
cube([112, 79, 10], center=true);
|
|
cube([92, 59, 10], center=true);
|
|
};
|
|
}; |