mirror of
https://github.com/nyanotech/openscad_models.git
synced 2025-12-16 11:30:25 -08:00
Add yubikey case
This commit is contained in:
parent
4981a1b462
commit
da8adb35a3
121
models/yubikey.scad
Normal file
121
models/yubikey.scad
Normal file
@ -0,0 +1,121 @@
|
||||
// A case for a yubikey.
|
||||
|
||||
// TODO - my first print of this broke at the badge-holder-hole, don't trust
|
||||
// this thing to not lose your yubikey.
|
||||
|
||||
width = 18.5;
|
||||
length = 33.8;
|
||||
thickness = 3.75;
|
||||
plug_thickness = (thickness - 0.5);
|
||||
head_width = 13;
|
||||
|
||||
button_height = 15;
|
||||
button_hole_diameter = 15;
|
||||
|
||||
key_margin = 0;
|
||||
key_hole_dia = 3.5;
|
||||
key_hole_width = 13;
|
||||
top_margin = 4;
|
||||
|
||||
top_fillet_radius = 3;
|
||||
bottom_fillet_radius = 1.5;
|
||||
part_thickness = 0.8;
|
||||
|
||||
|
||||
|
||||
center_y = ((width / 2) + part_thickness);
|
||||
|
||||
difference() {
|
||||
cube([
|
||||
width + 2 * part_thickness,
|
||||
thickness + 2 * part_thickness,
|
||||
length + part_thickness + key_margin + key_hole_dia + top_margin
|
||||
]);
|
||||
// main opening
|
||||
translate([part_thickness, part_thickness, part_thickness]) {
|
||||
cube([width, thickness, length + part_thickness + 20]);
|
||||
}
|
||||
// plug opening
|
||||
translate([center_y - (head_width / 2), part_thickness + (thickness - plug_thickness), 0]) {
|
||||
cube([head_width, plug_thickness, 10]);
|
||||
}
|
||||
// button hole
|
||||
translate([center_y, 0, part_thickness + button_height]) {
|
||||
rotate([-90, 0, 0]) {
|
||||
cylinder(h=part_thickness, d=button_hole_diameter, $fn=45);
|
||||
}
|
||||
}
|
||||
// keyring hole
|
||||
for(i = [-1, 1]) {
|
||||
translate([
|
||||
center_y + (i * (key_hole_width-key_hole_dia) / 2),
|
||||
0,
|
||||
length + part_thickness + key_hole_dia / 2 + key_margin
|
||||
]) {
|
||||
rotate([-90, 0, 0]) {
|
||||
cylinder(h=2 * part_thickness + thickness, d=key_hole_dia, $fn=45);
|
||||
}
|
||||
}
|
||||
}
|
||||
translate([((width-key_hole_width+key_hole_dia)/2+part_thickness), 0, length + part_thickness + key_margin]) {
|
||||
cube([key_hole_width - key_hole_dia, 2 * part_thickness + thickness, key_hole_dia]);
|
||||
}
|
||||
// top fillet left
|
||||
translate([0, 0, length + part_thickness + key_margin + key_hole_dia + top_margin - top_fillet_radius]) {
|
||||
difference() {
|
||||
cube([top_fillet_radius, (2 * part_thickness) + thickness, top_fillet_radius]);
|
||||
translate([top_fillet_radius, 0, 0]) {
|
||||
rotate([-90, 0, 0]) {
|
||||
cylinder(r=top_fillet_radius, h=(2 * part_thickness) + thickness, $fn=45);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// top fillet right
|
||||
translate([
|
||||
(2 * part_thickness) + width - top_fillet_radius,
|
||||
0,
|
||||
length + part_thickness + key_margin + key_hole_dia + top_margin - top_fillet_radius
|
||||
]) {
|
||||
difference() {
|
||||
cube([top_fillet_radius, (2 * part_thickness) + thickness, top_fillet_radius]);
|
||||
rotate([-90, 0, 0]) {
|
||||
cylinder(r=top_fillet_radius, h=(2 * part_thickness) + thickness, $fn=45);
|
||||
}
|
||||
}
|
||||
}
|
||||
// top fillet slot
|
||||
translate([
|
||||
0,
|
||||
part_thickness,
|
||||
length + part_thickness + key_margin + key_hole_dia + top_margin - top_fillet_radius
|
||||
]) {
|
||||
cube([
|
||||
width + 2*part_thickness,
|
||||
thickness,
|
||||
top_fillet_radius
|
||||
]);
|
||||
}
|
||||
// bottom fillet left
|
||||
translate([0, 0, 0]) {
|
||||
difference() {
|
||||
cube([bottom_fillet_radius, (2 * part_thickness) + thickness, bottom_fillet_radius]);
|
||||
translate([bottom_fillet_radius, 0, bottom_fillet_radius]) {
|
||||
rotate([-90, 0, 0]) {
|
||||
cylinder(r=bottom_fillet_radius, h=(2 * part_thickness) + thickness, $fn=45);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// bottom fillet right
|
||||
translate([(2 * part_thickness) + width - bottom_fillet_radius, 0, 0]) {
|
||||
difference() {
|
||||
cube([bottom_fillet_radius, (2 * part_thickness) + thickness, bottom_fillet_radius]);
|
||||
translate([0, 0, bottom_fillet_radius]) {
|
||||
rotate([-90, 0, 0]) {
|
||||
cylinder(r=bottom_fillet_radius, h=(2 * part_thickness) + thickness, $fn=45);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user