Initial design

This commit is contained in:
2024-11-03 01:32:17 -08:00
commit 8ee6ead266
2 changed files with 149 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
*.stl

148
marker-holder.scad Normal file
View File

@@ -0,0 +1,148 @@
$fn = $preview ? 32 : 64;
eraser_width = 125.6;
eraser_height = 51;
eraser_depth = 24;
frame_margin = 10;
frame_thickness = 2;
nub_diameter = 2;
screw_holes = true;
screw_hole_diameter = 5;
holder_offset = 60;
pen_diameter = 17.7;
pen_count = 6;
module clasp(diameter) {
difference() {
cube([
diameter + frame_thickness * 2,
frame_margin,
diameter * 0.74 + frame_thickness * 2 + nub_diameter / 2
]);
translate([
frame_thickness,
-1,
frame_thickness + diameter / 2
]) cube([
diameter,
frame_margin * 4 + 2,
diameter
]);
translate([
diameter / 2 + frame_thickness,
-1,
diameter / 2 + frame_thickness
]) rotate([-90, 0, 0]) cylinder(
h=frame_margin + 2,
r=diameter / 2
);
}
translate([
frame_thickness,
frame_margin / 2,
frame_thickness + diameter * 0.74
]) sphere(nub_diameter / 2);
translate([
frame_thickness + diameter,
frame_margin / 2,
frame_thickness + diameter * 0.74
]) sphere(nub_diameter / 2);
}
// Eraser shelf
difference() {
cube([
eraser_width + frame_thickness * 2,
eraser_height + frame_thickness * 2,
eraser_depth + frame_thickness * 2
]);
translate([
frame_thickness,
frame_thickness,
frame_thickness
]) cube([
eraser_width,
eraser_height + frame_thickness + 1,
eraser_depth + frame_thickness + 1
]);
if (screw_holes) {
translate([
frame_thickness + frame_margin,
eraser_height + frame_thickness * 2 - frame_margin,
-1
]) cylinder(
h=frame_thickness + 2,
r=screw_hole_diameter / 2
);
translate([
eraser_width + frame_thickness - frame_margin,
eraser_height + frame_thickness * 2 - frame_margin,
-1
]) cylinder(
h=frame_thickness + 2,
r=screw_hole_diameter / 2
);
}
}
// Pen holder frame
difference() {
translate([
0,
-holder_offset,
0
]) cube([
eraser_width + frame_thickness * 2,
holder_offset,
frame_thickness
]);
translate([
frame_margin,
-holder_offset + frame_margin,
-1
]) cube([
eraser_width + frame_thickness * 2 - frame_margin * 2,
holder_offset - frame_margin,
frame_thickness + 2
]);
}
// Lower screw bar
difference() {
union() {
translate([
0,
-holder_offset * 0.618 + frame_margin * 0.375,
0,
]) cube([
eraser_width,
frame_margin / 2,
frame_thickness
]);
translate([
eraser_width / 2 + frame_thickness,
-holder_offset * 0.618 + frame_margin * 0.625,
0,
]) cylinder(
h=frame_thickness,
r=frame_margin / 2
);
}
translate([
eraser_width / 2 + frame_thickness,
-holder_offset * 0.618 + frame_margin * 0.625,
-1,
]) cylinder(
h=frame_thickness + 2,
r=screw_hole_diameter / 2
);
}
// Pen holder clasps
translate([
(eraser_width - pen_count * (pen_diameter + frame_thickness) + frame_thickness) / 2,
-holder_offset,
0
]) for(i = [0:pen_count - 1]) {
translate([(pen_diameter + frame_thickness) * i, 0]) clasp(pen_diameter);
}